• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • 高性能計算

    使用模塊化流簡化 RHEL 8 上的 NVIDIA 驅動程序部署

    ?

    NVIDIA GPUs 已成為加速機器學習、高性能計算( HPC )、內容創建工作流和數據中心應用程序等多種工作負載的主流。對于這些企業用例, NVIDIA 提供了一個由 CUDA 平臺支持的軟件堆棧:驅動程序、 CUDA -X 加速庫、 CUDA – 優化的應用程序和框架。

    Blank terminal screen

    部署 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 ,與其他驅動程序分支相比,它們的使用壽命可能更長。企業用戶可能出于穩定性的原因選擇留在特定的驅動程序分支上,而其他用戶可能希望跟蹤其他分支以訪問新功能。

    The terminal output of `sudo dnf module list nvidia-driver`.
    圖 1 。可用 NVIDIA 驅動模塊流列表。

    您可以選擇一個特定的驅動程序分支,例如 R418 ,用于跟蹤更新,并且只從該分支獲取更新。這些軟件包還提供了一個名為 latestlatest-dkms 的虛擬分支,在每個時間點跟蹤最新的 NVIDIA 驅動程序。默認為分支 latest-dkms 。其他的分支是可選的,并且可以在不需要重新安裝 CUDA 工具箱的情況下切換分支。

    使用預編譯驅動程序

    對于受支持的 Red Hat Enterprise Linux 8 . x 內核版本(請參閱下面的支持列表),提供了實現 DKMS 公司 替代方案的驅動程序包。無需啟用 EPEL 存儲庫 。這些驅動程序 kmod 包的源文件是預先編譯的,然后在安裝時鏈接,因此這些文件被稱為“預編譯驅動程序”

    新方法不需要安裝 gcc 編譯器,從而減少了攻擊面,加快了內核和/或驅動程序更新的啟動時間。使用這些預編譯的 kmod 包提供了更大的穩定性,因為 NVIDIA 驅動程序版本和內核版本字符串組合已經過預測試。告別黑屏(運行級別 3 ),向可預測的用戶體驗問好,驅動程序安裝不再依賴于 kernel-develkernel-headers 軟件包。

    當發布新的驅動程序更新時,只為驅動程序更新時最新發布的內核提供預編譯的驅動程序包。同樣,如果發布了新的內核更新,則會為該內核提供預編譯的驅動程序包。另一種說法是,在任何時候,對最新的 RHEL 內核和最新的 NVIDIA 驅動程序版本(每個支持的分支)都啟用預編譯驅動程序。

    The terminal output of `sudo dnf module info nvidia-driver:450.
    圖 2 。在預編譯包列表中突出顯示了 450 RPM 的程序包。

    使用預編譯驅動程序時, dnf 包管理器的插件將被啟用,用于清除過時的. ko 文件。為了防止系統崩潰, NVIDIA dnf 插件 還防止升級到尚未存在預編譯驅動程序的內核。這可能會延遲安全修復的應用,但確保始終使用經過測試的內核和驅動程序組合。

    使用包管理器安裝

    下面是如何開始在 RHEL8 上使用新的驅動程序包。首先,確保已啟用 Red Hat 存儲庫,包括 RHEL8 AppStream 、 RHEL8 BaseOS 和 RHEL8 CRB :

    $ 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 )。

    NVIDIA driver Precompiled stream Legacy DKMS stream
    Highest version latest latest-dkms
    Locked @ 455.x 455 455-dkms
    Locked @ 450.x 450 450-dkms
    Locked @ 440.x 440 440-dkms
    Locked @ 418.x 418 418-dkms
    表 1 。 NVIDIA 可用驅動模塊流列表。

    最新選項始終更新到最高版本的驅動程序(預編譯):

    $ sudo dnf module install nvidia-driver:latest

    <id> 選項將驅動程序更新鎖定到指定的驅動程序分支(預編譯)。將 <id> 替換為適當的驅動程序分支流,例如 455 、 450 、 440 或 418 。

    $ sudo dnf module install nvidia-driver:<id>

    latest-dkms 選項總是更新到最高版本的驅動程序(非預編譯)。這是默認流。

    $ sudo dnf module install nvidia-driver:latest-dkms

    <id>-dkms 選項將驅動程序更新鎖定到指定的驅動程序分支(非預編譯),例如 455 dkms 、 450 dkms 、 440 dkms 或 418 dkms 。

    $ sudo dnf module install nvidia-driver:<id>-dkms

    交換流

    要切換到另一個流,請先刪除驅動程序包:

     $ sudo dnf remove nvidia-driver

    然后,重置模塊流:

     $ sudo dnf module reset nvidia-driver

    現在可以從適當的流安裝驅動程序。

    使用模塊化配置文件

    模塊化概要文件與任何支持的模塊化流一起工作,并允許附加的用例(表 2 )。

    Stream Profile Use case
    Default /default Installs all the driver packages in a stream.
    Kickstart /ks Performs unattended Linux OS installation using a config file.
    NVSwitch Fabric /fm Installs all the driver packages
    plus components required for bootstrapping an NVSwitch system
    (including the Fabric Manager and NSCQ telemetry).
    表 2 。 NVIDIA 可用驅動模塊配置文件列表。

    現在,您可以使用 dnf 命令指定流和配置文件:

     $ sudo dnf module install nvidia-driver:<stream>/<profile>

    /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 驅動程序生命周期策略 支持的分支。

    Driver Branch Branch Designation End of Life
    418 Long Term Service March 2022
    440 New Feature November 2020
    450 Long Term Service July 2023
    455 Developer 460 availability
    表 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 開發者計劃

    ?

    0

    標簽

    人人超碰97caoporen国产