借助 R515 驅動程序,NVIDIA 于 2022 年 5 月發布了一套開源的 Linux GPU 內核模塊,該模塊采用雙許可證,即 GPL 和 MIT 許可。初始版本主要面向數據中心計算 GPU,而 GeForce 和工作站 GPU 則處于 Alpha 狀態。
當時,我們宣布,在后續版本中將提供更可靠、功能齊全的 GeForce 和工作站 Linux 支持,NVIDIA 開放內核模塊最終將取代閉源驅動。
NVIDIA GPU 共享一個通用的驅動程序架構和功能集。您的臺式機或筆記本電腦所使用的相同驅動程序能夠在云端運行世界上最先進的 AI 工作負載,對我們來說,把它做到恰到好處一直都極其重要。
兩年過去了,我們利用開源的 GPU 內核模塊實現了與原來的應用程序性能相當或更好的性能,并添加了大量新的功能。
異構內存管理 (HMM) 支持
機密計算
Grace 平臺的連貫內存架構
其他功能
現在,我們處于完全過渡到開源 GPU 內核模塊的時刻。在即將發布的 R560 驅動版本中,我們將作出這一改動。
支持的 GPU
并不是每個 GPU 都能與開源 GPU 內核模塊兼容。
對于 NVIDIA Grace Hopper 或 NVIDIA Blackwell 等尖端平臺,您必須使用開源的 GPU 內核模塊,因為這些平臺不支持專有的驅動程序。
對于來自 Turing、Ampere、Ada Lovelace 或 Hopper 架構的較新 GPU,NVIDIA 建議將其切換到開源的 GPU 內核模塊。
對于 Maxwell、Pascal 或 Volta 架構中的舊版 GPU,其開源 GPU 內核模塊不兼容您的平臺。因此,請繼續使用 NVIDIA 專有驅動。
對于在同一系統中使用較舊和較新的 GPU 的混合部署,請繼續使用專有驅動程序。
如果您不確定,NVIDIA 提供了一種新的檢測輔助腳本的方式,以幫助指導您選擇合適的驅動程序。有關更多信息,請參閱本文后面的使用安裝輔助腳本部分。
安裝程序更改
通常情況下,通過各種安裝方法安裝的驅動程序默認版本正在從專有驅動程序切換到開源驅動程序。這有一些特定情況值得特別注意:
具有 CUDA 元軟件包的軟件包管理器
運行文件
安裝輔助腳本
軟件包管理器詳細信息
適用于 Linux 的 Windows 子系統
CUDA 工具包
將軟件包管理器與 CUDA 元軟件包結合使用
當您使用包管理器(而非 .run 文件)安裝 CUDA 工具包時,安裝元包是存在并常用的。通過安裝頂級 cuda 軟件包,您將安裝 CUDA 工具包和相關驅動版本的組合。例如,在 CUDA 12.5 發布時間范圍內安裝 cuda 時,您將獲得專有的 NVIDIA 驅動 555 以及 CUDA 工具包 12.5。
圖 1 顯示此軟件包結構。
圖 1. CUDA 工具包 12.6 之前的 CUDA 軟件包
以前,使用開源 GPU 內核模塊意味著您可以使用頂級元軟件包。這意味著您需要安裝發行版特定的 NVIDIA 驅動開放軟件包,同時還需要安裝您選擇的 cuda-toolkit-X-Y 軟件包。
從 CUDA 12.6 版本開始,流的位置將有效切換(圖 2)。
圖 2. CUDA 工具包 12.6 版本發布后的 CUDA 軟件包
使用運行文件
如果您使用 .run 文件安裝 CUDA 或 NVIDIA 驅動,安裝程序將查詢您的硬件,并自動安裝最適合您系統的驅動。此外,您還可以使用 UI 開關來選擇專有驅動或開源驅動。
如果您通過 CUDA .run 文件并使用 ncurses 用戶界面進行安裝,現在將看到一個類似于以下內容的菜單:
CUDA Driver [ ] Do not install any of the OpenGL-related driver files [ ] Do not install the nvidia-drm kernel module [ ] Update the system X config file to use the NVIDIA X driver - [X] Override kernel module type [X] proprietary [ ] open Change directory containing the kernel source files Change kernel object output directory Done Up/Down: Move | Left/Right: Expand | 'Enter': Select | 'A': Advanced options
如果您通過驅動 .run 文件進行安裝,將看到類似的選擇(圖 3)。
圖 3. 新的運行文件交互式選擇(驅動安裝程序)
如果您使用 Ansible 等自動化工具,也可以使用命令行傳遞 overrides,以在不使用用戶界面的情況下進行安裝。
# sh ./cuda_12.6.0_560.22_linux.run --override --kernel-module-type=proprietary # sh ./NVIDIA-Linux-x86_64-560.run --kernel-module-type=proprietary
使用安裝輔助腳本
如前所述,如果您不確定為系統中的 GPU 選擇哪種驅動程序,NVIDIA 創建了一個輔助腳本,以指導您完成驅動程序的選擇過程。
要使用它,請首先使用包管理器安裝nvidia-driver-assistant包,然后運行該腳本。
$ nvidia-driver-assistant
軟件包管理器詳細信息
為了獲得一致的體驗,NVIDIA 建議您使用包管理器來安裝 CUDA Toolkit 和驅動程序。但是,不同發行版使用哪些包管理系統或包的結構方式的具體細節可能因您的特定發行版而異。
本節概述了各種平臺所需的具體細節、注意事項和遷移步驟。
apt: 基于 Ubuntu 和 Debian 的發行版
運行以下命令:
$ sudo apt-get install nvidia-open
要在 Ubuntu 20.04 上使用 cuda 元軟件包進行升級,請先切換到開啟的內核模塊。
$ sudo apt-get install -V nvidia-kernel-source-open $ sudo apt-get install nvidia-open
dnf: Red Hat Enterprise Linux、Fedora、Kylin、Amazon Linux 或 Rocky Linux
運行以下命令:
$ sudo dnf module install nvidia-driver:open-dkms
要在基于 DNF 的發行版上使用 cuda 元軟件包進行升級,必須首先禁用模塊流。
$ echo "module_hotfixes=1" | tee -a /etc/yum.repos.d/cuda*.repo $ sudo dnf install --allowerasing nvidia-open $ sudo dnf module reset nvidia-driver
zypper: SUSE Linux Enterprise Server 或 OpenSUSE
運行以下命令之一:
# default kernel flavor $ sudo zypper install nvidia-open # azure kernel flavor (sles15/x86_64) $ sudo zypper install nvidia-open-azure # 64kb kernel flavor (sles15/sbsa) required for Grace-Hopper $ sudo zypper install nvidia-open-64k
軟件包管理器摘要
為簡化起見,我們已將包管理器建議壓縮為表格格式。從驅動版本 560 和 CUDA 工具包 12.6 開始的所有版本都將使用這些打包規范。
表 1. 軟件包管理器安裝建議
有關更多信息,請參閱 NVIDIA 數據中心驅動:
https://docs.nvidia.com/datacenter/tesla/drivers/index.html
適用于 Linux 的 Windows 子系統
適用于 Linux 的 Windows 子系統(WSL)使用來自主機 Windows 操作系統的 NVIDIA 內核驅動程序。因此,您不應該專門為此平臺安裝任何驅動程序。如果您使用的是 WSL,則無需進行任何更改或操作。
CUDA 工具包
通過軟件包管理器,CUDA 工具包的安裝保持不變。請運行以下命令:
$ sudo apt-get/dnf/zypper install cuda-toolkit
更多信息
如需詳細了解如何安裝 NVIDIA 驅動程序或 CUDA 工具包,包括如果此時無法遷移到開源 GPU 內核模塊,如何確保安裝專有驅動程序,請參閱《CUDA 安裝指南》中的驅動程序安裝部分。
-
NVIDIA
+關注
關注
14文章
5076瀏覽量
103723 -
gpu
+關注
關注
28文章
4775瀏覽量
129357 -
Linux
+關注
關注
87文章
11345瀏覽量
210396
原文標題:NVIDIA 全面轉向開源 GPU 內核模塊
文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業解決方案】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
Linux 內核模塊工作原理及內核模塊編譯案例
![Linux <b class='flag-5'>內核模塊</b>工作原理及<b class='flag-5'>內核模塊</b>編譯案例](https://file.elecfans.com/web1/M00/C7/3B/o4YBAF9qpsyACZgaAABwEWXfsvI775.png)
Linux內核模塊間通訊方法
![Linux<b class='flag-5'>內核模塊</b>間通訊方法](https://file1.elecfans.com/web2/M00/89/4E/wKgaomSAQsyAOh-6AADd7_xq52A238.png)
錯誤:無法加載內核模塊'nvidia.ko'
什么是內核模塊?如何編寫一個簡單的模塊?
如何在Petalinux創建Linux內核模塊?
嵌入式LINUX系統內核和內核模塊調試
![嵌入式LINUX系統<b class='flag-5'>內核</b>和<b class='flag-5'>內核模塊</b>調試](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論