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