NVIDIA 数据中心驱动程序

本文档概述了 NVIDIA® 数据中心产品的驱动程序。

1. 简介

NVIDIA 计算软件“堆栈”由系统软件或基础设施中的各种软件产品组成,这些产品是使用 NVIDIA GPU 引导系统并能够运行加速的 AI 或 HPC 工作负载所必需的。下面显示了 CUDA 和相关组件的软件架构图,供参考。

Overview of CUDA Toolkit and Associated Products

图 1 CUDA 工具包和相关产品概述

虽然 NVIDIA 提供了非常丰富的软件平台,包括 SDK、框架和应用程序,但本文档的重点是驱动程序、CUDA 工具包和深度学习库。

2. 驱动程序生命周期

2.1. 驱动程序分支

从 2019 年开始,NVIDIA 为数据中心 GPU 驱动程序引入了新的企业软件生命周期。

2.1.1. 新功能分支

主要功能版本,由新的 X 分支号表示。 这主要面向希望评估新功能的早期采用者(例如,新的 CUDA API)。 请注意,在某些情况下,这些驱动程序也可能与 CUDA 工具包安装程序包一起发布。

发布节奏:新的驱动程序分支大约每季度发布一次。

2.1.2. 生产分支

该分支符合在企业/数据中心 GPU 的生产环境中使用。 错误修复和安全更新最多提供 1 年。

发布节奏:每年发布两个驱动程序分支(大约每六个月一次)

请注意,在生产分支的生命周期内,每季度都会发布错误修复和安全更新。

2.1.3. 长期支持分支

长期支持分支是一个生产分支,它将比普通生产分支获得更长时间的支持和维护。 每个 LTSB 都是一个生产分支,但并非每个生产分支都是 LTSB。

寻求已部署分支更长支持周期的客户将通过 LTSB 版本获得该支持。 LTSB 版本将在其支持的 3 年内,通过小版本发布,在合理的努力基础上接收错误更新和关键安全更新。

Taxonomy of NVIDIA Driver Branches

图 2 NVIDIA 驱动程序分支分类(仅用于说明目的 – 请参阅下面的注释)

2.2. 驱动程序分支比较

下表总结了各种驱动程序分支之间的差异。

表 1 NVIDIA 驱动程序分支

新功能分支 (NFB)

生产分支 (PB)

长期支持分支 (LTSB)

目标客户

希望评估新功能的早期采用者

在企业/数据中心 GPU 的生产环境中使用

在企业/数据中心 GPU 的生产环境中使用,以及为寻求更长支持周期的客户使用。

主要发布节奏

至少每 3 个月一次

每年两次*

至少每个硬件架构一次*

支持时长

不适用

1 年

3 年

小版本发布(错误更新和关键安全更新)

不适用

是。 每季度发布错误和安全更新,为期 1 年

是。 每季度发布错误和安全更新,为期 1 年

  • 仅为一般指导。 实际的安全更新和发布节奏可能会根据 NVIDIA 的决定而变化。

3. 支持的驱动程序和 CUDA 工具包版本

NVIDIA 以不同的节奏发布 CUDA 工具包和 GPU 驱动程序。 NVIDIA 数据中心 GPU 驱动程序软件生命周期和术语可在本文档的生命周期部分找到。

发布信息可以通过自动化工具(例如 jq)进行抓取,方法是解析发布信息:releases.json

下表列出了 CUDA 工具包和 NVIDIA 数据中心驱动程序的当前支持矩阵。

表 2 CUDA 和驱动程序

R470

R535

R550

R570

分支指定

长期支持分支

长期支持分支

生产分支

生产分支

生命周期结束

2024 年 7 月

2026 年 6 月

2025 年 2 月

2026 年 2 月

最大支持的 CUDA 版本

CUDA 11.0+

此驱动程序分支支持 CUDA 11.x(通过 CUDA 小版本兼容性)

CUDA 12.0+

此驱动程序分支支持 CUDA 12.x(通过 CUDA 小版本兼容性)

CUDA 12.0+

此驱动程序分支支持 CUDA 12.x(通过 CUDA 小版本兼容性)

CUDA 12.0+

此驱动程序分支支持 CUDA 12.x(通过 CUDA 小版本兼容性)

注意:上表未列出的所有其他先前驱动程序分支(例如 R525、R515、R510、R495、R465、R460、R455、R450、R440、R418、R410)均已终止生命周期。

4. 软件部署工作流程

CUDA 软件环境由三个部分组成

  • CUDA 工具包(库、运行时和工具)- 用于构建 CUDA 应用程序的用户模式 SDK

  • CUDA 驱动程序 - 用于运行 CUDA 应用程序的用户模式驱动程序组件(例如,Linux 系统上的 libcuda.so

  • NVIDIA GPU 设备驱动程序 - NVIDIA GPU 的内核模式驱动程序组件

在 Linux 系统上,CUDA 驱动程序和内核模式组件在 NVIDIA 显示驱动程序包中一起交付。 如下图所示。

NVIDIA CUDA

图 3 NVIDIA CUDA

当 GPU 节点仅用于运行应用程序(而不是开发应用程序)时,CUDA 工具包通常是可选的,因为 CUDA 应用程序通常打包(通过静态或动态链接)所需的 CUDA 运行时和库。

4.1. 典型工作流程

在集群中引导 GPU 节点的典型建议工作流程

  1. 安装 NVIDIA 驱动程序(不要安装 CUDA 工具包,因为它会引入可能不必要或不需要的额外依赖项)

  2. 使用元包安装 CUDA 工具包。 这提供了对系统上安装内容的额外控制。

  3. 根据应用程序要求和依赖项,根据需要安装其他组件,例如 cuDNN 或 TensorRT。

4.2. 数据中心驱动程序安装

注意

本节的完整内容可在以下网址获得:https://docs.nvda.net.cn/datacenter/tesla/driver-installation-guide/index.html

NVIDIA 驱动程序有三种格式可用于 Linux 发行版

NVIDIA 为驱动程序提供特定于 Linux 发行版的软件包,客户可以使用这些软件包将驱动程序部署到生产环境中。 上面的链接提供了有关如何为受支持的 Linux 发行版安装驱动程序包的详细信息和步骤,但下面提供了一个摘要。

4.2.1. 使用包管理器安装

使用包管理器是安装驱动程序的推荐方法,因为这提供了对驱动程序分支的选择、预编译内核模块、驱动程序升级以及其他依赖项(例如 NVSwitch 系统的 Fabric Manager/NSCQ)的额外控制。

在 Ubuntu LTS 上

sudo apt-get -y install cuda-drivers-<branch-number>

其中 branch-number = 感兴趣的特定数据中心分支(例如,570)。

在 RHEL 8 上

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

例如,nvidia-driver:latest-dkms/fm 将安装最新的驱动程序,并安装 Fabric Manager 依赖项以引导 NVSwitch 系统,例如 HGX A100。

有关受支持的流/配置文件的更多信息,请参阅文档中的本节

4.3. CUDA 工具包安装

CUDA 工具包包是模块化的,并允许用户控制在系统上安装 CUDA 工具包的哪些组件。 CUDA 支持许多元包,这些元包在此处描述。

由于 cudacuda-<release> 包也安装驱动程序,因此这些包可能不适合数据中心部署。

相反,应使用其他包,例如 cuda-toolkit-<release>,因为此包不依赖于驱动程序。 以下示例仅安装 CUDA 工具包 12.8 包,而不安装驱动程序。

sudo apt-get -y install cuda-toolkit-12-8

4.4. cuDNN 安装

NVIDIA cuDNN 也可以使用 Linux 包管理器从 CUDA 网络存储库安装,方法是使用 libcudnnlibcudnn-dev 包。 下面显示了一个示例

Ubuntu LTS

CUDNN_VERSION=8.1.1.33 \
&& sudo apt-get -y install \
libcudnn8=$CUDNN_VERSION-1+cuda11.2 libcudnn8-dev=$CUDNN_VERSION-1+cuda11.2

5. CUDA 工具包、驱动程序和架构矩阵

CUDA 驱动程序提供向后兼容的 API。 因此,新的 NVIDIA 驱动程序始终适用于(使用旧版 CUDA 工具包编译的)应用程序。 CUDA 的这种行为在此处记录。 然而,每个 CUDA 工具包都需要最低版本的 NVIDIA 驱动程序。 同样,当使用 nvidia-smi 等工具时,NVIDIA 驱动程序会报告支持的最大 CUDA 版本,因此能够运行使用 CUDA 工具包构建的应用程序,直到该版本。

在 CUDA 工具包的产品生命周期内,CUDA 工具包和驱动程序也可能弃用并停止对 GPU 架构的支持。 请参阅 CUDA 编译器 (nvcc) 工具链文档中的 -arch-gencode 选项。

表 3 CUDA 和架构矩阵

架构

CUDA 功能

首次 CUDA 工具包支持

最后 CUDA 工具包支持

最后驱动程序支持

Fermi

Kepler

2.0

3.0

3.2

CUDA 3.0

CUDA 6.0

CUDA 8.0

CUDA 10.2

R390

R47

Kepler

3.5

3.7

CUDA 6.0

CUDA 11.x

R470

Maxwell

5.0

5.2

5.3

CUDA 6.5

持续支持

持续支持

Pascal

6.0

6.1

CUDA 8.0

持续支持

持续支持

Volta

7.0

CUDA 9.0

持续支持

持续支持

Turing

7.5

CUDA 10.0

持续支持

持续支持

NVIDIA Ampere 架构

8.0

8.6

CUDA 11.0

持续支持

持续支持

Ada

8.9

CUDA 11.8

持续支持

持续支持

Hopper

9.0

CUDA 11.8 CUDA 12.0

持续支持

持续支持

6. 通知

6.1. 通知

本文档仅供参考,不应被视为对产品的特定功能、条件或质量的保证。 NVIDIA Corporation(“NVIDIA”)对本文档中包含信息的准确性或完整性不作任何明示或暗示的陈述或保证,并且对本文档中包含的任何错误不承担任何责任。 NVIDIA 对因使用此类信息或因使用此类信息而可能导致的任何专利或第三方其他权利的侵犯不承担任何责任。 本文档不承诺开发、发布或交付任何材料(如下定义)、代码或功能。

NVIDIA 保留随时对此文档进行更正、修改、增强、改进和任何其他更改的权利,恕不另行通知。

客户在下订单前应获取最新的相关信息,并应验证此类信息是否为最新和完整。

NVIDIA 产品的销售受订单确认时提供的 NVIDIA 标准销售条款和条件的约束,除非 NVIDIA 和客户的授权代表签署的单独销售协议(“销售条款”)另有约定。 NVIDIA 特此明确反对将任何客户通用条款和条件应用于购买本文档中引用的 NVIDIA 产品。 本文档不直接或间接地形成任何合同义务。

NVIDIA 产品并非设计、授权或保证适用于医疗、军事、飞机、航天或生命支持设备,也不适用于 NVIDIA 产品的故障或 malfunction 可能合理预期会导致人身伤害、死亡或财产或环境损害的应用。 NVIDIA 对在此类设备或应用中包含和/或使用 NVIDIA 产品不承担任何责任,因此此类包含和/或使用由客户自行承担风险。

NVIDIA 不声明或保证基于本文档的产品将适用于任何特定用途。 NVIDIA 不一定对每个产品的所有参数进行测试。 客户全权负责评估和确定本文档中包含的任何信息的适用性,确保产品适合客户计划的应用,并为该应用执行必要的测试,以避免应用或产品的默认设置。 客户产品设计中的缺陷可能会影响 NVIDIA 产品的质量和可靠性,并可能导致超出本文档中包含的附加或不同条件和/或要求。 NVIDIA 对可能基于或归因于以下原因的任何默认设置、损坏、成本或问题不承担任何责任:(i) 以任何与本文档相悖的方式使用 NVIDIA 产品,或 (ii) 客户产品设计。

本文档未授予任何 NVIDIA 专利权、版权或其他 NVIDIA 知识产权下的任何明示或暗示的许可。 NVIDIA 发布的有关第三方产品或服务的信息不构成 NVIDIA 授予使用此类产品或服务的许可,也不构成对其的保证或认可。 使用此类信息可能需要获得第三方的专利或第三方其他知识产权下的许可,或获得 NVIDIA 的专利或 NVIDIA 其他知识产权下的许可。

仅当事先获得 NVIDIA 书面批准,在未经修改且完全遵守所有适用的出口法律和法规的情况下复制本文档中的信息,并附带所有相关的条件、限制和通知,才允许复制本文档中的信息。

本文档以及所有 NVIDIA 设计规范、参考板、文件、图纸、诊断程序、列表和其他文档(统称为“材料”,单独或合并)均“按原样”提供。 NVIDIA 对材料不作任何明示、暗示、法定或其他形式的保证,并明确否认所有关于不侵权、适销性和特定用途适用性的暗示保证。 在法律未禁止的范围内,在任何情况下,NVIDIA 均不对因使用本文档而引起的任何损害(包括但不限于任何直接、间接、特殊、偶然、惩罚性或后果性损害,无论如何造成且无论责任理论如何)承担责任,即使 NVIDIA 已被告知可能发生此类损害。 尽管客户可能因任何原因遭受任何损害,但 NVIDIA 对客户就本文所述产品承担的总体和累积责任应根据产品的销售条款进行限制。

6.2. OpenCL

OpenCL 是 Apple Inc. 的商标,Khronos Group Inc. 已获得许可使用。

6.3. 商标

NVIDIA 和 NVIDIA 徽标是 NVIDIA Corporation 在美国和其他国家/地区的商标或注册商标。 其他公司和产品名称可能是与其关联的各自公司的商标。