英偉達(dá)下一款Linux驅(qū)動(dòng)程序開(kāi)源了,但又沒(méi)完全開(kāi)源
GPU巨頭的軟件仍然讓人頭痛,但Fedora和AMD正在努力尋求應(yīng)對(duì)之策。
英偉達(dá)表示,其即將發(fā)布的560版驅(qū)動(dòng)程序?qū)⑴c515版和555版一樣開(kāi)放——并將支持更多設(shè)備。
從這條最新消息來(lái)看,GPU巨頭似乎正在全面擁抱開(kāi)源GPU內(nèi)核模塊。
但事實(shí)上,英偉達(dá)此舉是對(duì)2022年圖形驅(qū)動(dòng)程序開(kāi)源計(jì)劃的延續(xù)。根據(jù)當(dāng)時(shí)的相關(guān)報(bào)道,有觀察人士發(fā)現(xiàn)其并不像宣傳中的那么開(kāi)放(詳情請(qǐng)參閱文末腳注)。首先明確一點(diǎn),我們并不是在貶低英偉達(dá)的開(kāi)源舉措,只不過(guò)……英偉達(dá)當(dāng)時(shí)曾有所保留,而如今依然有所保留。
該公司最新公告強(qiáng)調(diào)稱,他們將繼續(xù)推進(jìn)此項(xiàng)計(jì)劃并擴(kuò)大支持范圍。2023年,英偉達(dá)增加了對(duì)新款Turing硬件的支持。如今,該公司在聲明中表示:
對(duì)于英偉達(dá)Grace Hopper以及英偉達(dá)Blackwell等前沿平臺(tái),您只能使用開(kāi)源GPU內(nèi)核模塊。這些平臺(tái)不支持專有驅(qū)動(dòng)程序。
而對(duì)于隸屬于Turing、Ampere、Ada Lovelace或者Hopper架構(gòu)的較新GPU,英偉達(dá)建議您切換至開(kāi)源GPU內(nèi)核模塊。
如果大家使用的是較舊的GPU或者混合應(yīng)用場(chǎng)景,則將別無(wú)選擇,只能繼續(xù)使用單體專有驅(qū)動(dòng)程序。而即使您使用的是受到開(kāi)源支持的現(xiàn)代GPU,也仍然擺脫不了固件BLOB。
各Linux發(fā)行版如何處理這個(gè)問(wèn)題
這對(duì)支持UEFI安全啟動(dòng)的Linux發(fā)行版?zhèn)儊?lái)說(shuō)明顯是個(gè)問(wèn)題,此機(jī)制要求對(duì)內(nèi)核進(jìn)行加密簽名。Ubuntu直接包含驅(qū)動(dòng)程序以及配套安裝工具,所以情況相對(duì)簡(jiǎn)單。
但Fedora并不包含英偉達(dá)驅(qū)動(dòng)程序等專有元素,甚至根本不在GNOME軟件應(yīng)用商店中提供相關(guān)選項(xiàng)。這是個(gè)長(zhǎng)期存在的老問(wèn)題了,但也許很快就能得到解決。
在新的變更提案中,F(xiàn)edora將為用戶添加一個(gè)自行簽署模塊的選項(xiàng)。此項(xiàng)變更仍在討論當(dāng)中,但如果順利獲批,則有望在Fedora 41中盡快落地。
將CUDA從英偉達(dá)手中解放出來(lái)
除了擁有高端顯卡的游戲玩家以外,英偉達(dá)GPU的另一個(gè)重要用途,就是把計(jì)算任務(wù)由GPU芯片接管過(guò)來(lái)。這種并行處理方式能夠極大發(fā)揮現(xiàn)代GPU的計(jì)算能力。英偉達(dá)方面稱之為CUDA,全名叫做計(jì)算統(tǒng)一設(shè)備架構(gòu)(compute unified device architecture),但如今人們普遍使用GPGPU計(jì)算來(lái)表達(dá)。
問(wèn)題在于,如果我們面向CUDA編寫代碼,那么它就只能在使用英偉達(dá)驅(qū)動(dòng)程序的英偉達(dá)芯片上運(yùn)行。舉例來(lái)說(shuō),大家無(wú)法使用全FOSS Nouveau驅(qū)動(dòng)程序運(yùn)行CUDA代碼。
AMD也有自己的類似GPGPU軟件棧,名為ROCm,它允許用戶將數(shù)字運(yùn)算轉(zhuǎn)移到AMD GPU上……但同樣的,如果面向ROCm編寫代碼,那它也無(wú)法在英偉達(dá)平臺(tái)上運(yùn)行。如果想要保持跨GPU可移植性,AMD方面也提供Hip替代方案,即異構(gòu)計(jì)算可移植性接口。但需要注意的是,并非所有功能都受到支持,例如內(nèi)聯(lián)PTX匯編語(yǔ)言就無(wú)法起效。
如今,新的獨(dú)立競(jìng)爭(zhēng)者也加入戰(zhàn)團(tuán):來(lái)自Spectral Compute的SCALE語(yǔ)言。項(xiàng)目文檔提到:
SCALE是一套GPGPU編程工具包,允許CUDA應(yīng)用程序面向AMD GPU進(jìn)行本地編譯。
SCALE不需要修改CUDA程序或其構(gòu)建系統(tǒng)。
SCALE確實(shí)能支持內(nèi)聯(lián)PTX匯編,該項(xiàng)目還提供了與同類競(jìng)爭(zhēng)技術(shù)的效果比較,包括AMD HIP和FOSS ZLUDA工具。
除此之外,還有其他產(chǎn)品可以實(shí)現(xiàn)供應(yīng)商中立的GPGPU計(jì)算。OpenCL標(biāo)準(zhǔn)自2008年起就已存在,并于2020年迎來(lái)3.0版本。預(yù)計(jì)今年晚些時(shí)候,還將有名為UXL的新競(jìng)爭(zhēng)對(duì)手參與進(jìn)來(lái)。
不過(guò),這一切都無(wú)法阻止英偉達(dá)拿下令人印象深刻的3萬(wàn)億美元市場(chǎng)估值。在我們看來(lái),能提升這一領(lǐng)域的競(jìng)爭(zhēng)烈度肯定是件好事。
腳注:多開(kāi)放才算真“開(kāi)放”?
整天嚷嚷著開(kāi)源驅(qū)動(dòng)程序,并不代表英偉達(dá)的整個(gè)驅(qū)動(dòng)程序?,F(xiàn)在都已經(jīng)轉(zhuǎn)向開(kāi)源。人家根本不開(kāi)源。只能說(shuō)與Linux操作系統(tǒng)相交互的部分是開(kāi)源的,而這是英偉達(dá)將代碼中的專有部分集中在一個(gè)幾MB的“固件”文件內(nèi)實(shí)現(xiàn)的——毫無(wú)疑問(wèn),這個(gè)文件仍然保持閉源、秘不示人。
在發(fā)布515驅(qū)動(dòng)程序時(shí),Asahi Linux項(xiàng)目負(fù)責(zé)人Hector Martin專門查看了英偉達(dá)公開(kāi)了多少代碼可供研究。在現(xiàn)已刪除的Twitter賬戶上,他公布了如下發(fā)現(xiàn):
就是說(shuō)英偉達(dá)“發(fā)布”了他們的開(kāi)源內(nèi)核驅(qū)動(dòng)程序。
但更準(zhǔn)確地講,他們只是把大部分代碼轉(zhuǎn)移到了固件當(dāng)中,再讓開(kāi)源驅(qū)動(dòng)程序調(diào)用該固件。據(jù)我所知,這個(gè)34 MB大小的固件中實(shí)現(xiàn)了近900個(gè)函數(shù)。
博通直呼內(nèi)行……
簡(jiǎn)單比較,蘋果的GPU固件約為400 KB。哪怕同樣是瘋狂與混亂RPC復(fù)合體的蘋果顯示控制器,大小也只有7 MB左右,而且其中大部分是數(shù)據(jù)表(代碼部分只占約1.5 MB)。
千萬(wàn)別誤會(huì)我的意思,內(nèi)核里blob少一點(diǎn)其實(shí)是好事……但英偉達(dá)并沒(méi)有像他們嘴上說(shuō)的那樣開(kāi)源自家“驅(qū)動(dòng)程序”。
至少他們的內(nèi)核端代碼可是有“區(qū)區(qū)”58 MB。AMD在這方面仍然遙遙領(lǐng)先,他們用某種方法成功把近300 MB的自動(dòng)生成內(nèi)容塞進(jìn)了上游Linux內(nèi)核樹(shù)當(dāng)中……
這種在大型軟件項(xiàng)目中留黑箱的作法近年越來(lái)越常見(jiàn)。根據(jù)2022年時(shí)的相關(guān)報(bào)道:人們對(duì)專有固件BLOB范圍不斷擴(kuò)大的趨勢(shì)感到擔(dān)憂。這種狀況影響深遠(yuǎn),甚至逼迫Debian項(xiàng)目改變了其延續(xù)30年的政策,從Debian 12開(kāi)始引入專有固件。