博客專欄

EEPW首頁 > 博客 > 被Linux之父罵醒?英偉達破天荒開源GPU內核驅動,網友:活久見

被Linux之父罵醒?英偉達破天荒開源GPU內核驅動,網友:活久見

發布人:機器之心 時間:2022-05-15 來源:工程師 發布文章

終于等到了這一天:英偉達開源了他們的 Linux GPU 內核驅動。

「英偉達是我們遇到的硬件廠商中最麻煩的一個?!惯@是 Linux 內核總設計師 Linus Torvalds 十年前說過的一句原話。


圖片


當時,Linus 正在芬蘭赫爾辛基阿爾托大學舉辦的學生和開發者研討大會上接受采訪。在會上,一位現場觀眾稱其買過一款搭載了集成顯卡以及 NVIDIA 獨立顯卡的筆記本電腦,但是在 Linux 下通過 NVIDIA  Optimus 技術進行獨立顯卡與集成顯卡之間的切換卻得不到驅動的支持(NVIDIA Optimus 是英偉達開發的雙顯卡切換技術,它可以實現筆記本電腦中獨立顯卡與主板內置顯卡之間無縫、自動、實時的切換),并就此詢問 Linus 的想法。就是在這種語境下,Linus 說出了上面那句話,然后轉向攝像機鏡頭豎起了中指并爆了粗口。


圖片


作為開源操作系統 Linux 之父,Linus 一直是開源的忠實擁護者,他一直希望英偉達能夠開源他們的驅動。如今,這一天真的來了。


剛剛,英偉達宣布,他們開源了自己的 GPU 內核驅動模塊,此事在開發者社區引起轟動。


圖片


有人評價說,「這是近十年來開源操作系統硬件支持方面發生的最大事件之一?!?/span>


圖片


還有人戲稱,這是一個「活久見」時刻。


圖片


這次開源使用雙 GPL/MIT 許可,從 R515 驅動程序版本開始。開發者們可以在 GitHub 上的 NVIDIA Open GPU Kernel Modules repo 中找到這些內核模塊的源代碼:https://github.com/NVIDIA/open-gpu-kernel-modules


英偉達表示,此次開源將大幅提升用戶在 Linux 系統中使用英偉達 GPU 的體驗,可使其更緊密地與操作系統集成,有利于開發人員的調試、集成和反饋。對于 Linux 發行版提供商,開源的內核模塊增加了易用性,還改善了開箱即用的用戶體驗,以簽署和分發 NVIDIA GPU 驅動程序。Canonical 和 SUSE 能夠立即將這些開源的內核模塊與 Ubuntu 和 SUSE Linux Enterprise Distributions 打包在一起。

 

開發人員可以跟蹤代碼路徑,了解內核事件調度如何與他們的工作負載交互,以便更快地進行根源調試。此外,企業軟件開發人員現在可以將該驅動無縫集成到為他們的項目定制的 Linux 內核中。這將進一步提高 NVIDIA GPU 驅動的質量和安全性,并得到 Linux 終端用戶社區的反饋。


支持的功能


此次 GPU 內核模塊發布的第一個版本是 R515,除了公布源代碼之外,該版本還提供了驅動程序的完整構建和打包版本。對于 NVIDIA Turing、NVIDIA Ampere 架構系列中的數據中心 GPU 來說,這些代碼可用于生產。這得益于過去一年英偉達分階段推出的 GSP 驅動程序架構,旨在讓英偉達的客戶輕松過渡。研發團隊專注于測試各種工作負載,以確保與專有內核模式驅動程序的功能和性能相同。


未來,HMM 等功能將成為 NVIDIA Hopper 架構上機密計算的基礎組件。


英偉達這次的開源版本對 GeForce 和 Workstation GPU 的支持度很高。GeForce 和 Workstation 用戶可以在 NVIDIA Turing、NVIDIA Ampere 架構 GPU 上使用此驅動程序來運行 Linux 桌面,并在 Vulkan 和 NVIDIA OptiX 中使用多顯示器、G-SYNC 和 NVIDIA RTX 光線追蹤等功能。用戶可以選擇使用文檔中突出顯示的內核模塊參數 NVreg_EnableUnsupportedGpus 。更強大、功能更全的 GeForce 和工作站支持將在后續版本中發布,英偉達開源內核模塊將最終取代閉源驅動程序。

 

擁有 Turing 和 Ampere GPU 的客戶可以自主選擇安裝哪些模塊。而使用 Turing 之前硬件的客戶將繼續運行閉源模塊。


開源內核模式驅動程序使用相同的固件和相同的用戶模式堆棧,例如 CUDA、OpenGL 和 Vulkan。但是,驅動程序堆棧的所有組件都必須與發行版中的版本相匹配。例如,用戶不能使用以前或未來版本的用戶模式堆棧發布源代碼、構建或運行它。


為什么英偉達的開源驅動對 Linux 如此重要?


在英偉達宣布開源后不久,開源解決方案供應商 Red Hat 的桌面高級經理 Christian F.K. Schaller 發表了篇題為《Why is the open source driver release from NVidia so important for Linux?》的博客文章,深入解讀了英偉達此次開源對 Linux 的影響,我們來看看他是怎么說的。


新驅動包含什么?


英偉達此次發布的是源代碼樹外內核驅動程序,該驅動程序經過測試可支持數據中心 GPU 上的 CUDA 用例。其中含有支持顯示的代碼,但尚未完成測試。此外,這只是內核部分,現代圖形驅動程序的很大一部分能夠在固件和用戶空間組件中找到,但它們仍是閉源的。


不過,這次開源確實意味著 NVidia 已經發布了一個能夠使用 Linux 內核中 GPL-only API 的內核驅動程序,盡管這個初始版本不使用舊驅動程序未使用的任何 API。


該驅動程序還僅支持 NVidia Turing 芯片 GPU 及之后的更新版本,這意味著它不能用于 2018 年之前的 GPU。因此,對于大多數 Linux 桌面用戶來說,并不是立即可用。


對于英偉達二進制驅動程序意味著什么?


Turing 芯片之前的英偉達 GPU 將繼續需要英偉達的二進制內核驅動程序。在開源內核模塊經過全面測試和擴展以顯示用例之前,即使用戶使用的是 Turing 之后的 GPU,也可能需要繼續使用該二進制驅動程序。同樣,二進制驅動程序的很大一部分可以在固件和用戶空間中找到。


對于 Nouveau 意味著什么?


Nouveau 是當前英偉達 GPU 的內核內圖形驅動程序。它功能完備,但因不能 re-clock 而無法像二進制驅動程序那樣為用戶提供完整的性能。


Linux 內核不允許同一硬件有多個驅動程序,因此為了讓新的英偉達內核驅動程序進入當前驅動程序,必須退出或至少限制一組不同的硬件,當前驅動程序就是 Nouveau。


就像二進制驅動程序一樣,Nouveau 的很大一部分不在內核中,而是在 Mesa 的用戶空間片段和 NVidia 當前發布的 Nouveau 特定固件中。因此,英偉達會保留 Nouveau 以支持 Turing 之前的硬件。


我們正在努力探索一種能讓英偉達二進制驅動和 Mesa 共享內核驅動程序的方法,這可能需要幾年的時間才能完全實現。我們目前預期推出一種全新的驅動程序,旨在同時滿足英偉達用戶空間和 Mesa 用戶空間的需求。我們也希望在此過程中與英偉達的工程師合作。


綜上所述,對于開源社區來說,這意味著我們將有一個內核驅動程序和固件,允許改變 GPU 時鐘,以提供研究者期望從英偉達顯卡獲得的性能;意味著我們將擁有一個開源驅動程序,從開源第一天起我們就可以訪問新一代英偉達硬件固件和內核更新;意味著我們可以開始使用 Linux 內核中的 GPL-only API。


對于 Fedora、RHEL 等 Linux 發行版意味著什么?


實際上,英偉達的開源 GPU 內核近期并不會對 Fedora、RHEL 等 Linux 發行版產生重大影響。但隨著時間的推移,由于此次開源提供了一種從根本上簡化英偉達硬件支持的途徑。從長遠來看,我們希望能夠在英偉達硬件上獲得與英特爾和 AMD 類似的體驗,即開箱即用的功能。


接下來英偉達會有很多工作要做,他們需要使這個新的驅動程序在計算和圖形顯示應用中更加完整,我們需要做的是,共同努力為未來統一內核驅動程序制定一個計劃,并圍繞該計劃制定一個適用于社區和英偉達的模型,例如添加 Mesa Vulkan 驅動程序之類的東西。


參考鏈接: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/


*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



關鍵詞: AI

相關推薦

技術專區

關閉
么公的又大又深又硬想要,厨房挺进朋友人妻,东北大坑乱全集目录 <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>