為何 NVidia 的開(kāi)源驅(qū)動(dòng)程序?qū)?Linux 如此重要?
RedHat 桌面、圖形、信息娛樂(lè)和 i18n 總監(jiān) Christian F.K. Schaller 分享了他對(duì) NVIDIA 開(kāi)源 Linux GPU 內(nèi)核模塊的一些看法,并分析了 NVidia 的開(kāi)源驅(qū)動(dòng)對(duì) Linux 社區(qū)的重要性。
開(kāi)源的驅(qū)動(dòng)是什么
首先需要明確的是:NVIDIA 開(kāi)源了 out of tree 源代碼內(nèi)核驅(qū)動(dòng)程序。這些驅(qū)動(dòng)程序已經(jīng)過(guò)測(cè)試,它在作為數(shù)據(jù)中心的 GPU 上支持 CUDA 用例,但尚未支持圖形顯示。盡管也有支持圖形顯示的代碼,但這些代碼還沒(méi)有寫(xiě)完或完全測(cè)試。
此外,開(kāi)源的只是內(nèi)核部分,然而現(xiàn)代圖形驅(qū)動(dòng)的很大一部分是在固件和用戶空間組件中,而這些仍然是閉源的。因此,對(duì)于普通的 Linux 桌面用戶來(lái)說(shuō),目前 NVIDIA 的開(kāi)源驅(qū)動(dòng)程序并不能帶來(lái)一些顯而易見(jiàn)的好處。
但無(wú)論如何,現(xiàn)在有了一個(gè) NVidia 內(nèi)核驅(qū)動(dòng),它能夠使用 linux 內(nèi)核中僅支持 gpl 的 API ,這就為后面的以切打下了基礎(chǔ)。
開(kāi)源驅(qū)動(dòng)能取代二進(jìn)制驅(qū)動(dòng)程序嗎?
目前還不能,該開(kāi)源驅(qū)動(dòng)程序只支持 NVidia 圖靈芯片及更新版本的圖形處理器,這意味著它對(duì) 2018 年之前的圖形處理器都不起作用。另外,在開(kāi)源內(nèi)核模塊經(jīng)過(guò)全面測(cè)試和擴(kuò)展,以用于圖形顯示用例之前,即使你使用的是圖靈或更新版本的 GPU,仍需要在系統(tǒng)中使用二進(jìn)制驅(qū)動(dòng)。
此外,正如上面所說(shuō)的,現(xiàn)代圖形驅(qū)動(dòng)的很大一部分是在固件和用戶空間組件中,因此,即使開(kāi)源內(nèi)核驅(qū)動(dòng)程序有圖形顯示能力,二進(jìn)制驅(qū)動(dòng)程序仍將繼續(xù)存在。
開(kāi)源驅(qū)動(dòng)對(duì) Nouveau 有何影響
Nouveau 是一個(gè)旨在為 NVIDIA GPU 建立高質(zhì)量的、自由的開(kāi)源驅(qū)動(dòng)項(xiàng)目,它最初是作為逆向工程驅(qū)動(dòng)程序開(kāi)發(fā)的,但近年來(lái)實(shí)得到了 NVIDIA 的積極支持。Nouveau 功能齊全,但由于無(wú)法重新計(jì)算 NVidia 顯卡的時(shí)鐘等功能而受到嚴(yán)重阻礙,這意味著它不能像二進(jìn)制驅(qū)動(dòng)那樣提供完整的性能,此次 NVIDIA 開(kāi)源的 GPU 內(nèi)核模塊對(duì) Nouveau 社區(qū)和項(xiàng)目都大有幫助。
需要注意的是: Linux 內(nèi)核不允許同一個(gè)硬件有多個(gè)驅(qū)動(dòng)程序,所以要想讓新的 NVidia 內(nèi)核驅(qū)動(dòng)程序在當(dāng)前的 Linux 版本中運(yùn)行,就必須退出現(xiàn)在的 Nouveau,或者至少被限制在一套不同的硬件上。就像二進(jìn)制驅(qū)動(dòng)一樣,Nouveau 的很大一部分不在內(nèi)核中,而是在 Mesa 和 NVidia 目前提供的 Nouveau 特定固件中發(fā)現(xiàn)的用戶空間部分。
目前 NVIDIA 和 RadHat 等發(fā)行版討論的計(jì)劃是讓 NVidia 的二進(jìn)制驅(qū)動(dòng)和 Mesa 共享一個(gè)內(nèi)核驅(qū)動(dòng),這可能是一個(gè)全新的驅(qū)動(dòng)程序,旨在同時(shí)滿足 NVidia 用戶空間和 Mesa 用戶空間的需求。但這可能需要幾年的時(shí)間來(lái)實(shí)現(xiàn)。這對(duì)開(kāi)源社區(qū)和 NVidia 都有明顯的優(yōu)勢(shì)。對(duì)于開(kāi)源社區(qū)來(lái)說(shuō),這意味著現(xiàn)在將擁有一個(gè)內(nèi)核驅(qū)動(dòng)程序和固件,它允許更改 GPU 的時(shí)鐘,以提供人們期望從 NVidia 顯卡獲得的顯示性能,這意味著 Linux 將擁有一個(gè)可以在第一時(shí)間訪問(wèn)新一代 NVidia 硬件的固件和內(nèi)核更新的驅(qū)動(dòng)程序。
開(kāi)源驅(qū)動(dòng)對(duì) Linux 發(fā)行版意味著什么?
就近期而言,它不會(huì)產(chǎn)生重大影響。但隨著時(shí)間的推移,它提供了一種從根本上簡(jiǎn)化對(duì) NVidia 硬件支持的途徑。從長(zhǎng)遠(yuǎn)來(lái)看,用戶有機(jī)會(huì)能在 NVidia 硬件上獲得與 Linux 為 Intel 和 AMD 的硬件提供的的體驗(yàn),即一些開(kāi)箱即用的功能
開(kāi)源還意味著 Linux 發(fā)行版可以第一時(shí)間支持新的 NVIDIA 芯片,一個(gè)高性能的 NVidia 開(kāi)源 Mesa 驅(qū)動(dòng)程序?qū)⒃试S Linux 發(fā)行版簽署 NVidia 驅(qū)動(dòng)程序和內(nèi)核的其他部分,以實(shí)現(xiàn)安全重啟等功能。
由于第一個(gè)開(kāi)源驅(qū)動(dòng)版本 R515 是針對(duì)計(jì)算 GPU 的,所以可以預(yù)期這些選項(xiàng)也將首先為計(jì)算用戶提供,然后再為顯卡用戶提供。
下一步是什么?
NVidia 需要繼續(xù)努力完成這個(gè)新的驅(qū)動(dòng)程序功能,無(wú)論是計(jì)算還是圖形顯示用例。而 Linux 社區(qū)和 NVIDIA 需要共同為未來(lái)的統(tǒng)一內(nèi)核驅(qū)動(dòng)程序制定一個(gè)計(jì)劃,并圍繞它制定一個(gè)適用于它的模型。無(wú)論是 Linux 社區(qū)還是 NVidia,都需要添加 Mesa Vulkan 驅(qū)動(dòng)程序之類的東西,類似于為 AMD 提供 RADV 的方式。