0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用模块化流简化RHEL 8上的NVIDIA驱动程序部署

星星科技指导员 来源:NVIDIA 作者:Kevin Mittman 2022-04-27 15:27 次阅读

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 ,用于跟踪更新,并且只从该分支获取更新。这些软件包还提供了一个名为 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 驱动程序版本(每个支持的分支)都启用预编译驱动程序。

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 :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

-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

    文章

    4597

    浏览量

    101763
  • 编译器
    +关注

    关注

    1

    文章

    1577

    浏览量

    48632
  • CUDA
    +关注

    关注

    0

    文章

    119

    浏览量

    13462
收藏 人收藏

    评论

    相关推荐

    NVIDIA数字人技术加速部署生成式AI驱动的游戏角色

    NVIDIA 在 GDC 2024 大会上宣布,Inworld AI 等领先的 AI 应用程序开发者,正在使用 NVIDIA 数字人技术加速部署生成式 AI
    的头像 发表于 04-09 10:08 222次阅读
    <b class='flag-5'>NVIDIA</b>数字人技术加速<b class='flag-5'>部署</b>生成式AI<b class='flag-5'>驱动</b>的游戏角色

    怎么编写Framebuffer驱动程序

    Framebuffer 驱动程序框架 分为上下两层: fbmem.c:承上启下 实现、注册 file_operations 结构体 把 APP 的调用向下转发到具体的硬件驱动程序
    的头像 发表于 03-22 09:13 165次阅读
    怎么编写Framebuffer<b class='flag-5'>驱动程序</b>

    NVIDIA显卡驱动下载哪个?NVIDIA显卡驱动下载方法

    关于下载哪个NVIDIA显卡驱动,建议您下载最新版本的官方驱动程序,以确保显卡性能的稳定性和最佳体验。同时,也可以根据您的电脑型号和配置,选择适合您的驱动程序版本。如果您不确定应该下载
    的头像 发表于 03-01 17:11 893次阅读

    ch341a驱动程序无法使用

    随着计算机技术的不断发展,各种外部设备的驱动程序成为了保证硬件正常工作的重要一环。然而,有时我们可能会遇到ch341a驱动程序无法使用的问题。本文将详细解释该问题的原因,并提供详实、细致的解决方法
    的头像 发表于 12-26 14:17 1354次阅读

    linux驱动程序的主要流程和功能

    驱动程序是用于控制和管理硬件设备的软件模块,它主要负责与设备进行交互,通过操作设备的寄存器和接口,实现对硬件的控制和访问。在Linux系统中,驱动程序是实现与硬件设备交互的一个关键部分。本文将详细
    的头像 发表于 12-08 14:56 786次阅读

    Windows驱动程序——07.703.06.00

    电子发烧友网站提供《Windows驱动程序——07.703.06.00.zip》资料免费下载
    发表于 08-28 11:44 0次下载
    Windows<b class='flag-5'>驱动程序</b>——07.703.06.00

    vmware驱动程序

    电子发烧友网站提供《vmware驱动程序.txt》资料免费下载
    发表于 08-24 14:27 0次下载
    vmware<b class='flag-5'>驱动程序</b>

    适用于RHEL 8.0的Emulex驱动程序 版本12.2.360.0

    电子发烧友网站提供《适用于RHEL 8.0的Emulex驱动程序 版本12.2.360.0.pdf》资料免费下载
    发表于 08-22 14:59 0次下载
    适用于<b class='flag-5'>RHEL</b> 8.0的Emulex<b class='flag-5'>驱动程序</b> 版本12.2.360.0

    分享Windows驱动程序

    电子发烧友网站提供《分享Windows驱动程序.zip》资料免费下载
    发表于 08-04 11:46 2次下载
    分享Windows<b class='flag-5'>驱动程序</b>

    适用于Linux的Emulex驱动程序 版本RHEL 7.x 12.6.240.48所有其他发行版12.6.240.45

    电子发烧友网站提供《适用于Linux的Emulex驱动程序 版本RHEL 7.x 12.6.240.48所有其他发行版12.6.240.45.pdf》资料免费下载
    发表于 08-04 09:55 0次下载
    适用于Linux的Emulex<b class='flag-5'>驱动程序</b> 版本<b class='flag-5'>RHEL</b> 7.x 12.6.240.48所有其他发行版12.6.240.45

    Windows驱动程序案例

    电子发烧友网站提供《Windows驱动程序案例.zip》资料免费下载
    发表于 07-28 11:42 0次下载
    Windows<b class='flag-5'>驱动程序</b>案例

    适用于Linux的RoCE驱动程序 RHEL 6和6.5版本 10.2.363.0 SLES 11 SP2和SP3版本10.2.363.0

    电子发烧友网站提供《适用于Linux的RoCE驱动程序 RHEL 6和6.5版本 10.2.363.0 SLES 11 SP2和SP3版本10.2.363.0.pdf》资料免费下载
    发表于 07-27 17:41 1次下载
    适用于Linux的RoCE<b class='flag-5'>驱动程序</b> <b class='flag-5'>RHEL</b> 6和6.5版本 10.2.363.0 SLES 11 SP2和SP3版本10.2.363.0

    Windows驱动程序分享

    电子发烧友网站提供《Windows驱动程序分享.zip》资料免费下载
    发表于 07-26 17:43 0次下载
    Windows<b class='flag-5'>驱动程序</b>分享

    Windows驱动程序

    电子发烧友网站提供《Windows驱动程序.zip》资料免费下载
    发表于 07-26 17:17 0次下载
    Windows<b class='flag-5'>驱动程序</b>

    了解和使用no-OS及平台驱动程序

    快速发展的技术需要软件支持(固件驱动程序和代码示例)来简化设计导入过程。本文介绍如何利用no-OS(无操作系统)驱动程序和平台驱动程序来构建ADI公司精密模数转换器和数模转换器的应用固
    的头像 发表于 06-16 10:30 478次阅读
    了解和使用no-OS及平台<b class='flag-5'>驱动程序</b>