NVIDIA GPUs 已成為加速機器學習、高性能計算( HPC )、內容創建工作流和數據中心應用程序等多種工作負載的主流。對于這些企業用例, NVIDIA 提供了一個由 CUDA 平臺支持的軟件堆棧:驅動程序、 CUDA -X 加速庫、 CUDA – 優化的應用程序和框架。
部署 NVIDIA 驅動程序是建立 GPU 加速集群以使用 CUDA 的一個基本方面。在過去, NVIDIA 驅動程序的安裝或升級都需要一個完整的軟件開發環境,比如編譯器工具鏈和內核頭文件,在每個 GPU 節點上。企業用戶還希望使用經過測試的 NVIDIA 驅動程序和 Linux 內核組合的組合,以獲得穩定性,并能夠在特定的驅動程序分支上運行,這些分支可能具有不同的生命周期。
在這篇文章中,我將介紹如何在 Red Hat Enterprise Linux ( RHEL ) 8 上打包 NVIDIA 驅動程序,以改進安裝和升級驅動程序的體驗。這項工作提供了幾個好處 – 包括提高可靠性、安全性和可選擇性。為此,請使用 RHEL8 和預編譯內核模塊( kmod )包中提供的模塊化流。
DNF 模塊化
使用 模塊化 , CUDA 存儲庫為驅動程序包提供多個更新流。只考慮對所選流的更新。您可以選擇跟上最新和最新版本,或鎖定到特定的驅動程序分支,例如,主版本等于“ 450 ”的驅動程序。
這個新機制允許您根據您的用例切換到不同的流。您可以從多個 NVIDIA GPU 驅動程序分支中選擇一個,這些分支可從單個 RPM 存儲庫遵循。一些 NVIDIA 驅動程序 用于 NVIDIA 數據中心 GPUs ,與其他驅動程序分支相比,它們的使用壽命可能更長。企業用戶可能出于穩定性的原因選擇留在特定的驅動程序分支上,而其他用戶可能希望跟蹤其他分支以訪問新功能。
圖 1 可用 NVIDIA 驅動模塊流列表。
您可以選擇一個特定的驅動程序分支,例如 R418 ,用于跟蹤更新,并且只從該分支獲取更新。這些軟件包還提供了一個名為 latest 和 latest-dkms 的虛擬分支,在每個時間點跟蹤最新的 NVIDIA 驅動程序。默認為分支 latest-dkms 。其他的分支是可選的,并且可以在不需要重新安裝 CUDA 工具箱的情況下切換分支。
使用預編譯驅動程序
對于受支持的 Red Hat Enterprise Linux 8 .x 內核版本(請參閱下面的支持列表),提供了實現 DKMS 公司 替代方案的驅動程序包。無需啟用 EPEL 存儲庫 。這些驅動程序 kmod 包的源文件是預先編譯的,然后在安裝時鏈接,因此這些文件被稱為“預編譯驅動程序”
新方法不需要安裝 gcc 編譯器,從而減少了攻擊面,加快了內核和/或驅動程序更新的啟動時間。使用這些預編譯的 kmod 包提供了更大的穩定性,因為 NVIDIA 驅動程序版本和內核版本字符串組合已經過預測試。告別黑屏(運行級別 3 ),向可預測的用戶體驗問好,驅動程序安裝不再依賴于 kernel-devel 和 kernel-headers 軟件包。
當發布新的驅動程序更新時,只為驅動程序更新時最新發布的內核提供預編譯的驅動程序包。同樣,如果發布了新的內核更新,則會為該內核提供預編譯的驅動程序包。另一種說法是,在任何時候,對最新的 RHEL 內核和最新的 NVIDIA 驅動程序版本(每個支持的分支)都啟用預編譯驅動程序。
圖 2 在預編譯包列表中突出顯示了 450 RPM 的程序包。
使用預編譯驅動程序時, dnf 包管理器的插件將被啟用,用于清除過時的。 ko 文件。為了防止系統崩潰, NVIDIA dnf 插件 還防止升級到尚未存在預編譯驅動程序的內核。這可能會延遲安全修復的應用,但確保始終使用經過測試的內核和驅動程序組合。
使用包管理器安裝
下面是如何開始在 RHEL8 上使用新的驅動程序包。首先,確保已啟用 Red Hat 存儲庫,包括 RHEL8 AppStream 、 RHEL8 BaseOS 和 RHEL8 CRB :v
$ subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms $ subscription-manager repos --enable=rhel-8-for-x86_64-baseos-rpms $ subscription-manager repos --enable=codeready-builder-for-rhel-8-x86_64-rpms
添加 CUDA 網絡存儲庫:
$ sudo dnf config-manager --add-repo=https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo
安裝最新的流以選擇進入預編譯包:
$ sudo dnf module install nvidia-driver:latest
選擇模塊化流
為了提高靈活性,預編譯和 DKMS 變體中都有幾個流可用(表 1 )。
最新選項始終更新到最高版本的驅動程序(預編譯):
$ sudo dnf module install nvidia-driver:latest
選項將驅動程序更新鎖定到指定的驅動程序分支(預編譯)。將
替換為適當的驅動程序分支流,例如 455 、 450 、 440 或 418 。
$ sudo dnf module install nvidia-driver:
latest-dkms
選項總是更新到最高版本的驅動程序(非預編譯)。這是默認流。
$ sudo dnf module install nvidia-driver:latest-dkms
選項將驅動程序更新鎖定到指定的驅動程序分支(非預編譯),例如 455 dkms 、 450 dkms 、 440 dkms 或 418 dkms 。
$ sudo dnf module install nvidia-driver:-dkms
交換流
要切換到另一個流,請先刪除驅動程序包:
$ sudo dnf remove nvidia-driver
然后,重置模塊流:
$ sudo dnf module reset nvidia-driver
現在可以從適當的流安裝驅動程序。
使用模塊化配置文件
模塊化概要文件與任何支持的模塊化流一起工作,并允許附加的用例(表 2 )。
現在,您可以使用dnf
命令指定流和配置文件:
$ sudo dnf module install nvidia-driver:/
/default
選項在流中安裝所有驅動程序包(可傳遞閉包):
$ sudo dnf module install nvidia-driver:latest/default
/ks
選項用于無人值守的 Linux 操作系統安裝,使用的是不安裝cuda-drivers
元包的cuda-drivers
配置文件。該元包嘗試刪除舊的驅動程序運行文件安裝。
%packages @^Minimal Install @nvidia-driver:latest-dkms/ks %end
/fm
選項安裝用于引導 NVSwitch 的其他軟件包,包括 Fabric Manager 和 NSCQ (用于交換機遙測):
$ sudo dnf module install nvidia-driver:450/fm
RHEL 支持矩陣
目前,這些包改進僅支持 x86 _ 64 體系結構上的 RHEL 8 。 2 (及更高版本)。 NVIDIA 只為最新的官方 RHEL 內核提供預編譯驅動程序包,例如 4 。 18 。 0-193 。 19 。 1 及更高版本。如果使用早期內核,請更新以開始接收預編譯的驅動程序包。沒有為 幾何學 內核提供預編譯驅動程序。
表 3 顯示了根據 NVIDIA 驅動程序生命周期策略 支持的分支。
新的 kmod 包通常在新的 RHEL 內核更新后 24 小時內可用。
為了防止系統崩潰,dnf
插件會在內核上線和 kmod 包可用性之間阻止內核更新。在升級過程中,dnf
會顯示一條警告:
NOTE: Skipping kernel installation since no NVIDIA driver kernel module package kmod-nvidia-${driver}-${kernel} ... could be found
摘要
在 RHEL8 上部署 NVIDIA 驅動程序是使用預編譯內核模塊包和模塊化流的更好的體驗。新的驅動程序包在 CUDA 存儲庫 中提供,所以您可以從今天開始。
GitHub 上提供了打包模板和說明,允許您為自定義內核和衍生 Linux 發行版維護自己的預編譯內核模塊包:
NVIDIA / yum 打包預編譯 kmod
NVIDIA / yum 打包 -NVIDIA – 插件
關于作者
Kevin Mittman 是一個 GNU / Linux 愛好者,對自動化有著濃厚的熱情。他是 NVIDIA 的系統軟件工程師,專注于 CUDA 、 NVIDIA 驅動程序和其他 CUDA -X 產品的安裝程序打包和發布過程。在加入 NVIDIA 之前, Kevin 在開源社區開始了他的職業生涯。
審核編輯:郭婷
-
NVIDIA
+關注
關注
14文章
5075瀏覽量
103555 -
編譯器
+關注
關注
1文章
1642瀏覽量
49246 -
CUDA
+關注
關注
0文章
121瀏覽量
13657
發布評論請先 登錄
相關推薦
評論