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