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

    文章

    4862

    浏览量

    102731
  • 编译器
    +关注

    关注

    1

    文章

    1617

    浏览量

    49021
  • CUDA
    +关注

    关注

    0

    文章

    121

    浏览量

    13587
收藏 人收藏

    评论

    相关推荐

    pcie设备驱动程序安装步骤

    PCIe(Peripheral Component Interconnect Express)是一种高速串行计算机扩展总线标准,用于计算机内部硬件组件之间的连接。安装PCIe设备驱动程序是确保硬件
    的头像 发表于 11-13 10:32 95次阅读

    NVIDIA DOCA-OFED的主要特性

    NVIDIA DOCA 软件平台释放了 NVIDIA BlueField 网络平台的潜力,并为NVIDIA BlueField和ConnectX设备提供了所需的所有主机驱动程序。DOC
    的头像 发表于 11-09 13:50 132次阅读

    模块化插座接线方法有哪些

    模块化插座,也称为模块化电源插座或模块化PDU(Power Distribution Unit),是一种可以根据需要灵活配置电源插座和接口的设备。这种设计允许用户根据具体的用电需求,选择不同的
    的头像 发表于 10-18 09:50 257次阅读

    如何在TMS320DM643x器件使用EDMA3驱动程序

    电子发烧友网站提供《如何在TMS320DM643x器件使用EDMA3驱动程序.pdf》资料免费下载
    发表于 10-15 09:41 0次下载
    如何在TMS320DM643x器件<b class='flag-5'>上</b>使用EDMA3<b class='flag-5'>驱动程序</b>

    Linux设备驱动程序分类有哪些

    Linux设备驱动程序是操作系统与硬件设备之间的桥梁,负责实现硬件设备与操作系统之间的通信和控制。Linux设备驱动程序的分类繁多,可以根据不同的标准进行分类。 按硬件类型分类 Linux设备
    的头像 发表于 08-30 15:11 407次阅读

    linux驱动程序如何加载进内核

    ,需要了解Linux内核的基本概念和API。以下是一些关键概念: 1.1 内核模块:Linux内核模块是一种动态加载和卸载的代码,可以在不重新启动系统的情况下加载和卸载。驱动程序通常以内核模块
    的头像 发表于 08-30 15:02 355次阅读

    linux驱动程序主要有哪些功能

    Linux驱动程序是操作系统与硬件设备之间进行通信的桥梁,负责实现硬件设备与操作系统之间的数据交换和控制。Linux驱动程序的主要功能包括以下几个方面: 设备识别与初始 Linux驱动程序
    的头像 发表于 08-30 14:47 273次阅读

    linux驱动程序的编译方法是什么

    Linux驱动程序的编译方法主要包括两种: 与内核一起编译 和 编译成独立的内核模块 。以下是对这两种方法的介绍: 一、与内核一起编译 与内核一起编译意味着将驱动程序的源代码直接集成到Linux内核
    的头像 发表于 08-30 14:46 374次阅读

    红帽发布RHEL AI开发者预览版,集成IBM Granite模型,简化AI开发流程

    RHEL AI依托InstructLab开源项目,结合IBM Research的开源授权Granite大型语言模型与InstructLab模型对齐工具,采用LAB(Large-scale Alignment for chatBots)方法创建可引导的RHEL镜像,从而
    的头像 发表于 05-08 15:01 452次阅读

    怎么编写Framebuffer驱动程序

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

    什么是模块化机房?

    在这个数据驱动的时代,数据中心的作用变得日益重要。而模块化机房,作为一种创新的数据中心解决方案,正在逐渐改变我们构建和管理这些关键设施的方式。但究竟什么是模块化机房呢?它又为何受到越来越多行业的青睐?在本文中,我们将一探究竟。
    的头像 发表于 03-12 15:05 1345次阅读

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

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

    模块化UPS是什么?模块化UPS电源并机的优点

    模块化UPS是什么?模块化UPS电源并机的优点  模块化UPS是一种将UPS电源拆分为多个独立模块的解决方案。每个模块包括一个或多个电池组、
    的头像 发表于 01-10 15:16 1240次阅读

    XL2515驱动程序

    IO模拟XL2515驱动程序
    发表于 12-11 14:39 25次下载

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

    介绍Linux驱动程序的主要流程和功能。 一、驱动程序的加载和初始 Linux系统在启动过程中,会自动加载已安装的设备驱动程序。加载驱动程序
    的头像 发表于 12-08 14:56 2178次阅读