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

    文章

    5496

    浏览量

    109095
  • 编译器
    +关注

    关注

    1

    文章

    1669

    浏览量

    51082
  • CUDA
    +关注

    关注

    0

    文章

    125

    浏览量

    14405
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    摩尔线程发布图形显卡驱动程序v310.120

    8月20日,摩尔线程发布版本号为v310.120的图形显卡驱动程序。本次更新带来多项重大技术升级:新增对Windows 11 24H2版本的正式支持,WDDM驱动同步升级至3.2版本。同时,新
    的头像 发表于 08-21 16:07 959次阅读

    储能变升压一体机:模块化集成设计,赋能高效可靠储能系统

    储能变升压一体机凭借其先进的模块化设计与工厂预制模式,为现代储能电站建设提供了高效、可靠的解决方案,有效缩短了现场施工周期,降低了整体工程成本与复杂度。 核心优势与显著特点 高度集成,快速部署
    的头像 发表于 08-18 10:46 653次阅读
    储能变<b class='flag-5'>流</b>升压一体机:<b class='flag-5'>模块化</b>集成设计,赋能高效可靠储能系统

    为FreeRTOS增加新的设备驱动程序

    如果你正在使用FreeRTOS构建嵌入式系统,并且考虑添加新的设备驱动程序,那么这篇文章很适合你。高效的设备集成不仅仅是让设备功能正常运行——更关乎模块化、可靠性和安全性。
    的头像 发表于 08-06 15:44 746次阅读
    为FreeRTOS增加新的设备<b class='flag-5'>驱动程序</b>

    zephyr设备驱动程序模型

        1:Zephyr 内核支持多种设备驱动程序驱动程序是否可用取决于board 和驱动程序。 Zephyr 设备模型为配置作为系统一部分的驱动程序提供了一致的设备模型。设备型号负
    的头像 发表于 07-29 10:34 463次阅读
    zephyr设备<b class='flag-5'>驱动程序</b>模型

    新品推荐|模块化集成式高速连接器

    LRM连接器随着电子技术的快速发展,在电力传输、工业自动、航空航天等领域,对高效、稳定、可靠的电气连接解决方案的需求日益增长。因此日晟万晟开发了新一代模块化集成式高速连接器-LRM系列,该款连接器
    的头像 发表于 07-07 18:15 983次阅读
    新品推荐|<b class='flag-5'>模块化</b>集成式高速连接器

    Linux环境再升级:PLIN驱动程序正式发布

    PLIN驱动程序现已正式发布,本文将展示如何安装PLIN驱动程序,以及如何在Linux环境下进行基本的PLIN通信操作,确保您能够快速掌握并应用这一新工具。
    的头像 发表于 04-21 15:29 795次阅读
    Linux环境再升级:PLIN<b class='flag-5'>驱动程序</b>正式发布

    NVIDIA Omniverse Kit 107的安装部署步骤

    NVIDIA Omniverse 是一个模块化平台,使用高级 API 和微服务来构建由 OpenUSD 和 NVIDIA RTX 提供支持的 3D 应用。OpenUSD 功能强大的 3D 框架与
    的头像 发表于 03-28 10:37 1152次阅读
    <b class='flag-5'>NVIDIA</b> Omniverse Kit 107的安装<b class='flag-5'>部署</b>步骤

    AN3761-KSZ DSA驱动程序的使用

    电子发烧友网站提供《AN3761-KSZ DSA驱动程序的使用.pdf》资料免费下载
    发表于 01-22 16:28 0次下载
    AN3761-KSZ DSA<b class='flag-5'>驱动程序</b>的使用

    适用于MySQL的dbExpress驱动程序:提供对MySQL的快速访问

    处理查询和存储过程的接口。提供高性能数据库连接,并且更易于部署。 您可以按照与 Embarcadero 提供的驱动程序相同的方式使用我们的驱动程序。 Delphi 和 C++ Builder 的跨平台解决方
    的头像 发表于 01-21 09:52 668次阅读

    适用于Oracle的ODBC驱动程序

    和 Linux 符合 ODBC 标准的报告、分析、BI 和 ETL 工具访问 Oracle 数据库。我们的 ODBC 驱动程序完全支持标准 ODBC API 功能和数据类型,并支持从任何地方轻松
    的头像 发表于 01-13 09:17 852次阅读

    适用于Oracle的dbExpress驱动程序

    处理查询和存储过程的接口。由于数据访问层是 dbExpress 轻薄而简单,提供高性能数据库连接,并且 易于部署。您可以按照与 Embarcadero 提供的驱动程序相同的方式使用我们的驱动程序。 d
    的头像 发表于 01-09 16:04 686次阅读
    适用于Oracle的dbExpress<b class='flag-5'>驱动程序</b>

    原理图模块化,BOM 物料位号处理

    原理图模块化,BOM 物料位号的处理问题 原理图模块化,把常用的模块保存成一个PART(在TOOL 菜单下 选择 Generate Part)。保存成OLB格式。使用的时候,就像使用元器件一样,从
    发表于 01-03 08:22

    DRV8601ZQVEVM ERM/LRA驱动程序评估模块

    电子发烧友网站提供《DRV8601ZQVEVM ERM/LRA驱动程序评估模块.pdf》资料免费下载
    发表于 12-23 15:04 0次下载
    DRV8601ZQVEVM ERM/LRA<b class='flag-5'>驱动程序</b>评估<b class='flag-5'>模块</b>

    USB音频过滤器驱动程序安装

    电子发烧友网站提供《USB音频过滤器驱动程序安装.pdf》资料免费下载
    发表于 12-19 14:28 0次下载
    USB音频过滤器<b class='flag-5'>驱动程序</b>安装

    模块化示波器的技术原理和应用

    模块化示波器是一种用于信息科学与系统科学领域的电子测量仪器,以下是对其技术原理及应用的详细阐述:一、技术原理 信号转换与显示: 模块化示波器利用电子示波管的特性,将肉眼无法直接观测的交变电
    发表于 12-11 14:20