CUDA 兼容性

CUDA 兼容性描述了在具有较旧基础安装的系统上使用新的 CUDA 工具包组件。

1. 为什么需要 CUDA 兼容性#

NVIDIA® CUDA® 工具包使开发人员能够为桌面计算机、企业和数据中心到超大规模企业构建 NVIDIA GPU 加速计算应用程序。它由 CUDA 编译器工具链(包括 CUDA 运行时 (cudart))以及各种 CUDA 库和工具组成。要构建应用程序,开发人员只需安装 CUDA 工具包和链接所需的必要库。

为了运行 CUDA 应用程序,系统应具有启用 CUDA 的 GPU 和与用于构建应用程序本身的 CUDA 工具包兼容的 NVIDIA 驱动程序。如果应用程序依赖于库的动态链接,则系统还应具有正确版本的此类库。

Components of CUDA

Figure 1 CUDA 组件#

每个 CUDA 工具包为了方便起见,还附带一个 NVIDIA 驱动程序包。此驱动程序支持该 CUDA 工具包版本中引入的所有功能。请查看发行说明中的工具包和驱动程序版本映射。驱动程序包包括用户模式 CUDA 驱动程序 (libcuda.so) 和运行应用程序所需的内核模式组件。

通常,升级 CUDA 工具包涉及同时升级工具包和驱动程序,以获得最新的工具包和驱动程序功能。

CUDA Upgrade Path

Figure 2 CUDA 升级路径#

正如您所见,当 NVIDIA 驱动程序与 CUDA 工具包一起升级时,deviceQuery 示例输出中的 CUDA DriverCUDA Runtime 版本完全匹配

$ ./deviceQuery
./deviceQuery Starting...

CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "NVIDIA GeForce RTX 4070 SUPER"
  CUDA Driver Version / Runtime Version          12.8 / 12.8
  CUDA Capability Major/Minor version number:    8.9
[...]
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 12.8, CUDA Runtime Version = 12.8, NumDevs = 1
Result = PASS

这并非总是必需的。CUDA 兼容性保证允许仅升级某些组件

  • 向后兼容性确保较新的 NVIDIA 驱动程序可以与较旧的 CUDA 工具包一起使用。这是隐式且最简单的升级方式。

  • 次要版本和向前兼容性确保较旧的 NVIDIA 驱动程序可以与较新的 CUDA 工具包一起使用。

仅直接依赖 CUDA 运行时的应用程序可以在以下场景中部署

CUDA 驱动程序 (libcuda.so)

兼容性类型

要求

新于 CUDA 运行时

向后兼容性

旧于 CUDA 运行时,但与 CUDA 运行时相同的主版本

次要版本兼容性

无 PTX(需要 SASS),需要 NVCC 目标架构

旧于 CUDA 运行时的主要版本

向前兼容性

额外的 CUDA 兼容性包

2. 次要版本兼容性#

2.1. CUDA 11 及更高版本默认为次要版本兼容性#

从 CUDA 11 开始,使用 CUDA 主要版本系列中的 CUDA 工具包版本编译的应用程序可以在系统上运行(功能集有限),这些系统至少具有如下所示的最低要求的驱动程序版本。此最低要求的驱动程序可能与 CUDA 工具包附带的驱动程序不同,但应属于同一主要版本。

有关完整表格,请参阅 CUDA 工具包发行说明。

Table 1 CUDA 工具包 11.x 和 12.x 最低要求的驱动程序版本示例(请参阅 CUDA 发行说明)#

CUDA 工具包

Linux x86_64 最低要求的驱动程序版本

Windows 最低要求的驱动程序版本

CUDA 12.x

>=525.60.13

>=527.41

CUDA 11.x

>= 450.80.02*

>=452.39*

* CUDA 11.0 是使用较早的驱动程序版本发布的,但是通过升级到 Tesla 推荐驱动程序 450.80.02 (Linux) / 452.39 (Windows)(如所示),可以在 CUDA 11.x 系列工具包中实现次要版本兼容性。

虽然针对任何较旧的 CUDA 工具包构建的应用程序由于二进制向后兼容性,始终可以在较新的驱动程序上继续运行,但在 CUDA 11 之前,针对较新的 CUDA 工具包版本构建的应用程序在没有向前兼容性包的情况下,在较旧的驱动程序上不受支持。

如果您使用的是新的 CUDA 10.x 次要版本,则最低要求的驱动程序版本与作为该工具包版本一部分打包的驱动程序相同。因此,最低要求的驱动程序版本对于每个新的 CUDA 工具包次要版本都会更改,直到 CUDA 11.1。因此,系统管理员始终必须升级驱动程序,以支持针对 10.x 版本的 CUDA 工具包构建的应用程序。

Table 2 CUDA 工具包 10.x 最低要求的驱动程序版本#

CUDA 工具包

Linux x86_64 最低要求的驱动程序版本

Windows 最低要求的驱动程序版本

CUDA 10.2

>= 440.33

>=441.22

CUDA 10.1

>= 418.39

>=418.96

CUDA 10.0

>= 410.48

>=411.31

通过次要版本兼容性,现在可以在来自同一主要版本系列(例如 CUDA 11.0 附带的 450.80.02)的旧驱动程序上升级到 CUDA 11.1,如下所示

$ nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.80.02    Driver Version: 450.80.02    CUDA Version: 11.0     |
|-------------------------------+----------------------+----------------------+
[...]
$ ./deviceQuery
./deviceQuery Starting...

CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "Tesla T4"
  CUDA Driver Version / Runtime Version          11.0 / 11.1
  CUDA Capability Major/Minor version number:    7.5
[...]

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 11.0, CUDA Runtime Version = 11.1, NumDevs = 1
Result = PASS

最低要求的驱动程序版本指南可以在 CUDA 工具包发行说明中找到。请注意,如果系统中未安装最低要求的驱动程序版本,应用程序将返回如下所示的错误。

$ ./deviceQuery
./deviceQuery Starting...

CUDA Device Query (Runtime API) version (CUDART static linking)

cudaGetDeviceCount returned 3
-> initialization error
Result = FAIL

2.2. 次要版本兼容性的应用程序注意事项#

开发人员和系统管理员应注意在依赖次要版本兼容性时的三个重要注意事项。如果这些注意事项中的任何一个具有限制性,则需要使用与应用程序构建时使用的工具包的相同次要版本或更高版本的新 CUDA 驱动程序。

  • 功能集有限

    有时,CUDA 工具包版本中引入的功能实际上可能跨越工具包和驱动程序。在这种情况下,依赖于较新版本的工具包和驱动程序中引入的功能的应用程序可能会在较旧的驱动程序上返回以下错误:cudaErrorCallRequiresNewerDriver

    如前所述,管理员也应升级已安装的驱动程序。或者,应用程序开发人员可以通过让应用程序显式检查功能的可用性来避免遇到此问题。

  • 使用 PTX 的应用程序将看到运行时问题

    将设备代码编译为 PTX 的应用程序在较旧的驱动程序上将无法工作。

    如果应用程序需要 PTX,则管理员必须升级已安装的驱动程序。PTX 开发人员应参阅 CUDA C++ 编程指南中的 PTX 编程指南,以了解有关此限制的详细信息。

  • 需要 NVCC 的目标架构参数

    次要版本兼容性需要将目标架构参数传递给 NVCC,例如 nvcc -arch=sm_xx

2.3. 次要版本兼容性的部署注意事项#

次要版本兼容性还有另一个好处,即在库的使用和部署中提供了灵活性。使用支持次要版本兼容性的库的应用程序可以部署在具有不同版本的工具包和库的系统上,而无需为库版本的差异重新编译应用程序。这对于库的较旧版本和较新版本都适用,前提是它们都来自同一主要版本系列。请注意,库本身具有应考虑的相互依赖性。例如,每个 cuDNN 版本都需要特定版本的 cuBLAS。

NVRTC supports minor version compatibility from CUDA 11.3 onwards

Figure 3 NVRTC 从 CUDA 11.3 开始支持次要版本兼容性#

3. 向前兼容性#

3.1. 跨主要工具包版本的向前兼容性支持#

越来越多的数据中心和企业可能不希望跨主要版本更新 NVIDIA GPU 驱动程序,因为在完成任何系统级驱动程序安装之前,都会进行严格的测试和验证。

为了支持这种情况,CUDA 在 CUDA 10.0 中引入了向前兼容性升级路径。

Forward Compatibility Upgrade Path

Figure 4 向前兼容性升级路径#

警告

向前兼容性仅适用于具有以下配置的系统

  • NVIDIA 数据中心 GPU。

  • RTX 卡的选择 NGC Server Ready SKU。

  • Jetson 开发板。

它主要旨在支持在安装了来自不同主要版本系列的较旧 NVIDIA Linux GPU 驱动程序的系统上运行在较新 CUDA 工具包上构建的应用程序。这种新的向前兼容升级路径需要使用一个名为“CUDA 兼容性包”的特殊软件包。

3.2. 安装 CUDA 向前兼容性包#

3.2.1. 从网络存储库或本地安装程序#

CUDA 向前兼容性包在 NVIDIA 提供的本地安装程序或 CUDA 网络存储库中以 cuda-compat-<cuda_major_version>-<cuda_minor_version> 的形式提供。

每个 NVIDIA 驱动程序都是使用随附的 CUDA 支持版本构建的;此包是从 NVIDIA 驱动程序生成的,该驱动程序与请求兼容性的 CUDA 版本匹配。例如,cuda-compat-12-8 包是使用 NVIDIA 驱动程序库版本 570 构建的。

使用软件包安装程序在系统上安装该软件包。

Ubuntu / Debian

# apt install cuda-compat-12-8

Red Hat Enterprise Linux / Rocky Linux / Oracle Linux / Amazon Linux / Fedora / KylinOS

# dnf install cuda-compat-12-8

SLES / OpenSUSE

# zypper install cuda-compat-12-8

Azure Linux

# tdnf install cuda-compat-12-8

然后,CUDA 向前兼容性包将安装到版本化的工具包目录。例如,对于 12.8 的 CUDA 向前兼容性包,570 的 GPU 驱动程序库将安装在 /usr/local/cuda-12.8/compat/ 中。

cuda-compat-<cuda_major_version>-<cuda_minor_version> 包包含以下文件

  • libcuda.so.* - CUDA 驱动程序

  • libcudadebugger.so.* - CUDA 驱动程序的 GPU 调试支持(仅限 CUDA 11.8 及更高版本)

  • libnvidia-nvvm.so.* - JIT LTO(仅限 CUDA 11.5 及更高版本)

  • libnvidia-ptxjitcompiler.so.* - PTX 文件的 JIT 编译器

  • libnvidia-pkcs11*.so.* - CUDA 驱动程序的 OpenSSL 支持

注意

此软件包仅提供库,并且不配置系统以查找此类库。

3.2.1.1. 安装和配置示例#

在此示例中,用户设置 LD_LIBRARY_PATH 以包含 cuda-compat-12-1 包在 Ubuntu 系统上安装的文件。

安装软件包

# apt install -y cuda-compat-12-1
Selecting previously unselected package cuda-compat-12-1.
(Reading database ... 339974 files and directories currently installed.)
Preparing to unpack .../cuda-compat-12-0_530.30-1_amd64.deb ...
Unpacking cuda-compat-12-1 (530.30-1) ...
Setting up cuda-compat-12-1 (530.30-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.2) ...

检查 /usr/local/cuda-12.1/compat 下安装的文件

$ ls -l /usr/local/cuda-12.1/compat
total 145676
lrwxrwxrwx 1 root root       12 Jun  3 00:45 libcuda.so -> libcuda.so.1
lrwxrwxrwx 1 root root       17 Jun  3 00:45 libcuda.so.1 -> libcuda.so.530.30
-rw-r--r-- 1 root root 26255520 Jun  3 00:45 libcuda.so.530.30
lrwxrwxrwx 1 root root       25 Jun  3 00:45 libcudadebugger.so.1 -> libcudadebugger.so.530.30
-rw-r--r-- 1 root root 10938424 Jun  3 00:45 libcudadebugger.so.530.30
lrwxrwxrwx 1 root root       19 Jun  3 00:45 libnvidia-nvvm.so -> libnvidia-nvvm.so.4
lrwxrwxrwx 1 root root       24 Jun  3 00:45 libnvidia-nvvm.so.4 -> libnvidia-nvvm.so.530.30
-rw-r--r-- 1 root root 92017376 Jun  3 00:45 libnvidia-nvvm.so.530.30
lrwxrwxrwx 1 root root       34 Jun  3 00:45 libnvidia-ptxjitcompiler.so.1 -> libnvidia-ptxjitcompiler.so.530.30
-rw-r--r-- 1 root root 19951576 Jun  3 00:45 libnvidia-ptxjitcompiler.so.530.30

用户可以设置 LD_LIBRARY_PATH 以包含在运行 CUDA 12.1 应用程序之前安装的文件

$ export LD_LIBRARY_PATH=/usr/local/cuda-12.1/compat
$ samples/bin/x86_64/linux/release/deviceQuery
samples/bin/x86_64/linux/release/deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

 Detected 1 CUDA Capable device(s)

 Device 0: "Tesla T4"
 CUDA Driver Version / Runtime Version 12.1 / 12.1
 CUDA Capability Major/Minor version number: 9.0
 [...]

 deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 12.1, CUDA Runtime Version = 12.1, NumDevs = 1
 Result = PASS

3.2.2. 从 Runfile 手动安装#

CUDA 向前兼容性包文件也可以从 NVIDIA 驱动程序下载中提供的相应数据中心驱动程序“runfile”安装程序 (.run) 中提取。为此,请执行以下操作

  1. 下载最新的 NVIDIA 数据中心 GPU 驱动程序,并使用选项 -x 提取 .run 文件。

  2. 将本节开头列出的 CUDA 库复制到用户或 root 创建的目录中。

  3. 请遵循系统的指南,以确保系统链接器选择新的库。

3.3. 向前兼容性的部署注意事项#

3.3.1. 使用正确的 CUDA 向前兼容性包#

CUDA 向前兼容性包仅应在以下需要在主要版本之间实现向前兼容性的情况下使用。

CUDA 向前兼容性包以它可以支持的最高工具包命名。如果您使用的是 535 驱动程序,但需要 12.5 应用程序支持,请安装 12.5 的 CUDA 兼容性包。

注意

执行完整系统升级时,当选择同时安装工具包和驱动程序时,请删除系统中存在的任何向前兼容性包。

例如,如果您要将驱动程序升级到 525.60.13,这是 12.x 工具包的最低要求的驱动程序版本,则在大多数情况下不需要 CUDA 兼容性包。由于向后兼容性,将支持 11.x 和 12.x 应用程序,并且由于次要版本兼容性,将支持未来的 12.x 应用程序。

但是,某些功能限制可能会使此选项在您的场景中不太理想 - 例如:需要 PTX JIT 编译支持的应用程序。与在 CUDA 运行时和 CUDA 驱动程序之间定义的次要版本兼容性不同,向前兼容性是在内核驱动程序和 CUDA 驱动程序之间定义的,因此此类限制不适用。为了规避此限制,在某些情况下也可以使用向前兼容性包。

Table 3 CUDA 应用程序兼容性支持矩阵#

CUDA 向前兼容性

NVIDIA 驱动程序

535+

(CUDA 12.2)

550+

(CUDA 12.4)

570+

(CUDA 12.8)

cuda-compat-12-8

C

C

N/A

cuda-compat-12-6

C

C

X

cuda-compat-12-5

C

C

X

cuda-compat-12-4

C

N/A

X

cuda-compat-12-3

C

X

X

cuda-compat-12-2

N/A

X

X

  • C - 兼容

  • X - 不兼容

  • 上表中未列出的分支已终止生命周期,并且不受兼容性支持。

  • 新功能分支不受 CUDA 向前兼容性支持。

如何阅读此表的示例

  • CUDA 12.4 向前兼容性包与驱动程序版本 535 兼容 (C)。它不适用于 (N/A) 550,因为 12.4 与 550 配对,因此不需要额外的包。

  • CUDA 12.3 向前兼容性包与驱动程序版本 550 不兼容 (X),因为它是在驱动程序之前发布的。在 12.3 中创建的二进制文件仍然受本文档中描述的向后兼容性保证的约束。

  • 请注意,此表仅参考兼容性库的使用。指示“X”的行并不意味着向后或次要版本兼容性不适用于此版本。这意味着 NVIDIA 不为此组合提供兼容性包。

3.3.2. 功能例外#

CUDA 驱动程序中存在某些特定功能,这些功能需要内核模式支持,并且仅适用于较新的内核模式驱动程序。一些功能依赖于其他用户模式组件,因此也不受支持。

Table 4 向前兼容的功能-驱动程序支持矩阵#

CUDA 向前兼容性包

CUDA - OpenGL/Vulkan 互操作

cuMemMap* 功能集

系统基本安装:525 (>=.60.04) 驱动程序

cuda-compat-12-x

是 [1]

系统基本安装:450 (>=.80.02) 驱动程序

cuda-compat-11–x

是 [1]

[1] 这依赖于 CU_DEVICE_ATTRIBUTE_HANDLE_TYPE_POSIX_FILE_DESCRIPTOR_SUPPORTEDCU_DEVICE_ATTRIBUTE_VIRTUAL_ADDRESS_MANAGEMENT_SUPPORTED,如果您打算使用此功能的全部范围,则应查询它们。

[2] 在 Red Hat Enterprise Linux 操作系统版本 8.1 或更高版本上受支持。

3.3.3. 检查兼容性支持#

除了 CUDA 驱动程序和某些编译器组件外,系统安装堆栈中还有其他驱动程序(例如,OpenCL)仍保留在旧版本上。向前兼容的升级路径仅适用于 CUDA。

编写良好的应用程序应使用以下错误代码来确定是否支持 CUDA 向前兼容升级。系统管理员应注意这些错误代码,以确定部署中是否存在错误。

  • CUDA_ERROR_SYSTEM_DRIVER_MISMATCH = 803。此错误表示显示驱动程序的版本与 CUDA 驱动程序的版本不匹配。

  • CUDA_ERROR_COMPAT_NOT_SUPPORTED_ON_DEVICE = 804。此错误表示系统已升级为与向前兼容性一起运行,但 CUDA 检测到的可见硬件不支持此配置。

3.4. 向前兼容性的部署模型#

CUDA 兼容性包有两种部署模型。我们建议使用“共享”部署模式。

  • 共享部署:允许在系统中安装的工具包之间共享相同的 CUDA 兼容性包。下载并提取名称中具有最高工具包版本的最新向前兼容性包。设置 LD_LIBRARY_PATH 变量或通过自动加载器(例如,ld.so.conf),指向该包。这是最推荐的选择。

    用户可以设置 LD_LIBRARY_PATH 以包含在运行 CUDA 应用程序之前安装的文件

    $ LD_LIBRARY_PATH=/usr/local/cuda-12.1/compat
    
  • 按应用程序部署:各个应用程序可以选择其选择的包,并将其作为模块系统的一部分,该模块系统与工具包和库绑定。使用模块系统,管理员或用户可以为每个工具包包的每个版本设置“模块”脚本,然后根据需要加载工具包的模块脚本。

    $ module load cuda/11.0
    

    按应用程序部署方法有一个重要的考虑因素:较旧的向前兼容性包在新的驱动程序版本上不受支持。因此,模块加载脚本应主动查询系统,以了解在加载文件之前是否可以使用兼容性包。如果进行了完整的系统升级,则这一点尤其重要。在模块脚本无法使用 CUDA 兼容升级的情况下,回退到默认系统安装的 CUDA 驱动程序可以提供更一致的体验,这可以使用 RPATH 实现。

4. 结论#

CUDA 驱动程序保持向后兼容性,以继续支持基于旧工具包构建的应用程序。使用兼容的次要驱动程序版本,在 CUDA 工具包 11 和更新版本上构建的应用程序在来自相应主要版本中的任何驱动程序上都受支持。使用 CUDA 向前兼容性包,即使系统上安装了不满足最低要求的驱动程序版本的旧驱动程序,系统管理员也可以运行使用较新工具包构建的应用程序。这种向前兼容性使数据中心和企业中的 CUDA 部署能够从更快的发布节奏以及 CUDA 工具包的最新功能和性能中受益。

CUDA 兼容性通过以下方式帮助用户

  • 更快地升级到最新的 CUDA 版本:具有 NVIDIA GPU 的企业或数据中心具有复杂的工作流程,并且需要提前规划 NVIDIA 驱动程序的部署。无需为较新的 CUDA 版本更新驱动程序可能意味着可以更快地向用户提供新版本的软件,而不会有任何延迟。

  • 更快地升级 CUDA 库:用户可以升级到最新的软件库和基于 CUDA 构建的应用程序(例如,数学库或深度学习框架),而无需升级整个 CUDA 工具包或驱动程序。这是可能的,因为这些库和框架不直接依赖于 CUDA 运行时、编译器或驱动程序。

5. 常见问题解答#

本节包含一些与 CUDA 兼容性相关的常见问题解答。

  • CUDA 向前兼容升级是否在分支内工作?

    用户可以在同一分支内升级内核模式驱动程序。有时这可能需要更新 cuda-compat-* 包。此用例仅在选定 GPU 的驱动程序的 LLB 和 LTS 分支上受支持。

  • 工具包的最低要求的驱动程序版本是什么?

    请参阅 发行说明

  • 开发人员在应用程序中使用 PTX 代码,并看到一些错误或问题。我们应该怎么做?

    PTX 和应用程序兼容性信息可以在 二进制兼容性中找到。

  • 如果我们使用 CUDA 11.0 构建 CUDA 应用程序,它是否可以继续与较新的 NVIDIA 驱动程序(例如 CUDA 11.1/R455、11.x 等)一起使用?还是仅反过来?

    驱动程序始终与 CUDA 向后兼容。这意味着 CUDA 11.0 应用程序将与 R450 (11.0)、R455 (11.1) 及更高版本兼容。CUDA 应用程序通常静态包含它们需要的所有库(例如 cudart、CUDA 数学库,如 cuBLAS、cuFFT),因此它们应该在新驱动程序或 CUDA 工具包安装上工作。

    换句话说,由于 CUDA 是向后兼容的,因此现有的 CUDA 应用程序可以继续与较新的 CUDA 版本一起使用。

  • 那么 CUDA 次要版本中引入的新功能呢?开发人员如何使用较新的 CUDA 工具包(例如 11.x)构建应用程序,使其在具有 CUDA 11.0 驱动程序 (R450) 的系统上工作?

    通过使用新的 CUDA 版本,用户可以从新的 CUDA 编程模型 API、编译器优化和数学库功能中受益。

    • CUDA API 的一个子集不需要新的驱动程序,它们都可以在没有任何驱动程序依赖项的情况下使用。例如,11.1 中引入的异步复制 API 不需要新的驱动程序。

    • 要使用次要版本中引入的其他 CUDA API(需要新驱动程序),则必须实现回退或优雅地失败。这种情况与今天可用的情况没有什么不同,在今天的情况下,开发人员使用宏来根据 CUDA 版本编译掉功能。用户应参考 CUDA 头文件和文档,以了解版本中引入的新 CUDA API。

      管理员可以建议应用程序开发人员在其代码中适应一些问题。请参阅最佳实践指南以获取更多信息。

  • CUDA 兼容性是否适用于容器?

    是的。当使用 NGC 深度学习框架容器或使用基于官方 CUDA 基础映像的容器时,CUDA 次要版本兼容性和 CUDA 向前兼容升级都有效。这些映像包括 CUDA 兼容升级库,并且 NVIDIA 容器工具包 (nvidia-docker2) 具有正确加载所需库的逻辑。

  • 我正在运行 NGC 容器,并看到此错误:“此容器是为 NVIDIA 驱动程序版本 450.51 或更高版本构建的,但检测到版本 418.126.02,并且兼容模式不可用。”。可能是什么问题?

    可能是您在系统上运行了错误版本的 NVIDIA 驱动程序,或者您的系统没有 NVIDIA 数据中心 GPU。

6. 声明#

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

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

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

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

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

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

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

只有在获得 NVIDIA 事先书面批准的情况下,才能复制本文档中的信息,并且复制时不得进行更改,必须完全遵守所有适用的出口法律和法规,并附带所有相关的条件、限制和声明。

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

6.1. 商标#

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