事實上,自 2021 年以來,NVIDIA 在其許可條款中已禁止使用轉換層在其他硬體平台上執行基於 CUDA 的軟體,但之前的警告不包括安裝過程中放置在主機系統上的文件。
但最近,據報道,此描述已被新增到 CUDA 11 的安裝中EULA 中包含 6 及更高版本。 這一限制似乎旨在阻止英特爾和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 114 和 11此條款不存在於隨版本 5 一起安裝的 EULA 文件中,並且可能包含該版本之前的所有版本。 但是,它存在於 11 中6 及更高版本的安裝文件。
作為領導者,這有好的一面,也有壞的一面。 一方面,每個人都依賴你; 另一方面,每個人都想站在你的肩膀上。 後者顯然是CUDA發生的事情。 由於CUDA和NVIDIA硬體的組合已被證明非常有效,因此大量程式都依賴它。
然而,隨著更具競爭力的硬體進入市場,越來越多的使用者傾向於在競爭平台上執行他們的 CUDA 程式。 有兩種方法可以做到這一點:重新編譯(可供單個程式的開發人員使用)或使用轉換層。
出於顯而易見的原因,使用像 Zluda 這樣的轉換層是在非 NVIDIA 硬體上執行 CUDA 程式的最簡單方法。 我們所要做的就是獲取編譯好的二進位檔案,並使用 zluda 或其他轉換層執行它們。
但Zluda現在似乎陷入了困境,AMD和英特爾都放棄了進一步開發它的機會,但這並不意味著翻譯不可行。
出於顯而易見的原因,轉換層的使用威脅到NVIDIA在加速計算領域的霸權,尤其是在AI應用方面。 這可能是 NVIDIA 決定禁止使用翻譯層在其他硬體平台上執行 CUDA 應用程式的驅動力。
重新編譯現有的 CUDA 程式仍然是完全合法的。 為了簡化這一點,AMD 和 Intel 都有工具可以分別將 CUDA 程式移植到他們的 ROCM 和 OpenAPI 平台。
隨著 AMD、英特爾、Tenstorrent 和其他公司開發更好的硬體,越來越多的軟體開發人員將傾向於為這些平台進行設計,而 NVIDIA 的 CUDA 主導地位可能會隨著時間的推移而減弱。
此外,專門為特定處理器開發和編譯的程式將不可避免地比通過翻譯層執行的軟體執行得更好,這意味著 AMD、英特爾、Tenstorrent 和其他公司將能夠獲得更好的競爭地位——如果它們能夠吸引軟體開發人員加入。
GPGPU仍然是乙個重要且競爭激烈的領域,我們將密切關注未來的發展。
Zluda,乙個雄心勃勃的專案
早在 2020 年,乙個名為 Zluda 的專案就被描述為“英特爾 GPU 上 CUDA 的直接替代品”,它威脅到 NVIDIA 專有的 CUDA(統一計算裝置架構)生態系統。
這個獨立的專案(不是由AMD或英特爾驅動的)已經為當時在非NVIDIA顯示卡上執行未更改的CUDA應用程式提供了概念證明。
Zluda 的基礎正是英特爾的 OneAPI 零級規範。 這是乙個私人專案,與英特爾或英偉達無關。 當它首次推出時,Zluda 仍處於早期階段,缺乏完整的 CUDA 支援。 因此,許多 CUDA 應用程式不適用於 Zluda。
但 Zluda 的建立者當時聲稱它提供了“接近原生”的效能,這意味著幾乎沒有效能損失。 他提供帶有 Geekbench 5 的英特爾酷睿 i7-8700K2.3 因此,該處理器配備了英特爾的 UHD Graphics 630 IGPU,並執行 OpenCL 和 Zluda。 對於後者,作者欺騙 Geekbench 相信英特爾 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的支援。
但進入 2 月中旬,據報道,該專案似乎不會做任何進一步的工作,至少沒有重大更新,Zluda 開發人員 Andrzej Janik(代號為 Vosen)表示,隨著兩家公司(英特爾和 AMD)的退出,“我們不再有 GPU 公司了”。
事實上,該專案現在已被放棄。 賈尼克說。
這說明英特爾和AMD對使他們的GPU與現有的CUDA生態系統相容不感興趣。 看起來他們更願意用 OneAPI 和 ROCM 與 CUDA 正面交鋒,它們較新且開發程度較低,但具有開源的好處。
迄今為止,CUDA仍然是專業和資料中心圖形軟體中更受歡迎的解決方案,目前尚不清楚這種情況是否會很快改變,特別是如果NVIDIA的GPU在功能和效能方面繼續領先於英特爾和AMD。
打破CUDA霸權?
關於CUDA霸權的爭論並不是什麼新鮮事。
例如,英特爾首席執行官帕特·基辛格(Pat Gelsinger)去年年底在紐約的一次活動中首次讚揚了英偉達的CUDA技術,聲稱推理技術將比人工智慧訓練更重要。 但當被問及時,基辛格表示,英偉達在訓練中的CUDA主導地位不會永遠持續下去。
與此同時,他說,“你知道,整個行業都在積極地消除CUDA市場,”基辛格說。 他引用了MLIR、Google和OpenAI等例子,表明他們正在轉向“Pythonic程式設計層”,以使AI訓練更加開放。
英特爾首席技術官 Greg L**Ender 在 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首席執行官蘇姿丰在接受採訪時表示,英偉達CUDA不相信護城河。 她直言不諱地承認,像 pytorch 這樣的東西往往具有與硬體無關的功能。 她還指出,這意味著現在任何在 PyTorch 上執行 CUDA 的人都可以在 AMD 上執行它,因為我們已經完成了那裡的工作。 坦率地說,它也可以在其他硬體上執行。
在去年的 Advancing AI 大會上,AMD 總裁 Victor Peng 介紹了 ROCM 6,這是平行計算框架的最新版本,該框架針對 AMD Instinct 的綜合軟體堆疊進行了優化,特別適合在 AI 中生成大型語言模型。
Lamini是一家專注於微調大型語言模型的初創公司,該公司透露,它已經“秘密執行在100多個AMD Instinct MI200系列GPU上”,並表示晶元設計商的ROCM軟體平台“已經實現了與NVIDIA佔主導地位的CUDA平台的軟體對等。
吉姆·凱勒(Jim Keller)是一位傳奇的處理器架構師,曾從事X86、ARM、MISC和RISC-V處理器的工作,他早些時候也批評了NVIDIA的CUDA架構和軟體堆疊,並將其比作X86,他稱之為沼澤。 他指出,即使是英偉達本身也有多個專門的軟體包,出於效能原因,這些軟體包依賴於開源框架。
凱勒在後續帖子中寫道。 “如果你真的寫了CUDA,它可能不會很快。 [.Triton、Tensor RT、Neon 和 Mojo 的存在是有充分理由的。 ”
即使在 NVIDIA 本身,也有一些工具並不完全依賴 CUDA。 例如,Triton Inference Server 是 NVIDIA 的開源工具,可簡化 AI 模型的大規模部署,並支援 TensorFlow、PyTorch 和 Onnx 等框架。 Triton 還提供模型版本控制、多模型服務和併發模型執行等功能,以優化 GPU 和 CPU 資源的利用率。
SemiAnalysis 的作者 Dylan Patel 在之前的一篇文章中也強調,使用 PyTorch 20 和 OpenAI Triton 的到來,英偉達在這一領域的主導地位正在被打破。 詳情請參考文章“CUDA被趕出神壇”。
作為讀者,您如何看待 NVIDIA 的決定和 CUDA 的未來?