開源驅(qū)動中的差生
長久以來,AMD為Linux提供專有驅(qū)動的同時,也在大力推動開源驅(qū)動的支持,不僅積極提供代碼,也給到了足夠的文檔支持。因此,只有需要OpenCL渲染等圖形支持時,才需要用到專有驅(qū)動。而反觀英偉達(dá),他們雖然早早就開始對Linux提供支持,但僅限于其專有驅(qū)動。英偉達(dá)此舉惹惱了不少人,連Linux之父Linus Torvalds多年前被問及英偉達(dá)OptimusGPU為何缺乏Linux支持時,都表示英偉達(dá)是他們遇見過的最難相處的公司,甚至對其公然大罵。
A100GPU / 英偉達(dá)
哪怕是剛進(jìn)入獨(dú)立GPU沒多久的英特爾在開源驅(qū)動上的支持也要好于英偉達(dá),更不用說此前英特爾的集成GPU就對Linux有著極好的開源驅(qū)動支持。這或許也是為何一眾超級計(jì)算機(jī)系統(tǒng)選擇了用AMD的RadeonInstinct和英特爾的XeGPU,也沒有選擇英偉達(dá)A100的原因。
對于AMD來說,尤其是在Linux下,開源的驅(qū)動甚至好過專有驅(qū)動,而在英偉達(dá)身上,這種狀況就反過來了。過去在Linux開發(fā)者的眼中,英偉達(dá)對于他們的開源社區(qū)提供的支持并不多,首先英偉達(dá)沒有主動支持,再來英偉達(dá)沒有給出任何文檔也沒有提交任何開源代碼。更糟糕的是,英偉達(dá)GPU的開源驅(qū)動并不完美。以著名的開源英偉達(dá)驅(qū)動nouveau為例,這一驅(qū)動在沒有簽名的情況下,GPU是無法全速運(yùn)轉(zhuǎn)的。
英偉達(dá)的GPU驅(qū)動開源才剛走出第一步
英偉達(dá)顯然也意識到了這一點(diǎn),但出于商業(yè)考慮,比如防止技術(shù)泄露等,于是在過去這么多年里,都沒有選擇開源驅(qū)動。然而從近日發(fā)布的R515驅(qū)動開始,英偉達(dá)終于決定開放其GPU內(nèi)核模塊驅(qū)動,將各多的自由交予Linux下的開發(fā)者。他們可以在原有英偉達(dá)GPU驅(qū)動的基礎(chǔ)上進(jìn)行簽名和分發(fā),并加以改進(jìn)。提供更好的體驗(yàn),而幾大Linux發(fā)行版也可以與這些內(nèi)核模塊打包在一起。
R515驅(qū)動供用戶選擇安裝開源或閉源核心模塊 / 英偉達(dá)
英偉達(dá)不僅公布了驅(qū)動源代碼,也提供完全打包好的驅(qū)動版本,不過根據(jù)GPU架構(gòu)與定位的不同,其代碼仍有一定差異。比如大部分?jǐn)?shù)據(jù)中心長期以來用的已經(jīng)是Linux系統(tǒng)了,加上英偉達(dá)去年就開始逐步推行GSP驅(qū)動架構(gòu),讓GSP單元接替CPU來完成GPU初始化和管理任務(wù),因此A100等主要數(shù)據(jù)中心GPU剛開源的代碼已經(jīng)可以用于生產(chǎn)。
但消費(fèi)級的GeforceGPU和工作站級的WorkstationGPU就并非如此了,目前這些GPU中并沒有GSP單元,所以其代碼還是還處于最初期的測試階段,很難做到不出差錯。而且開源的代碼也僅限于圖靈和安培架構(gòu)的GPU,圖靈架構(gòu)之前的GPU依然只能選擇閉源的內(nèi)核模塊驅(qū)動。除此之外,英偉達(dá)GPU驅(qū)動中最有價值的那部分,也就是CUDA這些用戶層的驅(qū)動,依然是閉源的。
而將Linux移植到蘋果M1系列上的開發(fā)者Hector Martin表示,雖然英偉達(dá)聲稱開源內(nèi)核驅(qū)動,但其實(shí)將大部分內(nèi)容都移動到了固件上,所以才開始推行這一開源驅(qū)動策略,有種師從博通的既視感。但好在英偉達(dá)至少真的開始朝開源驅(qū)動這個方向走了。并表示隨著開源驅(qū)動的質(zhì)量逐步提高,會慢慢淘汰掉閉源驅(qū)動。
英偉達(dá)此舉確實(shí)改善了其GPU產(chǎn)品在Linux下的集成和支持,讓開發(fā)人員有了更多調(diào)試的空間,這倒不是真的因?yàn)槭昵癓inus豎的中指終于讓其警醒,更多的還是為了把握企業(yè)和數(shù)據(jù)中心市場。隨著機(jī)密計(jì)算的需求越來越高,英偉達(dá)作為機(jī)密計(jì)算聯(lián)盟成員之一,自然不能因?yàn)殚]源驅(qū)動給到了開發(fā)者限制,而喪失這一市場。