無需任何修改轉換,AMD 顯示卡也跑起原版 CUDA 程式了!
英國一家新創公司,推出了針對 AMD 的 CUDA 程式編譯工具,而且免費商用。
工具一發布就引發了網友們的廣泛熱議,並登頂了 HackerNews 熱門名單。
該工具名為 SCALE,開發者給它的定位是一個 GPGPU(通用 GPU)程式設計工具包。
目前已有大模型框架 llama-cpp 等 9 個程式通過測試,實現了正常運作。
與其他實作方式不同,SCALE 直接模擬 CUDA 工具包的安裝,不需要轉換成其他語言就能源到源地完成編譯。
因此,像內聯 PTX 這種英偉達專用的中間語言,SCALE 同樣能夠提供支援。
官網介紹顯示,SCALE 主要有三個組成部分 —— 相容的 nvcc 編譯器、CUDA 運行時和驅動 API 的 AMD 實現,以及 ROCm 庫。
其中編譯器可以把用包括 nvcc、內聯 PTX 等在內的 CUDA 專屬語言編寫的程序,直接編譯成可在 AMD GPU 上運行的二進位代碼。
ROCm 函式庫則用來提供「CUDA-X」API,SCALE 在處理 cuBLAS 和 cuSOLVER 等函式庫時都採用這種方式。
SCALE 的關鍵創新點在於按原樣接受CUDA 程序,而不必將它們移植到另一種語言,兼容nvcc 和clang 等多種編譯方式,同時現有的構建工具和腳本(如cmake)可以正常工作。
依照官方的說法,SCALE 實現了對 CUDA 的完全相容,讓開發者無需針對不同 GPU 平台分別編寫程式碼。
這一點與 AMD 推出的 HIP 存在很大不同,因為 HIP 是透過一定方式對 CUDA 程式碼進行重寫,遇到複雜的巨集可能無法正確理解,也不支援內聯 PTX 等專屬語言。
甚至 SCALE 作者認為,HIP 並不能解決 CUDA 相容性問題。
另外,SCALE 的語言是 CUDA 的超集,提供一些可選的語言擴展,可以使希望擺脫 nvcc 的開發者更輕鬆、更有效率地編寫 GPU 程式碼。
作者表示,希望未來開發者可以只編寫一次程式碼,就能在不同硬體平台上運行,並正在著手透過彌合流行的 CUDA 程式語言和其他硬體供應商之間的兼容性差距。
目前,SCALE 對AMD 各系列GPU 的支援情況如下:
已支援:gfx1030(RX6000 系列)和x1100(RX7000 系列)
「似乎有效」(Hseem to
正在適應:gfx900(RX Vega 系列)
另外,作者測試了一些CUDA 開源項目,並利用SCALE 成功運行了9 款CUDA 應用。
不過,SCALE 畢竟是個全新的項目,所以作者也準備了從安裝到編譯的一系列教程,給出了不同類型的範例程式。
教學關鍵步驟都附有相關程式碼,甚至包含如何判斷自己 GPU 的型號,可以說是非常細緻了。
如果使用過程中遇到問題,作者也介紹了常見故障的排除方式,同時也開通了 Discord 論壇,可與開發團隊直接溝通交流。
打造出 SCALE 的這家新創公司名為 Spectral Compute,2018 年成立於英國,自稱對 CPU 和 GPU 的架構有深入的了解,目標是幫助開發者高效利用算力資源。
有網友認為,如果 SCALE 真能有(宣傳中的)效果,那麼將對英偉達護城河發起挑戰,讓 AMD 與之展開直接競爭。
However, it is too early to draw a conclusion now. After all, SCALE officially admits that there are still some flaws compared with the original CUDA.
And the developer also made it clear that some CUDA APIs and functions are not supported, but did not give a specific list.
Regarding more shortcomings of the "AMD solution", a netizen who claimed to have communicated with the SCALE team said that the current SCALE cannot operate TensorCore, which means that the FlashAttention acceleration framework cannot be run on AMD.
In addition, since the N card has a powerful matrix multiplication unit, even if it can be compiled and run, the performance on the AMD card may not be as good as the N card.
Some netizens believe that the reason why NVIDIA is dominant is that AMD is unwilling to invest in making its GPU have higher machine learning performance (instead of just having the advantage of CUDA).
Even if they can run efficiently, it is also a question whether AMD cards are really affordable and accessible.
There is also a wave of netizens who believe that the biggest problem is not whether it can run technically, but the legal issues behind it.
This issue has also triggered extensive discussions, but there is no conclusion yet.
Some people think that SCALE has legal doubts like ZLUDA (another way to run CUDA programs on AMD) and may lead to lawsuits from NVIDIA.
Specifically, according to NVIDIA's EULA terms, the CUDA SDK only allows the development of applications that run on N-cards, which may prohibit compatible implementations like SCALE.
But immediately some netizens said that SCALE did not use NVIDIA's "SDK", so how to talk about the SDK usage agreement?
In short, whether it is technical deficiencies or legal issues, discussions about this new tool are still ongoing.
As for whether it is useful or not, it is up to the developers to vote with their feet.
Reference link:
[1]https://docs.scale-lang.com/
[2]https://news.ycombinator.com/item?id=40970560
This article comes from the WeChat public account: Qubit (ID: QbitAI), author: Cressy
以上是新創公司硬剛英偉達:在 AMD 卡上模擬 CUDA,原版程式直接編譯運行的詳細內容。更多資訊請關注PHP中文網其他相關文章!