被Linux之父罵醒?英偉達(dá)破天荒開源GPU內(nèi)核驅(qū)動
發(fā)布日期:2022-05-13 16:05:56本文來自微信公眾號:機(jī)器之心 (ID:almosthuman2014),作者:機(jī)器之心編輯部,題圖來自:視覺中國
“英偉達(dá)是我們遇到的硬件廠商中最麻煩的一個?!边@是 Linux 內(nèi)核總設(shè)計師 Linus Torvalds 十年前說過的一句原話。
當(dāng)時,Linus 正在芬蘭赫爾辛基阿爾托大學(xué)舉辦的學(xué)生和開發(fā)者研討大會上接受采訪。
在會上,一位現(xiàn)場觀眾稱其買過一款搭載了集成顯卡以及 NVIDIA 獨立顯卡的筆記本電腦,但是在 Linux 下通過 NVIDIA Optimus 技術(shù)進(jìn)行獨立顯卡與集成顯卡之間的切換卻得不到驅(qū)動的支持(NVIDIA Optimus 是英偉達(dá)開發(fā)的雙顯卡切換技術(shù),它可以實現(xiàn)筆記本電腦中獨立顯卡與主板內(nèi)置顯卡之間無縫、自動、實時的切換),并就此詢問 Linus 的想法。就是在這種語境下,Linus 說出了上面那句話,然后轉(zhuǎn)向攝像機(jī)鏡頭豎起了中指并爆了粗口。
作為開源操作系統(tǒng) Linux 之父,Linus 一直是開源的忠實擁護(hù)者,他一直希望英偉達(dá)能夠開源他們的驅(qū)動。如今,這一天真的來了。
就在今天,英偉達(dá)宣布,他們開源了自己的 GPU 內(nèi)核驅(qū)動模塊,此事在開發(fā)者社區(qū)引起轟動。
有人評價說,“這是近十年來開源操作系統(tǒng)硬件支持方面發(fā)生的最大事件之一?!?/p>
還有人戲稱,這是一個“活久見”時刻。
這次開源使用雙 GPL/MIT 許可,從 R515 驅(qū)動程序版本開始。開發(fā)者們可以在 GitHub 上的 NVIDIA Open GPU Kernel Modules repo 中找到這些內(nèi)核模塊的源代碼。
英偉達(dá)表示,此次開源將大幅提升用戶在 Linux 系統(tǒng)中使用英偉達(dá) GPU 的體驗,可使其更緊密地與操作系統(tǒng)集成,有利于開發(fā)人員的調(diào)試、集成和反饋。對于 Linux 發(fā)行版提供商,開源的內(nèi)核模塊增加了易用性,還改善了開箱即用的用戶體驗,以簽署和分發(fā) NVIDIA GPU 驅(qū)動程序。Canonical 和 SUSE 能夠立即將這些開源的內(nèi)核模塊與 Ubuntu 和 SUSE Linux Enterprise Distributions 打包在一起。
開發(fā)人員可以跟蹤代碼路徑,了解內(nèi)核事件調(diào)度如何與他們的工作負(fù)載交互,以便更快地進(jìn)行根源調(diào)試。此外,企業(yè)軟件開發(fā)人員現(xiàn)在可以將該驅(qū)動無縫集成到為他們的項目定制的 Linux 內(nèi)核中。這將進(jìn)一步提高 NVIDIA GPU 驅(qū)動的質(zhì)量和安全性,并得到 Linux 終端用戶社區(qū)的反饋。
支持的功能
此次 GPU 內(nèi)核模塊發(fā)布的第一個版本是 R515,除了公布源代碼之外,該版本還提供了驅(qū)動程序的完整構(gòu)建和打包版本。對于 NVIDIA Turing、NVIDIA Ampere 架構(gòu)系列中的數(shù)據(jù)中心 GPU 來說,這些代碼可用于生產(chǎn)。這得益于過去一年英偉達(dá)分階段推出的 GSP 驅(qū)動程序架構(gòu),旨在讓英偉達(dá)的客戶輕松過渡。研發(fā)團(tuán)隊專注于測試各種工作負(fù)載,以確保與專有內(nèi)核模式驅(qū)動程序的功能和性能相同。
未來,HMM 等功能將成為 NVIDIA Hopper 架構(gòu)上機(jī)密計算的基礎(chǔ)組件。
英偉達(dá)這次的開源版本對 GeForce 和 Workstation GPU 的支持度很高。GeForce 和 Workstation 用戶可以在 NVIDIA Turing、NVIDIA Ampere 架構(gòu) GPU 上使用此驅(qū)動程序來運行 Linux 桌面,并在 Vulkan 和 NVIDIA OptiX 中使用多顯示器、G-SYNC 和 NVIDIA RTX 光線追蹤等功能。用戶可以選擇使用文檔中突出顯示的內(nèi)核模塊參數(shù) NVreg_EnableUnsupportedGpus 。更強(qiáng)大、功能更全的 GeForce 和工作站支持將在后續(xù)版本中發(fā)布,英偉達(dá)開源內(nèi)核模塊將最終取代閉源驅(qū)動程序。
擁有 Turing 和 Ampere GPU 的客戶可以自主選擇安裝哪些模塊。而使用 Turing 之前硬件的客戶將繼續(xù)運行閉源模塊。
開源內(nèi)核模式驅(qū)動程序使用相同的固件和相同的用戶模式堆棧,例如 CUDA、OpenGL 和 Vulkan。但是,驅(qū)動程序堆棧的所有組件都必須與發(fā)行版中的版本相匹配。例如,用戶不能使用以前或未來版本的用戶模式堆棧發(fā)布源代碼、構(gòu)建或運行它。
為什么英偉達(dá)的開源驅(qū)動對 Linux 如此重要?
在英偉達(dá)宣布開源后不久,開源解決方案供應(yīng)商 Red Hat 的桌面高級經(jīng)理 Christian F.K. Schaller 發(fā)表了篇題為《Why is the open source driver release from NVidia so important for Linux?》的博客文章,深入解讀了英偉達(dá)此次開源對 Linux 的影響,我們來看看他是怎么說的。
新驅(qū)動包含什么?
英偉達(dá)此次發(fā)布的是源代碼樹外內(nèi)核驅(qū)動程序,該驅(qū)動程序經(jīng)過測試可支持?jǐn)?shù)據(jù)中心 GPU 上的 CUDA 用例。其中含有支持顯示的代碼,但尚未完成測試。此外,這只是內(nèi)核部分,現(xiàn)代圖形驅(qū)動程序的很大一部分能夠在固件和用戶空間組件中找到,但它們?nèi)允情]源的。
不過,這次開源確實意味著 NVidia 已經(jīng)發(fā)布了一個能夠使用 Linux 內(nèi)核中 GPL-only API 的內(nèi)核驅(qū)動程序,盡管這個初始版本不使用舊驅(qū)動程序未使用的任何 API。
該驅(qū)動程序還僅支持 NVidia Turing 芯片 GPU 及之后的更新版本,這意味著它不能用于 2018 年之前的 GPU。因此,對于大多數(shù) Linux 桌面用戶來說,并不是立即可用。
對于英偉達(dá)二進(jìn)制驅(qū)動程序意味著什么?
Turing 芯片之前的英偉達(dá) GPU 將繼續(xù)需要英偉達(dá)的二進(jìn)制內(nèi)核驅(qū)動程序。在開源內(nèi)核模塊經(jīng)過全面測試和擴(kuò)展以顯示用例之前,即使用戶使用的是 Turing 之后的 GPU,也可能需要繼續(xù)使用該二進(jìn)制驅(qū)動程序。同樣,二進(jìn)制驅(qū)動程序的很大一部分可以在固件和用戶空間中找到。
對于 Nouveau 意味著什么?
Nouveau 是當(dāng)前英偉達(dá) GPU 的內(nèi)核內(nèi)圖形驅(qū)動程序。它功能完備,但因不能 re-clock 而無法像二進(jìn)制驅(qū)動程序那樣為用戶提供完整的性能。
Linux 內(nèi)核不允許同一硬件有多個驅(qū)動程序,因此為了讓新的英偉達(dá)內(nèi)核驅(qū)動程序進(jìn)入當(dāng)前驅(qū)動程序,必須退出或至少限制一組不同的硬件,當(dāng)前驅(qū)動程序就是 Nouveau。
就像二進(jìn)制驅(qū)動程序一樣,Nouveau 的很大一部分不在內(nèi)核中,而是在 Mesa 的用戶空間片段和 NVidia 當(dāng)前發(fā)布的 Nouveau 特定固件中。因此,英偉達(dá)會保留 Nouveau 以支持 Turing 之前的硬件。
我們正在努力探索一種能讓英偉達(dá)二進(jìn)制驅(qū)動和 Mesa 共享內(nèi)核驅(qū)動程序的方法,這可能需要幾年的時間才能完全實現(xiàn)。我們目前預(yù)期推出一種全新的驅(qū)動程序,旨在同時滿足英偉達(dá)用戶空間和 Mesa 用戶空間的需求。我們也希望在此過程中與英偉達(dá)的工程師合作。
綜上所述,對于開源社區(qū)來說,這意味著我們將有一個內(nèi)核驅(qū)動程序和固件,允許改變 GPU 時鐘,以提供研究者期望從英偉達(dá)顯卡獲得的性能;意味著我們將擁有一個開源驅(qū)動程序,從開源第一天起我們就可以訪問新一代英偉達(dá)硬件固件和內(nèi)核更新;意味著我們可以開始使用 Linux 內(nèi)核中的 GPL-only API。
對于 Fedora、RHEL 等 Linux 發(fā)行版意味著什么?
實際上,英偉達(dá)的開源 GPU 內(nèi)核近期并不會對 Fedora、RHEL 等 Linux 發(fā)行版產(chǎn)生重大影響。但隨著時間的推移,由于此次開源提供了一種從根本上簡化英偉達(dá)硬件支持的途徑。從長遠(yuǎn)來看,我們希望能夠在英偉達(dá)硬件上獲得與英特爾和 AMD 類似的體驗,即開箱即用的功能。
接下來英偉達(dá)會有很多工作要做,他們需要使這個新的驅(qū)動程序在計算和圖形顯示應(yīng)用中更加完整,我們需要做的是,共同努力為未來統(tǒng)一內(nèi)核驅(qū)動程序制定一個計劃,并圍繞該計劃制定一個適用于社區(qū)和英偉達(dá)的模型,例如添加 Mesa Vulkan 驅(qū)動程序之類的東西。
參考鏈接:
https://blogs.gnome.org/uraeus/2022/05/11/why-is-the-open-source-driver-release-from-nvidia-so-important-for-linux/
https://developer.nvidia.com/blog/nvidia-releases-open-source-gpu-kernel-modules/
聯(lián)系電話:
13528173451