各位早安,
這裡是禮拜六早上的 R&D。
※ 引述 《amduser (重返榮耀)》 之銘言:
:
: 之前新聞
: https://news.mydrivers.com/1/963/963717.htm
:
: NVIDIA CUDA通過多年耕耘,鑄就了牢不可破的生態壁壘,外人各種嘗試都無法進入,包
: 括AMD ROCm開發平台,但其實也不是沒有辦法。
: 開發者Andrzej Janik就憑借一己之力,借助Intel oneAPI,開發了CUDA兼容方案“ZLUDA
: ”,能夠在Intel硬件上原生運行CUDA應用,后來就被停了
: 之后在AMD的支持下,ZLUDA重啟了該項目,能夠讓AMD顯卡原生運行CUDA應用,不需要任
: 何轉移,也不需要調整代碼。
: 唯一要做的,就是用ZLUDA庫替代CUDA。
: 雖然它不能保證每一款CUDA應用都跑起來,但已經是以一個巨大的突破。
: 非常可惜,AMD支持這一項目做了兩年,也給停了——不知道是不是受到了NVIDIA的壓力
: 。
: 幸運的是,ZLUDA項目并未徹底消散,已經免費開源,感興趣有能力的開發者都可以使用
: ,而且確認可以在AMD ROCm平台上無縫運行CUDA應用。
: 比如說,可以將CUDA作為Blender 4.0或者V-Ray的渲染API,尤其是Blender本來就有
: Radeon HIP計算渲染器,如今跑在ZLUDA上速度還會更快。
: Andrzej Janik也在繼續研究ZLUDA,其中一個目標就是要讓AMD顯卡運行NVIDIA DLSS。
: 內部測試表明,對比OpenCL方案,其性能大部分時候都更好,最多可以領先超過75%,但
: 因為還在開發之中,部分時候效率反而更低。
:
: 大家都知道NVIDIA最喜歡搞特規G-SYNC、DLSS、CUDA、閉源軟體一大堆不開放給其他家用
: ,現在ZLUDA可以讓AMD顯卡跑CUDA程式,那以後就不必特地買N卡了,應該以後會有人拿
: AMD顯卡來搞AI了吧!
:
: https://github.com/vosen/ZLUDA
:
ZLUDA 這東西我研究過一陣子,
當然不是現在這個 Fork,
而是三年前那個版本。
平台使用 Ubuntu 22.04 64bit
我研究後發現 ZLUDA 的運作原理是這樣:
ZLUDA 會去模擬一套 CUDA API,
然後內部再自己實現功能。
這代表什麼呢?
假設你有一套程式支援 CUDA 8 好了,
現在 CUDA 要更新變成 CUDA 9 囉!
N 家能在歷史版本裡面找到 舊版CUDA來套,
那你程式就能順利跑了。
如果你用 ZLUDA ,
之前的問題就是他只支援某特定版本 CUDA,
還沒有 Released 他是 depend 哪一版?
ZLUDA 是照某板的 API 下去寫的!
所以你想支援機器學習框架?
(e.g. TensorFlow, PyTorch)
那要先找到這個是用哪版 CUDA,
找到後還要確定這版的框架你裝得起來。
個人是認為這難度:
https://i.imgur.com/OBzSNCH.gif
除去框架,
實測能夠用 ZLUDA 跑起來的 CUDA 程式:
Geekbench 5
也嘗試過從底層像是 Numba 重寫演算法
拿去 Benchmark performance 。
一樣遇到 Numba 卡版本問題。
退一萬步說 ZLUDA 可能有用,
但是老黃一版更他就會死翹翹,
而且死很久。
開源的東西都這樣,蘇媽也不是做慈善的。
既然主流的框架(e.g. PyTorch)
都有支援 ROCm,幹嘛出大錢搞 ZLUDA?
結論:
ZLUDA 要真正可以商用,
就是要有人花錢去幫每一版 CUDA 寫 API,
然後拿出一張表對標版本支援才有用。
現在商用想逃離 NV 還是推 OpenCL 解決方案,
以上。