初創公司硬剛英偉達:在AMD卡上模擬CUDA,原版程序直接編譯運行
無需任何修改轉換,AMD顯卡也跑起原版CUDA程序了!
英國一家初創公司,推出了針對AMD的CUDA程序編譯工具,而且免費商用。
工具一經發布就引發了網友們的廣泛熱議,并登頂了HackerNews熱榜。
該工具名為SCALE,開發者給它的定位是一個GPGPU(通用GPU)編程工具包。
目前已有大模型框架llama-cpp等9個程序通過測試,實現了正常運行。
與其他實現方式不同,SCALE直接模擬CUDA工具包的安裝,不需要轉換成其他語言就能源到源地完成編譯。
因此,像內聯PTX這種英偉達專用的中間語言,SCALE同樣能夠提供支持。
無需轉換,讓AMD跑起CUDA
官網介紹顯示,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系列)和gfx1100(RX7000系列)
- “似乎有效”(seem to work):gfx1010(RX5000系列)和gfx1101
- 正在適配:gfx900(RX Vega系列)
另外,作者測試了一些CUDA開源項目,并利用SCALE成功運行了9款CUDA應用。
不過,SCALE畢竟是個全新的項目,所以作者也準備了從安裝到編譯的一系列教程,給出了不同類型的示例程序。
教程關鍵步驟都附有相關代碼,甚至包括了如何判斷自己GPU的型號,可以說是非常細致了。
如果使用過程中遇到問題,作者也介紹了常見故障的排除方式,同時還開通了Discord論壇,可與開發團隊直接溝通交流。
打造出SCALE的這家初創公司名為Spectral Compute,2018年成立于英國,自稱對CPU和GPU的架構有深入的了解,目標是幫助開發者高效利用算力資源。
網友:挑戰英偉達護城河?
有網友認為,如果SCALE真能有(宣傳中的)效果,那么將對英偉達護城河發起挑戰,讓AMD與之展開直接競爭。
不過,現在下定論未免為時過早,畢竟SCALE官方也承認目前和原版CUDA相比還存在一些缺陷。
而且開發者也明確表示有一些CUDA API和功能并不被支持,但也沒有給出具體的列表。
關于“AMD方案”的更多不足,一名自稱和SCALE團隊交流過的網友表示,目前的SCALE還無法操作TensorCore,也就意味著AMD上跑不了FlashAttention加速框架。
另外由于N卡上有強大的矩陣乘法單元,所以即使能編譯運行,AMD卡上的性能可能也不及N卡。
更有網友認為,英偉達一家獨大的原因是AMD不愿意投資讓其GPU擁有更高的機器學習性能(而不只是擁有CUDA這一個優勢)。
即便能夠高效運行,AMD卡是否真的經濟實惠且容易獲得,同樣是一個問題。
還有一波網友的觀點是,最大的問題不是技術上能不能運行,而是背后的法律問題。
這個問題同樣引發了廣泛的討論,不過目前也暫未有定論。
有人認為SCALE像ZLUDA(另一種在AMD上運行CUDA程序的方式)一樣存在法律疑點,有可能招致英偉達的訴訟。
具體來說,根據英偉達的EULA條款,CUDA SDK只允許開發在N卡上運行的應用程序,這可能禁止了類似SCALE這樣的兼容實現。
但立馬就又有網友說,SCALE并沒有用到英偉達的“SDK”,何談SDK使用協議呢?
總之,無論是技術不足還是法律問題,對于這個新工具的討論都還在持續進行。
至于到底好不好用,這就要由開發者用腳投票了。