事關CUDA相容,輝達禁止了?

其實自2021 年以來,Nvidia 就已經在其線上列出的授權條款中禁止使用翻譯層(translation layers)在其他硬體平台上運行基於CUDA 的軟體,但先前的警告並未包含在安裝過程中放置在主機系統上的文件。

但據報導,最近,這個描述已添加到安裝CUDA 11.6 及更高版本時包含的EULA 中。該限制似乎旨在阻止英特爾和AMD 最近參與的ZLUDA等計劃,或許更關鍵的是,一些中國GPU 製造商利用帶有翻譯層的CUDA 代碼。

軟體工程師Longhorn注意到了這些術語。安裝的EULA 文字檔案中的一個條款寫道:「您不得對使用SDK 元素產生的輸出的任何部分進行逆向工程、反編譯或反彙編,以將此類輸出工件轉換為目標非NVIDIA 平台。」( You may not reverse engineer, decompile or disassemble any portion of the output generated using SDK elements for the purpose of translating such output artifacts to target a non-NVIDIA platform.,")




與CUDA 11.4 和11.5 版本一起安裝的EULA 文件中不存在該條款,並且可能包含該版本先前的所有版本。但是,它存在於11.6 及更高版本的安裝文件中。

作為一個領導者,這有好的一面,也有壞的一面。一方面,每個人都依賴你;另一方面,每個人都想站在你的肩膀上。後者顯然是CUDA 所發生的情況。由於CUDA 和Nvidia 硬體的組合已被證明非常高效,因此大量程式都依賴它。

然而,隨著更多有競爭力的硬體進入市場,更多的用戶傾向於在競爭平台上運行他們的CUDA 程式。有兩種方法可以做到這一點:重新編譯程式碼(可供各個程式的開發人員使用)或使用翻譯層。

出於顯而易見的原因,使用ZLUDA 這樣的轉換層是在非Nvidia 硬體上執行CUDA 程式的最簡單方法。我們要做的就是取得已編譯的二進位檔案並使用ZLUDA 或其他轉換層來執行它們。

但ZLUDA 現在似乎陷入困境,AMD 和英特爾都放棄了進一步開發它的機會,但這並不意味著翻譯不可行。

出於顯而易見的原因,使用轉換層威脅了Nvidia 在加速運算領域的霸權,特別是在人工智慧應用方面。這可能是Nvidia 決定禁止使用翻譯層在其他硬體平台上執行CUDA 應用程式的動力。

重新編譯現有的CUDA 程式仍然完全合法。為了簡化這一點,AMD 和Intel 都有工具將CUDA 程式分別移植到他們的ROCm和OpenAPI平台。

隨著AMD、英特爾、Tenstorrent 和其他公司開發出更好的硬件,更多的軟體開發人員將傾向於為這些平台進行設計,而Nvidia 的CUDA 主導地位可能會隨著時間的推移而減弱。

此外,專門為特定處理器開發和編譯的程式將不可避免地比透過翻譯層運行的軟體運行得更好,這意味著AMD、英特爾、Tenstorrent 和其他公司能夠在與Nvidia 的競爭中獲得更好的競爭地位-如果他們能夠吸引軟體開發人員加入的話。

GPGPU仍然是一個重要且競爭激烈的競技場,我們將密切關注未來事態的進展。


ZLUDA,一個有野心的項目

早在2020年,一個名為ZLUDA的項目被描述為“英特爾GPU 上CUDA 的直接替代品”,它正在威脅Nvidia 專有的CUDA(統一計算設備架構)生態系統。

該獨立專案(並非由AMD或Intel推動)當時已經提供了在非Nvidia 顯示卡上執行未更改的CUDA 應用程式的概念證明。

ZLUDA 的基礎正是英特爾的oneAPI Level Zero規格。這是一個私人項目,與英特爾或英偉達沒有任何關係。在剛發起的時候,ZLUDA 仍處於早期階段,缺乏完整的CUDA 支援。因此,許多CUDA 應用程式無法與ZLUDA 一起使用。

但ZLUDA 的創建者當時聲稱,它提供了「接近原生」的效能,暗示幾乎沒有效能損失。他提供了Intel Core i7-8700K的GeekBench 5.2.3 結果,該處理器配備Intel 的UHD Graphics 630 iGPU,並運行OpenCL 和ZLUDA。對於後者,作者欺騙GeekBench 認為Intel iGPU 是速度較慢的Nvidia GPU。然而,結果來自相同的iGPU。


結果表明,與OpenCL 性能相比,ZLUDA 的性能提高了10%。整體而言,我們預計將較基準組提高4%左右。

作者明確表示,ZLUDA 與AMD HIP 或Intel DPC++ 完全不同,因為後兩者是程式設計師將應用程式移植到所選特定API 的工具。另一方面,ZLUDA 不需要任何額外的工作,因為CUDA 應用程式只需在Intel GPU 上運行。當然,只要支援CUDA 子集即可。

經過幾年的發展,該專案同樣支援了AMD的GPU。據了解,今天的ZLUDA 與2020 年的版本有很大不同。它不是基於英特爾的oneAPI 構建並包括對該公司GPU 的支持,而是基於AMD 的競爭ROCm 解決方案,並且僅支援Radeon GPU。目前還不完全清楚為什麼英特爾的支援被取消,但這可能與ZLUDA 2020 版本僅支援Xe 之前的整合顯示卡有關。當Arc Alchemist GPU 在2022 年問世時,專案開發者Janik 已與AMD 合作。開發人員還表示,ZLUDA“僅可能收到運行我個人感興趣的工作負載(DLSS) 的更新”,這意味著該專案或多或少已經完成。Janik 的最終目標似乎是獲得英特爾或AMD 的支持。

但進入今年二月中,有消息指出,該專案似乎不會進行進一步的工作,至少不會進行重大更新,ZLUDA 開發人員Andrzej Janik(代號vosen)表示,隨著這兩家公司(Intel和AMD)退出,他表示「我們已經沒有GPU 公司了」。

「實際上,該項目現在已經被放棄了。」Janik說。

由此可見,英特爾和AMD 對讓其GPU 與現有CUDA 生態系統相容不感興趣,這一點很能說明問題。看起來他們更願意與帶有oneAPI 和ROCm 的CUDA 正面交鋒,它們更新且開發程度較低,但擁有開源的好處。

迄今為止,CUDA 仍然是專業和資料中心圖形軟體中更流行的解決方案,目前尚不清楚這種情況是否會很快改變,特別是如果Nvidia 的GPU 在功能和效能方面繼續領先英特爾和AMD 的話。


打破CUDA霸權?

關於CUDA霸權這個論調,已經不是什麼新鮮事了。

例如英特爾執行長 Pat Gelsinger在去年年底於紐約舉行的活動中首先對Nvidia 的CUDA 技術大加讚賞,並聲稱推理技術將比人工智慧訓練更重要。但在接受提問時,基辛格表示Nvidia 在訓練方面的CUDA 主導地位不會永遠持續下去。

他同時說道,「你知道,整個行業都在積極消除CUDA 市場,」基辛格說。他列舉了MLIR、 Google和OpenAI等例子,暗示他們正在轉向“Pythonic 程式設計層”,以使AI 訓練更加開放。

英特爾CTO Greg Lavender在2023年9月的一個演講中更是毫不掩飾地打趣道:「我將向所有開發人員提出一個挑戰。讓我們使用大模型和Copilot 等技術來訓練機器學習模型,將所有CUDA 程式碼轉換為SYCL。」(原文:I'll just throw out a challenge to all the developers. Let's use LLMs and technologies like Copilot to train a machine learning model to convert all your CUDA code to SYCL)。

其中的SYCL 就是英特爾為打破CUDA 對AI 軟體生態系統束縛所做得的最新舉措。根據介紹,SYCL(或更具體地說SYCLomatic)是一個免版稅的跨架構抽象層,為英特爾的平行C++ 程式語言提供支援。簡而言之,在將CUDA 程式碼移植為可在非Nvidia 加速器上運行的過程中,SYCL 處理大部分繁重工作(據稱高達95%)。但正如您所期望的那樣,通常需要進行一些微調和調整才能使應用程式全速運行。

當然,SYCL 絕不是編寫與加速器無關的程式碼的唯一方法。如Curley 所說,OpenAI 的Triton 或Google 的Jax 等框架就是其中兩個例子。

AMD CEO Lisa Su受訪談到英偉達CUDA是表示,不相信護城河。她直言,像PyTorch 這樣的東西往往具有與硬體無關的功能。她同時指出,這意味著現在在PyTorch 上運行CUDA 的任何人都可以在AMD 上運行,因為我們已經在那裡完成了工作。坦白說,它也可以在其他硬體上運行。

在去年的Advancing AI 大會上,AMD總裁Victor Peng就介紹了平行運算框架的最新版本ROCm 6,該框架專門針對AMD Instinct 的綜合軟體堆疊進行了優化,特別適合生成AI 中的大型語言模型。

專注於微調大型語言模型的新創公司Lamini 則透露,它已經「秘密地在100 多個AMD Instinct MI200 系列GPU 上運行,並表示該晶片設計商的ROCm 軟體平台「已經實現了與Nvidia 針對此類模型主導的CUDA 平台的軟體對等(software parity)。

曾從事x86、Arm、MISC 和RISC-V 處理器研究的傳奇處理器架構師Jim Keller早前也批評了Nvidia 的CUDA架構和軟體堆疊,並將其比作x86,他稱之為沼澤。他指出,就連英偉達本身也有多個專用軟體包,出於性能原因,這些軟體包依賴開源框架。

keller在後續貼文中寫道。“如果你確實編寫CUDA,它可能不會很快。[...] Triton、Tensor RT、Neon 和Mojo 的存在是有充分理由的。”

即使在Nvidia 本身,也有不完全依賴CUDA 的工具。例如,Triton Inference Server 是Nvidia 的開源工具,可簡化AI 模型的大規模部署,支援TensorFlow、PyTorch 和ONNX 等框架。Triton 也提供模型版本控制、多模型服務和並發模型執行等功能,以優化GPU 和CPU 資源的使用率。

Semianalysis作者Dylan Patel先前在一篇文章中也強調,隨著PyTorch 2.0 和OpenAI Triton 的到來,英偉達在這一領域的主導地位正在被打破。具體可參考文章《CUDA正在被趕下神壇》

身為讀者,你是如何看待英偉達這個決定和CUDA的未來啊?(半導體產業觀察)

參考連結

https://www.tomshardware.com/pc-components/gpus/nvidia-bans-using-translation-layers-for-cuda-software-to-run-on-other-chips-new-restriction-apparently-targets- zluda-and-some-chinese-gpu-makers


最近長文
關於鉅亨號
「鉅亨號」是《Anue鉅亨網》以AI 大數據和推薦引擎所推出具影響力的自媒體社群平台,從投資理財為主題擴展到金融財經、房地產、汽車、數位虛擬貨幣、影音視頻及Podcast的數位生活圈。讀者可透過一面牆及個人化功能關注一天的大小事;對創作者而言更是一個直接能與1,000萬用戶互動的舞台。
最好用的投資平台,幫你找到最適合自己的標的
看真實的投資分享文章,跟隨達人腳步取得最佳利益
多元投資社群平台,掌握最新市場動態熱門議題