可以在AMD顯卡上跑CUDA軟件麼?

“ 感知技術 · 感觸CG · 感受藝術 · 感悟心靈 ”

中國很有影響力影視特效CG動畫領域自媒體

我們行業的工作多數流程環節,是高度依賴GPU顯卡來進行高效工作的。如今,因爲美國限制的原因,NVIDIA的高端卡受限;而另一邊,由於好多軟件不支持AMD的顯卡,我們又無法使用有着高端卡的AMD,這就導致行業用戶陷入到一個很尷尬的境地。但是如果有一種技術,可以讓軟件能在AMD卡上跑起來,並達到GPU顯卡的功效,那豈不是美哉?今天,我們就來說說這樣一種開源的技術。

近日,Andrzej Janik大神發佈了ZLUDA 3,這個開源項目是爲NVIDIA GPU設計的,可以讓基於GPU的軟件能夠在其他顯卡硬件上運行。

封裝技術旨在使現有應用程序能夠在新硬件上運行,且無需開發人員進行任何工作。之前版本的ZLUDA,可以讓CUDA應用程序能夠在英特爾GPU上運行,而最新發布的版本3已經支持AMD GPU。

ZLUDA已被證實可以與Blender、攝影測量應用程序3DF Zephyr和RealityCapture以及Arnold渲染器等軟件一起工作,並取得了不同程度的成功。

項目開發的幕後故事

ZLUDA於2020年首次發佈,最初是作爲英特爾GPU上CUDA的替代品,在開源社區引起了廣泛關注。

但在2021年版本2發佈後不久,在沒有給出任何理由的情況下,Janik宣佈他無法繼續開發這個項目。ZLUDA似乎就暫停了,開發者Janik從此也“銷聲匿跡”。然而就在本週,Janik更新了ZLUDA GitHub存儲庫的常見問題,並解釋了他“消失”這麼久的原因。

2021年,Janik在英特爾負責視覺技術團隊的軟件工程管理。那時候英特爾開始評估ZLUDA是否是一項潛在的官方技術,可惜英特爾最終判定“不存在在英特爾GPU上運行CUDA應用程序的商業理由”。2022年,Janik離開了公司,與AMD接洽。AMD對ZLUDA進行了兩年的評估,最後也決定不再繼續該項目,而後,Janik開源了更新的代碼。

這個項目的開發,可以說一波三折。

ZLUDA第3版的目的,是使NVIDIA的CUDA API開發的GPU應用程序能夠在AMD GPU上跑起來。這對於VFX、動態圖形和可視化等行業來說,意義非常重大,因爲許多關鍵的CG軟件,尤其是渲染器,都是基於CUDA的,也就是說只支持NVIDIA。

儘管AMD有自己的技術HIP,可以移植CUDA應用程序在其硬件上運行,不過這需要軟件開發人員。雖然HIP已被用於創建與AMD兼容的Redshift和Blender的Cycles渲染器版本,但是到目前爲止很少有其他CG工具開發人員效仿。

相比之下,ZLUDA(其版本3實際上是基於HIP構建的)旨在使CUDA應用程序能夠在AMD GPU上運行,而不用去修改。這意味着,至少在理論上實現了之前只能在NVIDIA顯卡上運行的軟件,現在也可以在AMD上打開使用。

目前已經測試過可以用的軟件包括攝影測量應用程序3DF Zephyr和RealityCapture,以及Autodesk的Arnold渲染器。

上面這幅作品是Gleb Alexandrov用Arnold在ZLUDA環境下渲染的。算是對Arnold支持的“概念驗證”:只有一個場景使用ZLUDA的OptiX實現成功渲染。

在ZLUDA下運行CUDA應用程序的速度有多快?

Janik將CUDA應用程序描述爲,在AMD GPU上幾乎可以原生的性能運行。就拿Blender來說,ZLUDA下的性能與本地HIP後端相似。不過,ZLUDA GitHub存儲庫指出,在ZLUDA下,3DF Zephyr和Reality Capture都“慢得多”。此外,許多GPU渲染器的開發人員還使用第二個NVIDA API OptiX來加速光線追蹤,這也有助於提高性能。

ZLUDA對OptiX具有“最低限度”的支持,但僅限於Linux。事實上,ZLUDA-Optix(主要用於 Arnold 的“概念驗證”支持)未包含在ZLUDA的可再發行版本中。

其他CG軟件會在ZLUDA下的AMD GPU上運行嗎?

如果沒有用戶測試,目前很難說其他基於CUDA的CG軟件在ZLUDA下運行得有多好。

V-Ray基準測試可以在ZLUDA和HIP的“某些‘舊組合”上運行,但OctaneRender基準測試OctaneBench根本不跑不起來。

未來會有更多基於CUDA的CG應用程序在ZLUDA下運行嗎?

Janik表示沒有英特爾或AMD的支持,“實際上(ZLUDA)現在被拋棄了”。

儘管他表示,對任何可能推動項目發展的提議都持開放態度,但如果沒有它,他只可能增加對他個人感興趣的NVIDIA技術的支持(比如DLSS)。

另外,源代碼是公開的。Janik認爲,即使是目前的狀態下,ZLUDA也可以被軟件開發人員用作“從CUDA到HIP逐步移植”的一部分。

全文完