無(wú)需任何修改轉(zhuǎn)換,AMD 顯卡也跑起原版 CUDA 程序了!
英國(guó)一家初創(chuàng)公司,推出了針對(duì) AMD 的 CUDA 程序編譯工具,而且免費(fèi)商用。
工具一經(jīng)發(fā)布就引發(fā)了網(wǎng)友們的廣泛熱議,并登頂了 HackerNews 熱榜。
該工具名為 SCALE,開(kāi)發(fā)者給它的定位是一個(gè) GPGPU(通用 GPU)編程工具包。
目前已有大模型框架 llama-cpp 等 9 個(gè)程序通過(guò)測(cè)試,實(shí)現(xiàn)了正常運(yùn)行。
與其他實(shí)現(xiàn)方式不同,SCALE 直接模擬 CUDA 工具包的安裝,不需要轉(zhuǎn)換成其他語(yǔ)言就能源到源地完成編譯。
因此,像內(nèi)聯(lián) PTX 這種英偉達(dá)專(zhuān)用的中間語(yǔ)言,SCALE 同樣能夠提供支持。
無(wú)需轉(zhuǎn)換,讓 AMD 跑起 CUDA
官網(wǎng)介紹顯示,SCALE 主要有三個(gè)組成部分 —— 兼容的 nvcc 編譯器、CUDA 運(yùn)行時(shí)和驅(qū)動(dòng) API 的 AMD 實(shí)現(xiàn),以及 ROCm 庫(kù)。
其中編譯器可以把用包括 nvcc、內(nèi)聯(lián) PTX 等在內(nèi)的 CUDA 專(zhuān)屬語(yǔ)言編寫(xiě)的程序,直接編譯成可在 AMD GPU 上運(yùn)行的二進(jìn)制代碼。
ROCm 庫(kù)則用來(lái)提供“CUDA-X”API,SCALE 在處理 cuBLAS 和 cuSOLVER 等庫(kù)時(shí)均采用這種方式。
SCALE 的關(guān)鍵創(chuàng)新點(diǎn)在于按原樣接受 CUDA 程序,而不必將它們移植到另一種語(yǔ)言,兼容 nvcc 和 clang 等多種編譯方式,同時(shí)現(xiàn)有的構(gòu)建工具和腳本(如 cmake)可以正常工作。
按照官方的說(shuō)法,SCALE 實(shí)現(xiàn)了對(duì) CUDA 的完全兼容,讓開(kāi)發(fā)者無(wú)需針對(duì)不同 GPU 平臺(tái)分別編寫(xiě)代碼。
這一點(diǎn)與 AMD 推出的 HIP 存在很大不同,因?yàn)?HIP 是通過(guò)一定方式對(duì) CUDA 代碼進(jìn)行重寫(xiě),遇到復(fù)雜的宏可能無(wú)法正確理解,也不支持內(nèi)聯(lián) PTX 等專(zhuān)屬語(yǔ)言。
甚至 SCALE 作者認(rèn)為,HIP 并不能解決 CUDA 兼容性問(wèn)題。
另外,SCALE 的語(yǔ)言是 CUDA 的超集,提供一些可選的語(yǔ)言擴(kuò)展,可以使希望擺脫 nvcc 的開(kāi)發(fā)者更輕松、更高效地編寫(xiě) GPU 代碼。
作者表示,希望未來(lái)開(kāi)發(fā)者可以只編寫(xiě)一次代碼,就能不同硬件平臺(tái)上運(yùn)行,并正在著手通過(guò)彌合流行的 CUDA 編程語(yǔ)言和其他硬件供應(yīng)商之間的兼容性差距。
目前,SCALE 對(duì) AMD 各系列 GPU 的支持情況如下:
已支持:gfx1030(RX6000 系列)和 gfx1100(RX7000 系列)
“似乎有效”(seem to work):gfx1010(RX5000 系列)和 gfx1101
正在適配:gfx900(RX Vega 系列)
另外,作者測(cè)試了一些 CUDA 開(kāi)源項(xiàng)目,并利用 SCALE 成功運(yùn)行了 9 款 CUDA 應(yīng)用。
不過(guò),SCALE 畢竟是個(gè)全新的項(xiàng)目,所以作者也準(zhǔn)備了從安裝到編譯的一系列教程,給出了不同類(lèi)型的示例程序。
教程關(guān)鍵步驟都附有相關(guān)代碼,甚至包括了如何判斷自己 GPU 的型號(hào),可以說(shuō)是非常細(xì)致了。
如果使用過(guò)程中遇到問(wèn)題,作者也介紹了常見(jiàn)故障的排除方式,同時(shí)還開(kāi)通了 Discord 論壇,可與開(kāi)發(fā)團(tuán)隊(duì)直接溝通交流。
打造出 SCALE 的這家初創(chuàng)公司名為 Spectral Compute,2018 年成立于英國(guó),自稱(chēng)對(duì) CPU 和 GPU 的架構(gòu)有深入的了解,目標(biāo)是幫助開(kāi)發(fā)者高效利用算力資源。
網(wǎng)友:挑戰(zhàn)英偉達(dá)護(hù)城河?
有網(wǎng)友認(rèn)為,如果 SCALE 真能有(宣傳中的)效果,那么將對(duì)英偉達(dá)護(hù)城河發(fā)起挑戰(zhàn),讓 AMD 與之展開(kāi)直接競(jìng)爭(zhēng)。
不過(guò),現(xiàn)在下定論未免為時(shí)過(guò)早,畢竟 SCALE 官方也承認(rèn)目前和原版 CUDA 相比還存在一些缺陷。
而且開(kāi)發(fā)者也明確表示有一些 CUDA API 和功能并不被支持,但也沒(méi)有給出具體的列表。
關(guān)于“AMD 方案”的更多不足,一名自稱(chēng)和 SCALE 團(tuán)隊(duì)交流過(guò)的網(wǎng)友表示,目前的 SCALE 還無(wú)法操作 TensorCore,也就意味著 AMD 上跑不了 FlashAttention 加速框架。
另外由于 N 卡上有強(qiáng)大的矩陣乘法單元,所以即使能編譯運(yùn)行,AMD 卡上的性能可能也不及 N 卡。
更有網(wǎng)友認(rèn)為,英偉達(dá)一家獨(dú)大的原因是 AMD 不愿意投資讓其 GPU 擁有更高的機(jī)器學(xué)習(xí)性能(而不只是擁有 CUDA 這一個(gè)優(yōu)勢(shì))。
即便能夠高效運(yùn)行,AMD 卡是否真的經(jīng)濟(jì)實(shí)惠且容易獲得,同樣是一個(gè)問(wèn)題。
還有一波網(wǎng)友的觀點(diǎn)是,最大的問(wèn)題不是技術(shù)上能不能運(yùn)行,而是背后的法律問(wèn)題。
這個(gè)問(wèn)題同樣引發(fā)了廣泛的討論,不過(guò)目前也暫未有定論。
有人認(rèn)為 SCALE 像 ZLUDA(另一種在 AMD 上運(yùn)行 CUDA 程序的方式)一樣存在法律疑點(diǎn),有可能招致英偉達(dá)的訴訟。
具體來(lái)說(shuō),根據(jù)英偉達(dá)的 EULA 條款,CUDA SDK 只允許開(kāi)發(fā)在 N 卡上運(yùn)行的應(yīng)用程序,這可能禁止了類(lèi)似 SCALE 這樣的兼容實(shí)現(xiàn)。
但立馬就又有網(wǎng)友說(shuō),SCALE 并沒(méi)有用到英偉達(dá)的“SDK”,何談 SDK 使用協(xié)議呢?
總之,無(wú)論是技術(shù)不足還是法律問(wèn)題,對(duì)于這個(gè)新工具的討論都還在持續(xù)進(jìn)行。
至于到底好不好用,這就要由開(kāi)發(fā)者用腳投票了。
參考鏈接:
[1]https://docs.scale-lang.com/
[2]https://news.ycombinator.com/item?id=40970560
本文來(lái)自微信公眾號(hào):量子位(ID:QbitAI),作者:克雷西
廣告聲明:文內(nèi)含有的對(duì)外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時(shí)間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。