無(wú)須英偉達(dá),AMD本地可跑CUDA?驚現(xiàn)極客團(tuán)隊(duì)開發(fā)三方編程工具包,網(wǎng)友群議指責(zé)AMD無(wú)作為:已經(jīng)晚了,CUDA已經(jīng)是事實(shí)標(biāo)準(zhǔn)了
原創(chuàng) 精選編輯 | 言征
出品 | 51CTO技術(shù)棧(微信號(hào):blog51cto)
為了緩解“英偉達(dá)”焦慮,市場(chǎng)上浮現(xiàn)出了不可思議的事情。
就在今天,一個(gè)“可以讓AMD GPUs上跑CUDA的編程工具包”不脛而走,引起業(yè)界的注意。
圖片
1.AMD GPU 可以本地跑英偉達(dá)的CUDA?
不需要修改 CUDA 程序,也不需要構(gòu)建系統(tǒng),通過一個(gè)編程工具包,就可以把CUDA應(yīng)用程序進(jìn)行AMD GPU的本地編譯。這個(gè)工具包就是Spectral Compute推出的SCALE。
關(guān)鍵是,SCALE的制作方還是個(gè)“AI芯片大一統(tǒng)的野心家”,表示:“當(dāng)然,AMD 只是開始,對(duì)更多 GPU 供應(yīng)商和 CUDA API 的支持正在開發(fā)中?!?/p>
據(jù)介紹,SACALE有以下幾個(gè)部分組成:一個(gè)nvcc兼容編譯器,能夠?yàn)?AMD GPU 編譯 nvcc-dialect CUDA,包括 PTX asm;針對(duì) AMD GPU 的 CUDA 運(yùn)行時(shí)和驅(qū)動(dòng)程序 API 的實(shí)現(xiàn);開源包裝器庫(kù)通過委托給相應(yīng)的 ROCm 庫(kù)來提供“CUDA-X”API。這就是和等庫(kù)的cuBLAS處理cuSOLVER方式。
測(cè)試了哪些項(xiàng)目?
SCALE 團(tuán)隊(duì)通過編譯開源 CUDA 項(xiàng)目并運(yùn)行其測(cè)試來驗(yàn)證 SCALE。并且完全通過的開原項(xiàng)目包括:NVIDIA Thrust、Blender Cycles、AMGX、llama-cpp、stdgpu等。
圖片
目前支持哪些 GPU?據(jù)介紹,AMD gfx1030(Navi 21、RDNA 2.0)、AMD gfx1100(Navi 31、RDNA 3.0)已經(jīng)通過測(cè)試,AMDgfx1010、AMDgfx1101臨時(shí)測(cè)試后似乎有效。
2.那么SCALE是如何做到的?
市面上有不少跨平臺(tái)的GPGPU解決方案,比如受到英偉達(dá)官方支持的HIP方案,可以避免使用CUDA的模糊功能(如內(nèi)聯(lián)PTX)的代碼,而AMD自己,本身就有一種轉(zhuǎn)換工具:hipfy,可以將CUDA代碼轉(zhuǎn)換為hip。
那么與其他跨平臺(tái) GPGPU 解決方案相比,SCALE 有幾個(gè)關(guān)鍵創(chuàng)新:
- SCALE 接受原樣的 CUDA 程序。無(wú)需將它們移植到其他語(yǔ)言。即使您的程序使用內(nèi)聯(lián) PTX 也是如此asm。
- SCALE 編譯器接受與 相同的命令行選項(xiàng)和 CUDA 方言nvcc,可作為替代品。
- “模擬” NVIDIA CUDA 工具包的安裝,因此現(xiàn)有的構(gòu)建工具和腳本就可以cmake正常工作。
當(dāng)然在某些領(lǐng)域,SCALE對(duì)NVIDIA CUDA中某些功能的實(shí)現(xiàn)也有不同的行為。比如,SCALE尚不支持每個(gè)線程的默認(rèn)流行為,雖然這不會(huì)破壞程序,但可能會(huì)降低性能。而在NVIDIA GPU上運(yùn)行時(shí),則有一種也會(huì)略微提高程序性能的解決方法:即顯式使用非阻塞CUDA流,而不是依賴于隱式CUDA流。
整體上看,與其他方案有這些不同:
(1)SCALE并不提供編寫 GPGPU 軟件的新方法,而是允許使用廣受歡迎的 CUDA 語(yǔ)言編寫的程序直接為 AMD GPU 進(jìn)行編譯。
(2)SCALE 旨在與 NVIDIA CUDA 完全兼容。我們認(rèn)為用戶不必維護(hù)多個(gè)代碼庫(kù)或犧牲性能來支持多個(gè) GPU 供應(yīng)商。
(3)SCALE 的語(yǔ)言是NVIDIA CUDA 的超集,它提供了一些可選的 語(yǔ)言擴(kuò)展 ,可以讓那些希望擺脫的用戶更輕松、更高效地編寫 GPU 代碼nvcc。
當(dāng)然,SCALE 尚在開發(fā)中??赡軙?huì)缺少部分 API 而導(dǎo)致無(wú)法使用 ,不過團(tuán)隊(duì)會(huì)根據(jù)用戶提的需求加速開發(fā)。
教程文檔很詳細(xì):https://docs.scale-lang.com/
3.神奇的極客團(tuán)隊(duì)
Specrtral Compute 是一個(gè)致力于加速GPGPU和HPC工作負(fù)載的全球團(tuán)隊(duì),這個(gè)團(tuán)隊(duì)很神奇。小編翻了一下他們官網(wǎng),可謂是一群AI極客的玩法。
官網(wǎng)顯示,他們推出了一種1秒內(nèi)向全球傳送視頻的直播解決方案,還針對(duì)高吞吐量的GPU加速應(yīng)用程序后臺(tái)和低延遲CPU執(zhí)行進(jìn)行優(yōu)化,推出了最快的正則表達(dá)式引擎,而且性能不受影響;此外,這個(gè)團(tuán)隊(duì)隊(duì)員還擅長(zhǎng)優(yōu)化你在用AI軟件,使其要么跑得更快,要么服務(wù)免費(fèi)。
4.萬(wàn)能的網(wǎng)友
為什么不是AMD?但代替不了英偉達(dá)
首先,一部分人爭(zhēng)議的焦點(diǎn)是“怒AMD不爭(zhēng)”——“如果AMD采取任何行動(dòng)就好了,支持這個(gè),任何一項(xiàng)都會(huì)話費(fèi)幾百萬(wàn)美元,但對(duì)AMD股東來說卻價(jià)值一萬(wàn)億美元。”
然而也有人認(rèn)為AMD正在努力,正如上文提到的HIP解決方案。
然而,也有部分網(wǎng)友認(rèn)為如果AMD支持這樣的編程工具或者轉(zhuǎn)換層,會(huì)是一個(gè)壞主意。
據(jù)悉,CUDA 的設(shè)計(jì)并不與供應(yīng)商無(wú)關(guān),而 Nvidia 可以在技術(shù)和法律上任意制造困難?!拔艺J(rèn)為在此上運(yùn)行 cuDNN 或 cuBLAS 違反了許可協(xié)議。因此,這些和其他 Nvidia 庫(kù)將成為 AMD 需要重新實(shí)現(xiàn)和支持的 API 邊界的一部分。”
“追求 bug-for-bug 兼容性是愚蠢的行為。CUDA 的重要用戶是開源。AMD 可以直接在上游項(xiàng)目(如 pytorch 或 llama.cpp)中實(shí)現(xiàn)支持。一旦獲得支持,社區(qū)就可以對(duì)其進(jìn)行維護(hù)。”
5.指責(zé) AMD 而不是 Nvidia,這很奇怪嗎?
事實(shí)并非如此。
一位網(wǎng)友已經(jīng)被CUDA征服了,“即便AMD有一些努力,我也不相信 HIP 或 RocM 是 Cuda 的可行替代品?!?/p>
George Hotz 做了很多工作,試圖將各種 ML 架構(gòu)移植到 AMD,并遇到了無(wú)數(shù)的驅(qū)動(dòng)程序錯(cuò)誤。問題不在于英偉達(dá)不會(huì)構(gòu)建開放平臺(tái)——問題在于 AMD 不會(huì)投資競(jìng)爭(zhēng)平臺(tái)。
即使 CUDA 是開放的, 你是否希望 nvidia 也為 AMD 編寫驅(qū)動(dòng)程序?我不相信第三方會(huì)編寫“兼容層”,因?yàn)?AMD 自己的 GPU 并未針對(duì)類似 CUDA 的工作負(fù)載進(jìn)行優(yōu)化或測(cè)試。
99%的ML工程師不會(huì)寫CUDA
99% 的 ML 工程師不會(huì)編寫 CUDA。一位業(yè)內(nèi)人士表示,對(duì)于絕大多數(shù)工作負(fù)載,Meta 可能有 20 名工程師為 Pytorch 編寫 Cuda 后端,其他每個(gè)工程師都會(huì)使用。Meta 可以再雇傭 20 名工程師來支持 AMD 擁有的一切(他們確實(shí)這樣做了,但它不如 CUDA 那么強(qiáng)大)。
真正擅長(zhǎng)CUDA的工程師是金子一樣的貴,所以他們能做的項(xiàng)目遠(yuǎn)遠(yuǎn)超出了自己的精力和時(shí)間。甚至又網(wǎng)友爆料稱:自己認(rèn)識(shí)一位CUDA工程師配有一個(gè)滑雪屋,價(jià)值超過180鎊黃金(約532萬(wàn)美元)。
也有人延伸出了對(duì)現(xiàn)有芯片編程的建議,希望趕緊加入互操作性,開發(fā)人員太需要互操作性技術(shù)了?;ゲ僮餍约夹g(shù)可以幫助目前僅支持NVIDIA GPU的軟件在未來快速添加對(duì)Intel和AMD GPU的支持。
寫在最后:英偉達(dá)的CUDA已經(jīng)成為事實(shí)上的標(biāo)準(zhǔn)
作為 NVIDIA 發(fā)明的一種并行計(jì)算平臺(tái)和編程模型,CUDA已經(jīng)憑借大模型時(shí)代成功完成了蝶變,目前基于 CUDA 的 GPU 銷量已經(jīng)達(dá)到無(wú)法完全統(tǒng)計(jì),軟件開發(fā)商、科學(xué)家以及研究人員正在各個(gè)領(lǐng)域中運(yùn)用 CUDA。
Nvidia 付出了巨大的努力,也獲得了豐厚的回報(bào)。他們與實(shí)際使用其產(chǎn)品的人密切合作,資助開發(fā)并為研究人員、教師等提供大量支持,迄今已有十年之久。
正如網(wǎng)友評(píng)論的:“ 即使 AMD 推出了各方面都更好的 CUDA 版本,它仍然不會(huì)被采用,因?yàn)?CUDA 已經(jīng)成為標(biāo)準(zhǔn)?!?/p>
“AMD 開始真正嘗試的最佳時(shí)機(jī)是 10 年前;第二佳時(shí)機(jī)是今天。”