NVIDIA CUDA 工具包发行说明
CUDA 工具包的发行说明。
1.CUDA 12.4 发行说明
NVIDIA® CUDA® 工具包的发行说明可在线找到:1. CUDA 12.4 Release Notes — Release Notes 12.4 documentation。
笔记
发行说明已重新组织为两个主要部分:常规 CUDA 发行说明和 CUDA 库发行说明(包括 12.x 版本的历史信息)。
1.1. CUDA工具包主要组件版本
CUDA组件
从 CUDA 11 开始,工具包中的各个组件均独立进行版本控制。
对于 CUDA 12.4,下表列出了版本:
Component Name | Version Information | Supported Architectures | Supported Platforms | |
---|---|---|---|---|
CUDA C++ Core Compute Libraries | Thrust | 2.3.1 | x86_64, arm64-sbsa, POWER, aarch64-jetson | Linux, Windows |
CUB | 2.3.1 | |||
libcu++ | 2.3.1 | |||
Cooperative Groups | 12.3.x | |||
CUDA Compatibility | 12.4.35475792 | aarch64-jetson | Linux | |
CUDA Runtime (cudart) | 12.4.99 | x86_64, arm64-sbsa, POWER, aarch64-jetson | Linux, Windows, WSL | |
cuobjdump | 12.4.99 | x86_64, arm64-sbsa, POWER, aarch64-jetson | Linux, Windows | |
CUPTI | 12.4.99 | x86_64, arm64-sbsa, POWER, aarch64-jetson | Linux, Windows, WSL | |
CUDA cuxxfilt (demangler) | 12.4.99 | x86_64, arm64-sbsa, POWER, aarch64-jetson | Linux, Windows | |
CUDA Demo Suite | 12.4.99 | x86_64 | Linux, Windows | |
CUDA GDB | 12.4.99 | x86_64, arm64-sbsa, POWER, aarch64-jetson | Linux, WSL | |
CUDA Nsight Eclipse Plugin | 12.4.99 | x86_64, POWER | Linux | |
CUDA NVCC | 12.4.99 | x86_64, arm64-sbsa, POWER, aarch64-jetson | Linux, Windows, WSL | |
CUDA nvdisasm | 12.4.99 | x86_64, arm64-sbsa, POWER, aarch64-jetson | Linux, Windows | |
CUDA NVML Headers | 12.4.99 | x86_64, arm64-sbsa, POWER, aarch64-jetson | Linux, Windows, WSL | |
CUDA nvprof | 12.4.99 | x86_64, POWER | Linux, Windows | |
CUDA nvprune | 12.4.99 | x86_64, arm64-sbsa, POWER, aarch64-jetson | Linux, Windows, WSL | |
CUDA NVRTC | 12.4.99 | x86_64, arm64-sbsa, POWER, aarch64-jetson | Linux, Windows, WSL | |
NVTX | 12.4.99 | x86_64, arm64-sbsa, POWER, aarch64-jetson | Linux, Windows, WSL | |
CUDA NVVP | 12.4.99 | x86_64, POWER | Linux, Windows | |
CUDA OpenCL | 12.4.99 | x86_64 | Linux, Windows | |
CUDA Profiler API | 12.4.99 | x86_64, arm64-sbsa, POWER, aarch64-jetson | Linux, Windows, WSL | |
CUDA Compute Sanitizer API | 12.4.99 | x86_64, arm64-sbsa, POWER, aarch64-jetson | Linux, Windows, WSL | |
CUDA cuBLAS | 12.4.2.65 | x86_64, arm64-sbsa, POWER, aarch64-jetson | Linux, Windows, WSL | |
cuDLA | 12.4.99 | aarch64-jetson | Linux | |
CUDA cuFFT | 11.2.0.44 | x86_64, arm64-sbsa, POWER, aarch64-jetson | Linux, Windows, WSL | |
CUDA cuFile | 1.9.0.20 | x86_64, arm64-sbsa, aarch64-jetson | Linux | |
CUDA cuRAND | 10.3.5.119 | x86_64, arm64-sbsa, POWER, aarch64-jetson | Linux, Windows, WSL | |
CUDA cuSOLVER | 11.6.0.99 | x86_64, arm64-sbsa, POWER, aarch64-jetson | Linux, Windows, WSL | |
CUDA cuSPARSE | 12.3.0.142 | x86_64, arm64-sbsa, POWER, aarch64-jetson | Linux, Windows, WSL | |
CUDA NPP | 12.2.5.2 | x86_64, arm64-sbsa, POWER, aarch64-jetson | Linux, Windows, WSL | |
CUDA nvFatbin | 12.4.99 | x86_64, arm64-sbsa, POWER, aarch64-jetson | Linux, Windows, WSL | |
CUDA nvJitLink | 12.4.99 | x86_64, arm64-sbsa, POWER, aarch64-jetson | Linux, Windows, WSL | |
CUDA nvJPEG | 12.3.1.89 | x86_64, arm64-sbsa, POWER, aarch64-jetson | Linux, Windows, WSL | |
Nsight Compute | 2024.1.0.13 | x86_64, arm64-sbsa, POWER, aarch64-jetson | Linux, Windows, WSL (Windows 11) | |
Nsight Systems | 2023.4.4.54 | x86_64, arm64-sbsa, POWER | Linux, Windows, WSL | |
Nsight Visual Studio Edition (VSE) | 2024.1.0.23349 | x86_64 (Windows) | Windows | |
nvidia_fs1 | 2.19.6 | x86_64, arm64-sbsa, aarch64-jetson | Linux | |
Visual Studio Integration | 12.4.99 | x86_64 (Windows) | Windows | |
NVIDIA Linux Driver | 550.54.14 | x86_64, arm64-sbsa, POWER | Linux | |
NVIDIA Windows Driver | 551.61 | x86_64 (Windows) | Windows, WSL |
运行 CUDA 应用程序需要系统至少配备一个支持 CUDA 的 GPU 以及与 CUDA 工具包兼容的驱动程序。参见表3。有关支持 CUDA 的各种 GPU 产品的更多信息,请访问1。
CUDA 工具包的每个版本都需要最低版本的 CUDA 驱动程序。CUDA 驱动程序向后兼容,这意味着针对特定版本的 CUDA 编译的应用程序将继续在后续(更高的)驱动程序版本上运行。
有关兼容性的更多信息,请访问CUDA C++ Best Practices Guide。
注意:从 CUDA 11.0 开始,工具包组件单独进行版本控制,工具包本身的版本控制如下表所示。
CUDA 次要版本兼容性所需的最低驱动程序版本如下所示。CUDA 次要版本兼容性在https://docs.nvidia.com/deploy/cuda-compatibility/index.html中有详细描述
CUDA工具包 | CUDA 次要版本兼容性所需的最低驱动程序版本* | |
---|---|---|
Linux x86_64 驱动程序版本 | Windows x86_64 驱动程序版本 | |
CUDA 12.x | >=525.60.13 | >=528.33 |
CUDA 11.8.x CUDA 11.7.x CUDA 11.6.x CUDA 11.5.x CUDA 11.4.x CUDA 11.3.x CUDA 11.2.x CUDA 11.1.x | >=450.80.02 | >=452.39 |
CUDA 11.0 (11.0.3) | >=450.36.06** | >=451.22** |
*在兼容模式下可以允许使用与 Toolkit 驱动程序版本不同的最低所需版本- 请阅读 CUDA 兼容性指南了解详细信息。
** CUDA 11.0 与早期的驱动程序版本一起发布,但通过升级到 Tesla 推荐驱动程序 450.80.02 (Linux) / 452.39 (Windows),可以在 CUDA 11.x 系列工具包中实现次要版本兼容性。
每个 CUDA 工具包版本中打包的开发 NVIDIA GPU 驱动程序版本如下所示。
CUDA Toolkit | Toolkit Driver Version | |
---|---|---|
Linux x86_64 Driver Version | Windows x86_64 Driver Version | |
CUDA 12.4 GA | >=550.54.14 | >=551.61 |
CUDA 12.3 Update 1 | >=545.23.08 | >=546.12 |
CUDA 12.3 GA | >=545.23.06 | >=545.84 |
CUDA 12.2 Update 2 | >=535.104.05 | >=537.13 |
CUDA 12.2 Update 1 | >=535.86.09 | >=536.67 |
CUDA 12.2 GA | >=535.54.03 | >=536.25 |
CUDA 12.1 Update 1 | >=530.30.02 | >=531.14 |
CUDA 12.1 GA | >=530.30.02 | >=531.14 |
CUDA 12.0 Update 1 | >=525.85.12 | >=528.33 |
CUDA 12.0 GA | >=525.60.13 | >=527.41 |
CUDA 11.8 GA | >=520.61.05 | >=520.06 |
CUDA 11.7 Update 1 | >=515.48.07 | >=516.31 |
CUDA 11.7 GA | >=515.43.04 | >=516.01 |
CUDA 11.6 Update 2 | >=510.47.03 | >=511.65 |
CUDA 11.6 Update 1 | >=510.47.03 | >=511.65 |
CUDA 11.6 GA | >=510.39.01 | >=511.23 |
CUDA 11.5 Update 2 | >=495.29.05 | >=496.13 |
CUDA 11.5 Update 1 | >=495.29.05 | >=496.13 |
CUDA 11.5 GA | >=495.29.05 | >=496.04 |
CUDA 11.4 Update 4 | >=470.82.01 | >=472.50 |
CUDA 11.4 Update 3 | >=470.82.01 | >=472.50 |
CUDA 11.4 Update 2 | >=470.57.02 | >=471.41 |
CUDA 11.4 Update 1 | >=470.57.02 | >=471.41 |
CUDA 11.4.0 GA | >=470.42.01 | >=471.11 |
CUDA 11.3.1 Update 1 | >=465.19.01 | >=465.89 |
CUDA 11.3.0 GA | >=465.19.01 | >=465.89 |
CUDA 11.2.2 Update 2 | >=460.32.03 | >=461.33 |
CUDA 11.2.1 Update 1 | >=460.32.03 | >=461.09 |
CUDA 11.2.0 GA | >=460.27.03 | >=460.82 |
CUDA 11.1.1 Update 1 | >=455.32 | >=456.81 |
CUDA 11.1 GA | >=455.23 | >=456.38 |
CUDA 11.0.3 Update 1 | >= 450.51.06 | >= 451.82 |
CUDA 11.0.2 GA | >= 450.51.05 | >= 451.48 |
CUDA 11.0.1 RC | >= 450.36.06 | >= 451.22 |
CUDA 10.2.89 | >= 440.33 | >= 441.22 |
CUDA 10.1 (10.1.105 general release, and updates) | >= 418.39 | >= 418.96 |
CUDA 10.0.130 | >= 410.48 | >= 411.31 |
CUDA 9.2 (9.2.148 Update 1) | >= 396.37 | >= 398.26 |
CUDA 9.2 (9.2.88) | >= 396.26 | >= 397.44 |
CUDA 9.1 (9.1.85) | >= 390.46 | >= 391.29 |
CUDA 9.0 (9.0.76) | >= 384.81 | >= 385.54 |
CUDA 8.0 (8.0.61 GA2) | >= 375.26 | >= 376.51 |
CUDA 8.0 (8.0.44) | >= 367.48 | >= 369.30 |
CUDA 7.5 (7.5.16) | >= 352.31 | >= 353.66 |
CUDA 7.0 (7.0.28) | >= 346.46 | >= 347.62 |
为方便起见,NVIDIA 驱动程序作为 CUDA Toolkit 安装的一部分进行安装。请注意,此驱动程序用于开发目的,不建议在使用 Tesla GPU 的生产中使用。
要在生产环境中使用 Tesla GPU 运行 CUDA 应用程序,建议从 NVIDIA 驱动程序下载网站Official Drivers | NVIDIA下载 Tesla GPU 的最新驱动程序。
在安装 CUDA Toolkit 期间,在 Windows 上(使用交互式或静默安装时)或 Linux 上(使用元包)可能会跳过 NVIDIA 驱动程序的安装。
有关在 Windows 上自定义安装过程的更多信息,请参阅CUDA Installation Guide for Microsoft Windows。
有关 Linux 上的元包,请参阅1. Introduction — Installation Guide for Linux 12.4 documentation。
1.2. 新功能
本节列出了新的常规 CUDA 和 CUDA 编译器功能。
1.2.1. 通用CUDA
-
绿色上下文是传统上下文的轻量级替代方案,能够传递一组应用于初始化的资源。这使得开发人员能够表示 GPU 的不同空间分区,为它们提供资源,并通过 CUDA 公开的相同编程模型(流、内核启动等)来定位它们。详细信息请参考CUDA Driver API :: CUDA Toolkit Documentation。
-
Grace Hopper 系统基于访问计数器的内存迁移现在默认启用。由于这是启用该功能的第一个版本,开发人员可能会发现,针对早期内存迁移算法进行优化的应用程序如果针对早期行为进行优化,可能会出现性能下降。如果发生这种情况,我们会引入一个受支持但临时的标志来选择退出此行为。您可以通过卸载和重新加载 NVIDIA UVM 驱动程序来控制此功能的启用,如下所示:
# modprobe -r nvidia_uvm# modprobe nvidia_uvm uvm_perf_access_counter_mimc_migration_enable=0
-
此版本引入了对 CUDA 图中以下新功能的支持:
-
图条件节点(从 12.3 增强)
-
设备图的设备端节点参数更新
-
无需重新编译即可更新图节点优先级
-
-
通过 NVML 和 nvidia-smi 增强监控功能:
-
NVJPG 和 NVOFA 使用百分比
-
PCIe 类别和子类别报告
-
dmon 报告现在提供 CSV 格式
-
从 NVML 返回更多描述性错误代码
-
dmon 现在报告 MIG 的 gpm 指标(即在 MIG 模式下运行)
nvidia-smi dmon --gpm-metrics
-
在某些情况下,针对旧驱动程序运行的 NVML 会报告
FUNCTION_NOT_FOUND
,如果 NVML 比驱动程序新,则会正常失败 -
用于查询 Hopper 机密计算的受保护内存信息的 NVML API
-
-
此版本引入了 nvFatbin,这是一个用于在运行时创建 CUDA fat 二进制文件的新库。欲了解更多详情,请访问nvFatbin。
1.2.2. 机密计算一般访问
-
从 12.4 R550.54.14 开始,Hopper 的机密计算将转向通用访问以用于离散 GPU 使用。
-
此版本之前的所有 EA RIM 证书将在发布 30 天后被撤销,状态为 PrivilegeWithdrawn。
-
欲了解更多详细信息,请访问NVIDIA Trusted Computing Solutions - NVIDIA Docs。
1.2.3. CUDA 编译器
-
有关 PTX 的更改,请参阅PTX ISA 8.4。
-
添加了
__maxnreg__
内核函数限定符,允许用户直接指定在 CUDA C++ 中线程块中分配给单个线程的最大寄存器数量。 -
添加了一个新标志
-fdevice-syntax-only
,用于在前端语法检查后结束设备编译。此选项可以提供源代码更改的快速反馈(警告和错误),因为它不会调用优化器。注意:此选项不会生成有效的目标代码。 -
-minimal
为 NVRTC 编译添加新标志。该-minimal
标志省略了某些语言功能以减少小程序的编译时间。特别是,省略了以下内容:-
纹理和表面函数以及关联类型(例如
cudaTextureObject_t
)。 -
cudadevrt 设备代码库提供的 CUDA 运行时函数,通常以前缀“cuda”命名,例如
cudaMalloc
. -
从设备代码启动内核。
-
与 CUDA 运行时和驱动程序 API 关联的类型和宏,由 提供
cuda/tools/cudart/driver_types.h
,通常以前缀“cuda”命名,例如cudaError_t
。
-
-
从 CUDA 12.4 开始,
-pic
当编译模式为整个程序编译时,PTXAS 默认启用位置无关代码 ( )。-pic=false
用户可以通过指定PTXAS 选项来选择退出。默认情况下,调试编译和单独编译继续禁用位置无关代码。将来,位置无关的代码将允许 CUDA 驱动程序跨上下文共享文本部分的单个副本,并减少驻留内存的使用。
1.2.4. CUDA 开发者工具
-
有关 nvprof 和 Visual Profiler 的更改,请参阅更改日志。
-
有关 Nsight Systems 中的新功能、改进和错误修复,请参阅变更日志。
-
有关 Nsight Visual Studio 版本中的新功能、改进和错误修复,请参阅变更日志。
-
有关 CUPTI 中的新功能、改进和错误修复,请参阅更改日志。
-
有关 Nsight Compute 中的新功能、改进和错误修复,请参阅变更日志。
-
有关 Compute Sanitizer 中的新功能、改进和错误修复,请参阅变更日志。
-
有关 CUDA-GDB 中的新功能、改进和错误修复,请参阅变更日志。
1.3. 已解决的问题
1.3.1. 通用CUDA
-
修复了在初始化之前使用 MMA 指令输入时可能发生的编译器崩溃问题。
1.3.2. CUDA 编译器
-
在某些情况下,
dp4a
或者dp2a
指令会在 ptx 中生成,并由于整数溢出而导致不正确的行为。此问题已在 CUDA 12.4 中修复。
1.4. 已弃用或删除的功能
当前版本的 CUDA 软件中已弃用的功能在当前版本中仍然有效,但它们的文档可能已被删除,并且在未来的版本中将不再受到正式支持。我们建议开发人员在其软件中采用替代解决方案来替代这些功能。
1.4.1. 已弃用的架构
CUDA Toolkit 12.4 不再支持 NVIDIA CUDA 对 PowerPC 架构的支持。对此架构的支持已被视为已弃用,并将在即将发布的版本中删除。
1.4.2. 已弃用的操作系统
CUDA Toolkit 12.4 不再支持 Red Hat Enterprise Linux 7 和 CentOS 7。即将发布的版本中将删除对这些操作系统的支持。
1.4.3. 已弃用的工具链
CUDA Toolkit 12.4 不再支持以下主机编译器:
微软 Visual C/C++ (MSVC) 2017
GCC 7.3 之前的所有 GCC 版本
1.4.4. CUDA工具
不推荐使用 CUDA-GDB 的 macOS 主机客户端支持。它将在即将发布的版本中被删除。
2.CUDA库
本节介绍 12.x 版本的 CUDA 库发行说明。
-
CUDA Math Libraries 工具链使用 C++11 功能,并且主机上需要 C++11 兼容的标准库 (libstdc++ >= 20150422)。
-
所有库都删除了对以下计算功能的支持:
-
sm_35(开普勒)
-
sm_37(开普勒)
-
2.1. cuBLAS 库
2.1.1. cuBLAS:版本 12.4
-
新功能
-
cuBLAS 添加了实验性 API,以支持单精度和双精度的分组批量 GEMM。单精度还支持数学模式,
CUBLAS_TF32_TENSOR_OP_MATH
. 分组批处理模式允许您同时求解不同维度(m、n、k)、主维度(lda、ldb、ldc)、转置(transa、transb)和缩放因子(alpha、beta)的 GEMM。请参阅cublas<t>gemmGroupedBatched <https://docs.nvidia.com/cuda/cublas/index.html#cublas-t-gemmgroupedbatched>__了解更多详细信息。
-
-
已知的问题
-
当使用 创建当前上下文时
cuGreenCtxCreate()
,cuBLAS 无法正确检测可用 SM 的数量。用户可以使用 API(例如 )向 cuBLAS 提供校正后的 SM 计数cublasSetSmCountTarget()
。 -
当 alpha 为零且指针模式设置为 时,BLAS 级别 2 和 3 函数可能不会以 BLAS 兼容方式处理 alpha
CUBLAS_POINTER_MODE_DEVICE
。这与 cuBLAS 12.3 Update 1 中记录的已知问题相同。 -
cublasLtMatmul
K 等于 1,尾声CUBLASLT_EPILOGUE_D{RELU,GELU}_BGRAD
可以越界访问工作区。该问题自 cuBLAS 11.3 Update 1 起就存在。
-
2.1.2. cuBLAS:版本 12.3 更新 1
-
新功能
-
提高了具有高逐出率的工作负载的启发式缓存的性能。
-
-
已知的问题
-
当 alpha 为零且指针模式设置为 时,BLAS 级别 2 和 3 函数可能不会以 BLAS 兼容方式处理 alpha
CUBLAS_POINTER_MODE_DEVICE
。预期的行为是跳过相应的计算。您可能会遇到以下问题: (1) HER{,2,X,K,2K} 可能会将输出矩阵对角线元素上的虚部归零;(2) HER{,2,X,K,2K}、SYR{,2,X,K,2K} 等可能会因对矩阵 A 和 B 执行计算而产生 NaN,否则将被跳过。如果需要严格遵守 BLAS,用户可以在调用函数之前手动检查 alpha 值或切换到CUBLAS_POINTER_MODE_HOST
.
-
-
已解决的问题
-
在以下条件下,cuBLASLt matmul 运算可能会错误地计算输出:矩阵 A 和 B 的数据类型为 FP8,矩阵 C 和 D 的数据类型为 FP32、FP16 或 BF16,beta 值为 1.0,C 和D 矩阵相同,尾声包含 GELU 激活函数。
-
当使用 CUDA Toolkit 12.2 update 1 或更早版本中的 cuBLASLt 编译的应用程序使用 CUDA Toolkit 12.2 update 2 或 CUDA Toolkit 12.3 中的 cuBLASLt 运行时,使用 初始化的矩阵乘法描述符有时
cublasLtMatmulDescInit()
不考虑使用cublasLtMatmulDescSetAttribute()
. -
修复了多进程服务 (MPS) 下 Hopper GPU 上 cuBLAS 或 cuBLASLt 句柄的创建问题。
-
cublasLtMatmul
当 K 等于 1 时,尾声CUBLASLT_EPILOGUE_BGRAD{A,B}
可能会返回错误的偏差梯度结果。 -
cublasLtMatmul
K 等于 1,CUBLASLT_EPILOGUE_D{RELU,GELU}
如果没有提供工作空间,尾声可能会产生非法内存访问。该问题自 cuBLAS 11.6 起就存在。 -
cublasLtMatmul
使用 A 和 B 类型 equalCUDA_R_8I
、scale 和 C 类型 equalCUDA_R_32I
以及计算类型 equalsCUBLAS_COMPUTE_32I{,_PEDANTIC}
可能会错误地将结果转换为浮点数据类型,然后返回整数,从而导致精度损失(对于大于 2^24 的输出)。该问题自 cuBLAS 11.0 起就存在。 -
当在 CUDA Graph 流捕获中捕获时,cuBLAS 例程可以通过使用流排序分配 API
cudaMallocAsync
和cudaFreeAsync
. 但是,由于当前不支持子图或从设备启动的图中的内存节点,因此在这种情况下尝试捕获 cuBLAS 例程可能会失败。为了避免此问题,请使用该cublasSetWorkspace()
函数来提供用户拥有的工作区内存。
-
2.1.3. cuBLAS:版本 12.3
-
新功能
-
改进了 NVIDIA L40S Ada GPU 的性能。
-
-
已知的问题
-
在以下条件下,cuBLASLt matmul 运算可能会错误地计算输出:矩阵 A 和 B 的数据类型为 FP8,矩阵 C 和 D 的数据类型为 FP32、FP16 或 BF16,beta 值为 1.0,C 和 D矩阵相同,尾声包含 GELU 激活函数。
-
当使用 CUDA Toolkit 12.2 update 1 或更早版本中的 cuBLASLt 编译的应用程序使用 CUDA Toolkit 12.2 update 2 或更高版本中的 cuBLASLt 运行时,使用 初始化的矩阵乘法描述符
cublasLtMatmulDescInit()
可能不考虑使用cublasLtMatmulDescSetAttribute()
.cublasLtMatmulDescCreate()
要解决此问题,请使用而不是创建矩阵乘法描述符cublasLtMatmulDescInit()
。这将在即将发布的版本中修复。
-
2.1.4. cuBLAS:版本 12.2 更新 2
-
新功能
-
cuBLASLt 现在将尝试分解单个 gemm 内核无法运行的问题。它通过将问题划分为更小的块并多次执行 gemm 内核来实现这一点。这提高了非常大的 m、n 或批量大小情况的功能覆盖率,并使从 cuBLAS API 到 cuBLASLt API 的转换更加可靠。
-
-
已知的问题
-
在以下条件下,cuBLASLt matmul 运算可能会错误地计算输出:矩阵 A 和 B 的数据类型为 FP8,矩阵 C 和 D 的数据类型为 FP32、FP16 或 BF16,beta 值为 1.0,C 和 D矩阵相同,尾声包含 GELU 激活函数。
-
2.1.5。cuBLAS:版本 12.2
-
已知的问题
-
当 MPS 设置
CUDA_MPS_ACTIVE_THREAD_PERCENTAGE
为小于 100% 的值时,cuBLAS 初始化在 Hopper 架构 GPU 上失败。目前没有针对此问题的解决方法。 -
CUBLASLT_EPILOGUE_RELU_BIAS
某些 Hopper 内核对于带有orCUBLASLT_EPILOGUE_GELU_BIAS
和非零的批处理 matmuls 会产生错误的结果CUBLASLT_MATMUL_DESC_BIAS_BATCH_STRIDE
。内核将第一批的偏差向量应用于所有批次。这将在未来版本中修复。
-
2.1.6。cuBLAS:版本 12.1 更新 1
-
新功能
-
支持 NVIDIA Ada GPU 上的 FP8。
-
改进了 NVIDIA L4 Ada GPU 的性能。
-
引入了一个 API,指示 cuBLASLt 库不要使用某些 CPU 指令。这在极少数情况下非常有用,在这种情况下,cuBLASLt 启发式使用的某些 CPU 指令会对 CPU 性能产生负面影响。请参阅cuBLAS。
-
-
已知的问题
-
使用该函数创建矩阵布局时
cublasLtMatrixLayoutCreate()
,所指向的对象cublasLtMatrixLayout_t
小于cublasLtMatrixLayoutOpaque_t
(但足以容纳内部结构)。因此,不应显式取消引用或复制该对象,因为这可能会导致越界访问。如果需要序列化布局或复制它,建议手动分配一个 sizesizeof(cublasLtMatrixLayoutOpaque_t)
字节的对象,并使用cublasLtMatrixLayoutInit()
函数初始化它。这同样适用于cublasLtMatmulDesc_t
和cublasLtMatrixTransformDesc_t
。该问题将在未来版本中通过确保cublasLtMatrixLayoutCreate()
分配至少sizeof(cublasLtMatrixLayoutOpaque_t)
字节来解决。
-
2.1.7. cuBLAS:版本 12.0 更新 1
-
新功能
-
改进了 NVIDIA H100 SXM 和 NVIDIA H100 PCIe GPU 的性能。
-
-
已知的问题
-
为了在 NVIDIA Hopper 架构上获得最佳性能,cuBLAS 需要分配比以前的架构 (8 MiB) 更大的内部工作空间 (64 MiB)。在当前版本和以前的版本中,cuBLAS 分配 256 MiB。这将在未来的版本中得到解决。
CUBLAS_WORKSPACE_CONFIG
一种可能的解决方法是在 NVIDIA Hopper 架构上运行 cuBLAS 时将环境变量设置为 :32768:2。
-
-
已解决的问题
-
减少了因不使用 cublasLt 启发式缓存而导致的 cuBLAS 主机端开销。这从 CUDA Toolkit 12.0 版本开始。
-
添加了向前兼容的单精度复杂 GEMM,不需要工作空间。
-
2.1.8. cuBLAS:版本 12.0
-
新功能
-
cublasLtMatmul
现在支持非零 beta 的 FP8。 -
添加了
int64
API 以支持更大的问题规模;参考64位整数接口。 -
cublasLtMatmul
为尾声添加了更多 Hopper 特定的内核:-
CUBLASLT_EPILOGUE_BGRAD{A,B}
-
CUBLASLT_EPILOGUE_{RELU,GELU}_AUX
-
CUBLASLT_EPILOGUE_D{RELU,GELU}
-
-
通过添加以前仅在 Windows 和 Linux 的 x86_64 架构上支持的 Hopper 内核,改进了 Arm64-sbsa 上的 Hopper 性能。
-
-
已知的问题
-
对于不需要工作空间的单精度复杂 gemms 没有向前兼容的内核。将在以后的版本中添加支持。
-
-
已解决的问题
-
修复了 NVIDIA Ampere 架构和较新 GPU 上的问题,其中
cublasLtMatmul
使用尾声CUBLASLT_EPILOGUE_BGRAD{A,B}
和非平凡的缩减方案(即,不是CUBLASLT_REDUCTION_SCHEME_NONE
)可能会返回错误的偏差梯度结果。 -
cublasLtMatmul
对于类似 gemv 的情况(即 m 或 n 等于 1),可能会忽略CUBLASLT_EPILOGUE_RELU_BIAS
和CUBLASLT_EPILOGUE_BIAS
尾声的偏差。
弃用
-
禁止在同一翻译单元中包含
cublas.h
和。cublas_v2.h
-
删除:
-
CUBLAS_MATMUL_STAGES_16x80
和CUBLAS_MATMUL_STAGES_64x80
从cublasLtMatmulStages_t
. 没有内核再利用这些阶段。 -
cublasLt3mMode_t
、CUBLASLT_MATMUL_PREF_MATH_MODE_MASK
、 和CUBLASLT_MATMUL_PREF_GAUSSIAN_MODE_MASK
来自cublasLtMatmulPreferenceAttributes_t
。相反,使用 中的相应标志cublasLtNumericalImplFlags_t
。 -
CUBLASLT_MATMUL_PREF_POINTER_MODE_MASK
、CUBLASLT_MATMUL_PREF_EPILOGUE_MASK
、 和CUBLASLT_MATMUL_PREF_SM_COUNT_TARGET
来自cublasLtMatmulPreferenceAttributes_t
。相应的参数直接取自cublasLtMatmulDesc_t
. -
CUBLASLT_POINTER_MODE_MASK_NO_FILTERING
从cublasLtPointerModeMask_t
。该面具仅适用于CUBLASLT_MATMUL_PREF_MATH_MODE_MASK
被移除的人。
-
-
2.2. cuFFT 库
2.2.1. cuFFT:版本 12.4
-
新功能
-
添加了即时链接时间优化 (JIT LTO) 内核,以提高具有 64 位索引的 FFT 性能。
-
向 cuFFT API添加了按计划属性。可以利用这些新例程让用户更好地控制 cuFFT 的行为。目前,它们可用于启用 64 位 FFT 的 JIT LTO 内核。
-
提高了某些单精度 (fp32) FFT 情况的精度,特别是涉及较大尺寸的 FFT。
-
-
已知的问题
-
cuFFT LTO EA 库中的例程被错误地添加到 cuFFT Advanced API 标头 (
cufftXt.h
)。cuFFT 不支持此例程,并将在未来版本中从标头中删除。
-
-
已解决的问题
-
修复了使用用户指定的输出步长(即使用高级数据布局 API
ostride
的组件)执行异位实数到复数 (R2C) 转换时可能导致用户数据被覆盖的问题。 -
修复了当和均为 时
libcufftw
和FFTW之间不一致的行为。从现在开始,就像在 FFTW 中一样,作为参数传递相当于传递 n,即该维度的逻辑大小。inembed
onembed
nullptr / NULL
nullptr / NULL
inembed/onembed
-
2.2.2. cuFFT:版本 12.3 更新 1
-
已知的问题
-
在与用于创建计划的环境不同的上下文中执行实数到复杂 (R2C) 或复杂到实数 (C2R) 计划可能会导致未定义的行为。此问题将在即将发布的 cuFFT 版本中得到解决。
-
-
已解决的问题
-
cufftExec
现在,如果在内核启动期间出现错误(例如由于缺少 CUDA 上下文),复杂到复杂 (C2C) 执行函数(及类似函数)可以正确地错误输出。
-
2.2.3. cuFFT:版本 12.3
-
新功能
-
回调内核在资源使用方面更加宽松,并且将使用更少的寄存器。
-
提高了因子大于 127 的双精度素数和复合 FFT 大小的精度。
-
略微改进了某些 FFT 大小的规划时间。
-
2.2.4. cuFFT:版本 12.2
-
新功能
-
cufftSetStream
可以在多 GPU 计划中使用来自任何 GPU 上下文的流,而不是来自 中列出的第一个 GPU 的主要上下文cufftXtSetGPUs
。 -
改进了 1000 多个大小范围为 62 到 16380 的 FFT 的性能。改进的性能涵盖数百个具有连续数据布局的 FFT 的单精度和双精度情况,通过 PTX JIT 跨多个 GPU 架构(从 Maxwell 到 Hopper GPU)。
-
与 12.1 版本中的 cuFFT 相比,减少了静态库的大小。
-
-
已解决的问题
-
当线程同时创建和访问活动计划超过 1023 个的计划时,cuFFT 不再出现竞争状况。
-
当多个线程同时调用时,cuFFT 不再表现出竞争条件
cufftXtSetGPUs
。
-
2.2.5。cuFFT:版本 12.1 更新 1
-
已知的问题
-
cufftCreate
当一个线程调用( 或cufftDestroy
) 而另一个线程调用任何 API(除了cufftCreate
或cufftDestroy
),并且当活动计划总数超过 1023 时,cuFFT 会出现竞争状况。 -
当多个线程同时调用不同的计划时,cuFFT 会出现竞争情况
cufftXtSetGPUs
。
-
2.2.6。cuFFT:版本 12.1
-
新功能
-
改进了 Hopper GPU 上数百个大小范围从 14 到 28800 的 FFT 的性能。改进的性能涵盖超过 542 个具有连续数据布局的单精度和双精度 FFT 案例。
-
-
已知的问题
-
从 CUDA 11.8 开始,在异地模式转换中加载数据的回调例程不再支持 CUDA Graph。即将发布的版本将更新 cuFFT 回调实现,消除此限制。cuFFT 已弃用基于 cuFFT 11.4 中单独编译的设备代码的回调功能。
-
-
已解决的问题
-
如果计划创建时使用的 CUDA 上下文在程序退出之前被销毁,则 cuFFT 在程序退出时不再产生计算清理程序错误。
-
2.2.7. cuFFT:版本 12.0 更新 1
-
已解决的问题
-
多 GPU、单批次、1D FFT 的暂存空间要求有所降低。
-
2.2.8. cuFFT:版本 12.0
-
新功能
-
PTX JIT 内核编译允许为 Maxwell、Pascal、Volta 和 Turing 架构添加许多新的加速案例。
-
-
已知的问题
-
由于 PTX JIT 编译,cuFFT 计划生成时间增加。请参阅计划初始化时间。
-
-
已解决的问题
-
cuFFT 计划的每个计划都会无意中产生少量内存开销(几 kB)。这已解决。
-
2.3. cuSOLVER 库
2.3.1. cuSOLVER:版本 12.4
-
新功能
-
cusolverDnXlarft
并cusolverDnXlarft_bufferSize
引入了 API。cusolverDnXlarft
形成真实块反射器的三角因子,同时cusolverDnXlarft_bufferSize
返回其所需的工作空间大小(以字节为单位)。
-
-
已知的问题
-
cusolverDnXtrtri_bufferSize`返回不正确的所需设备工作空间大小。作为解决方法,可以将返回的大小乘以数据类型的大小(例如,如果矩阵 A 为 double 类型,则为 8 个字节)以获得正确的工作区大小。
-
2.3.2. cuSOLVER:版本 12.2 更新 2
-
已解决的问题
-
cusolverDn<t>gesvd()
修复了、cusolverDnGesvd()
和 的问题,如果或不等于 ' 'cusolverDnXgesvd()
,则可能会导致大于 18918 的矩阵出现错误结果。jobu
jobvt
N
-
2.3.3. cuSOLVER:版本 12.2
-
新功能
-
新的 API 可确保确定性结果或允许非确定性结果以提高性能。参见
cusolverDnSetDeterministicMode()
和cusolverDnGetDeterministicMode()
。受影响的函数有:cusolverDn<t>geqrf()
、cusolverDn<t>syevd()
、cusolverDn<t>syevdx()
、cusolverDn<t>gesvdj()
、cusolverDnXgeqrf()
、cusolverDnXsyevd()
、cusolverDnXsyevdx()
、cusolverDnXgesvdr()
、 和cusolverDnXgesvdp()
。
-
-
已知的问题
-
同一设备上不同非阻塞 CUDA 流的并发执行
cusolverDn<t>getrf()
可能会导致死锁。cusolverDnXgetrf()
-
2.4. cuSPARSE库
2.4.1. cuSPARSE:版本 12.4
-
新功能
-
添加了稀疏矩阵向量乘法的预处理步骤
cusparseSpMV_preprocess()
。 -
添加了对混合实数和复数类型的支持
cusparseSpMM()
。 -
添加了一个新的 API,
cusparseSpSM_updateMatrix()
用于在 的分析和求解阶段之间更新稀疏矩阵cusparseSpSM()
。
-
-
已知的问题
-
cusparseSpMV()
当输出向量未与 16 字节对齐时,会引入无效的内存访问。
-
-
已解决的问题
-
cusparseSpVV()
当稀疏向量有许多非零时,提供了不正确的结果。
-
2.4.2. cuSPARSE:版本 12.3 更新 1
-
新功能
-
在 BSR SDMM 中添加了对 64 和 128 块大小的支持。
-
为 BSR SDMM 添加了预处理步骤,有助于提高主计算阶段的性能。
-
2.4.3. cuSPARSE:版本 12.3
-
新功能
-
cusparseSpSV_bufferSize()
和例程cusparseSpSV_analysis()
现在接受密集向量的 NULL 指针。 -
和例程现在接受带有 NULL 值指针
cusparseSpSM_bufferSize()
的cusparseSpSM_analysis()
密集矩阵描述符。
-
-
已知的问题
-
cusparseSpSV_analysis()
和例程cusparseSpSM_analysis()
是阻塞调用/不是异步的。 -
cusparseSpSV()
在矩阵 A 上使用切片 ELLPACK 格式和转置/转置共轭运算可能会出现错误结果。
-
-
已解决的问题
-
cusparseSpMV()
现在支持具有最小对齐的输出向量。 -
cusparseSpSV()
在某些情况下提供不确定的结果。 -
cusparseSpSV_analysis()
修复了在多线程环境中有时导致挂起的问题。 -
cusparseSpSV()
修复了cusparseSpSV()
当输出向量/矩阵或输入矩阵包含 NaN 时有时会产生错误输出的问题。
-
2.4.4. cuSPARSE:版本 12.2 更新 1
-
新功能
-
该库现在提供了在创建描述符期间将稀疏矩阵转储到文件以进行调试的机会。请参阅日志记录 API 1. Introduction — cuSPARSE 12.4 documentation。
-
-
已解决的问题
-
删除了
CUSPARSE_SPMM_CSR_ALG3
后备以避免算法选择过程中的混乱。 -
澄清了支持的操作
cusparseSDDMM()
。 -
cusparseCreateConstSlicedEll()
现在使用const
指针。 -
cusparseCsr2CscEx2()
修复了使用基数 1 索引的罕见边缘情况下的错误结果。 -
cusparseSpSM_bufferSize()
可以要求比需要的内存稍少的内存。 -
cusparseSpMV()
现在仅在严格需要时才检查缓冲区指针的有效性。
-
-
弃用
-
一些旧版 API 已被正式弃用。所有这些都添加了编译时警告。
-
2.4.5。cuSPARSE:版本 12.1 更新 1
-
新功能
-
为通用 API 引入了块稀疏行 (BSR) 稀疏矩阵存储,并支持 SDMMM 例程 (
cusparseSDDMM
)。 -
为通用 API 引入了 Sliced Ellpack (SELL) 稀疏矩阵存储格式,支持稀疏矩阵向量乘法 (
cusparseSpMV
) 和具有单个右侧的三角求解器 (cusparseSpSV
)。 -
添加了新的 API 调用 (
cusparseSpSV_updateMatrix
),以在分析步骤后使用单个右侧更新稀疏三角求解器中的矩阵值和/或矩阵对角线。
-
2.4.6。cuSPARSE:版本 12.0 更新 1
-
新功能
-
cusparseSDDMM()
现在支持混合精度计算。 -
改进了
cusparseSpMM()
NVIDIA Ampere 架构 GPU 上某些矩阵的 alg2 混合精度性能。 -
cusparseSpMV()
通过新的负载平衡算法提高了性能。 -
cusparseSpSV()
现在cusparseSpSM()
支持就地计算,即输出和输入向量/矩阵具有相同的内存地址。
-
-
已解决的问题
-
cusparseSpSM()
如果 RHS 矩阵的主维 (ld) 大于列数/行数,可能会产生错误的结果。
-
2.4.7. cuSPARSE:版本 12.0
-
新功能
-
JIT LTO 功能 (
cusparseSpMMOp()
) 从驱动程序切换到 nvJitLto 库。从 CUDA 12.0 开始,用户需要链接到libnvJitLto.so
,请参阅cuSPARSE 文档。JIT LTO 性能也得到了改进cusparseSpMMOpPlan()
。 -
引入了通用 API 的 const 描述符,例如
cusparseConstSpVecGet()
. 现在,通用 API 接口清楚地声明了 cuSPARSE 函数何时修改描述符及其数据。 -
添加了两种新算法以
cusparseSpGEMM()
降低内存利用率。第一个算法计算中间产品数量的严格限制,而第二个算法允许将计算划分为块。 -
添加了对、和 的
int8_t
支持。cusparseGather()
cusparseScatter()
cusparseCsr2cscEx2()
-
提高了
cusparseSpSV()
分析和求解阶段的性能。 -
提高了
cusparseSpSM()
分析和求解阶段的性能。 -
改进了
cusparseSDDMM()
性能并增加了对批量计算的支持。 -
提高
cusparseCsr2cscEx2()
性能。
-
-
已解决的问题
-
cusparseSpSV()
并cusparseSpSM()
可能产生错误的结果。 -
cusparseDnMatGetStridedBatch()
不接受。batchStride == 0
-
-
弃用
-
删除了已弃用的 CUDA 11.x API、枚举器和描述符。
-
2.5. 数学库
2.5.1. CUDA 数学:版本 12.4
-
已解决的问题
-
标头中的主机特定代码
cuda_fp16/bf16
现在不受类型双关的影响,并且在存在基于严格别名规则的优化的情况下可以正常工作。
-
2.5.2. CUDA 数学:版本 12.3
-
新功能
-
SIMD 整数 CUDA 数学 API 的性能得到改进。
-
-
已解决的问题
-
由于底层 nvcc 编译器问题(在版本 12.3 中已解决),如果使用编译器选项进行编译,来自和标头的
__hisinf()
数学 API会默默地产生错误结果。cuda_fp16.h
cuda_bf16.h
-std=c++20
-
-
已知的问题
-
cuda_fp16.h
建议和头文件的用户cuda_bf16.h
禁用主机编译器基于严格别名规则的优化(例如传递给主机 GCC 编译器),因为这些可能会干扰、、、类型实现-fno-strict-aliasing
中使用的类型双关惯用法,并使用户程序暴露于未定义的行为。请注意,标头通过以下方式抑制 GCC 诊断:#pragma GCC 诊断被忽略。此行为可能会在标头的未来版本中得到改进。__half
__half2
__nv_bfloat16
__nv_bfloat162
-Wstrict-aliasing
-
2.5.3. CUDA 数学:版本 12.2
-
新功能
-
CUDA Math API
__half
和__nv_bfloat16
类型获得了可用性改进,包括主机端对许多算术运算和转换的<emulated> 支持。 -
__half
类型__nv_bfloat16
具有与整型类型之间的隐式转换,现在默认情况下主机编译器可以使用这些隐式转换。由于重载解析不明确,这些可能会导致构建问题。建议用户更新代码以选择适当的重载。要选择退出,用户可能需要定义以下宏(这些宏将在未来的 CUDA 版本中删除):-
__CUDA_FP16_DISABLE_IMPLICIT_INTEGER_CONVERTS_FOR_HOST_COMPILERS__
-
__CUDA_BF16_DISABLE_IMPLICIT_INTEGER_CONVERTS_FOR_HOST_COMPILERS__
-
-
-
已解决的问题
-
在正在进行的测试中,NVIDIA 发现由于算法错误,默认舍入到最近偶数模式下的 64 位浮点除法结果可能会产生无穷大的虚假溢出。NVIDIA 建议所有需要严格 IEEE754 合规性的开发人员更新到 CUDA Toolkit 12.2 或更高版本。受影响的算法存在于离线编译和即时 (JIT) 编译中。由于 JIT 编译由驱动程序处理,因此当需要 IEEE754 合规性以及使用 JIT 时,NVIDIA 建议更新到大于或等于 R535(Windows 上为 R536)的驱动程序版本。这是软件算法修复,与特定硬件无关。
-
__expf()
更新了单精度固有函数和双__exp10f()
精度函数观察到的最坏情况误差范围asinh()
。acosh()
-
2.5.4. CUDA 数学:版本 12.1
-
新功能
-
atanf
、acosf
、asinf
、sinpif
、cospif
、powf
、erff
和中的性能和准确性改进tgammaf
。
-
2.5.5。CUDA 数学:版本 12.0
-
新功能
-
引入了新的整数/fp16/bf16 CUDA 数学 API,以帮助展示新 DPX 指令的性能优势。请参阅CUDA Math API :: CUDA Toolkit Documentation。
-
-
已知的问题
-
导致双精度除法算法在默认“舍入到最接近的偶数模式”下的双精度输入会产生虚假溢出:在预期的位置传递无限结果。受影响的 CUDA 数学 API:. 受影响的CUDA语言操作:双精度/设备代码中的操作。
DBL_MAX 0x7FEF_FFFF_FFFF_FFFF
__ddiv_rn()
-
-
弃用
-
所有以前弃用的未记录的 API 均已从 CUDA 12.0 中删除。
-
2.6。NVIDIA 性能基元 (NPP)
2.6.1. NPP:版本 12.4
-
新功能
-
增强了大文件支持
size_t
。
-
2.6.2. NPP:版本 12.0
-
弃用
-
从下一版本开始弃用非 CTX API 支持。
-
-
已解决的问题
-
NPP
ResizeSqrPixel
API 的性能问题现已修复,并且性能得到改善。
-
2.7. nvJPEG 库
2.7.1. nvJPEG:版本 12.4
-
新功能
-
单图像 CUDA 解码的 IDCT 性能优化。
-
零复制行为已更改:设置
NVJPEG_FLAGS_REDUCED_MEMORY_DECODE_ZERO_COPY
标志将不再启用NVJPEG_FLAGS_REDUCED_MEMORY_DECODE
。
-
2.7.2. nvJPEG:版本 12.3 更新 1
-
新功能
-
nvjpegBufferPinnedResize
新API:nvjpegBufferDeviceResize
可用于在使用固定缓冲区和设备缓冲区之前调整其大小。
-
2.7.3. nvJPEG:版本 12.2
-
新功能
-
添加了对 JPEG 无损解码(进程 14,FO 预测)的支持。
-
L4T 现在支持 nvJPEG。
-
2.7.4. nvJPEG:版本 12.0
-
新功能
-
改进了 nvJPEG 编解码器的 GPU 内存优化。
-
-
已解决的问题
-
nvJPEGDecMultipleInstances
解决了使用大量线程进行测试时导致运行时失败的问题。 -
CMYK 四分量颜色转换的问题现已解决。
-
-
已知的问题
-
后端
NVJPEG_BACKEND_GPU_HYBRID
- 无法处理具有额外扫描长度的比特流。
-
-
弃用
-
Encoder中哈夫曼表的复用(
nvjpegEncoderParamsCopyHuffmanTables
)。
-
1
仅适用于选定的 Linux 发行版
3、注意事项
3.1. 注意
本文档仅供参考,不应被视为对产品特定功能、状况或质量的保证。NVIDIA Corporation(“NVIDIA”)对本文档中包含的信息的准确性或完整性不做任何明示或暗示的陈述或保证,并且对本文中包含的任何错误不承担任何责任。NVIDIA 对此类信息的后果或使用或因使用此类信息而可能导致的任何专利或第三方其他权利的侵犯不承担任何责任。本文档不承诺开发、发布或交付任何材料(定义如下)、代码或功能。
NVIDIA 保留随时对本文档进行更正、修改、增强、改进和任何其他更改的权利,恕不另行通知。
客户应在下订单前获取最新的相关信息,并应验证该等信息是最新且完整的。
NVIDIA 产品的销售须遵守订单确认时提供的 NVIDIA 标准销售条款和条件,除非 NVIDIA 授权代表与客户签署的个人销售协议(“销售条款”)中另有约定。NVIDIA 特此明确反对在购买本文档中引用的 NVIDIA 产品时应用任何客户一般条款和条件。本文件不直接或间接形成任何合同义务。
NVIDIA 产品并非设计、授权或保证适用于医疗、军事、飞机、太空或生命支持设备,也不适用于 NVIDIA 产品故障或故障可合理预期导致人身伤害的应用,死亡、财产或环境损害。NVIDIA 对于在此类设备或应用程序中包含和/或使用 NVIDIA 产品不承担任何责任,因此此类包含和/或使用的风险由客户自行承担。
NVIDIA 不声明或保证基于本文档的产品适合任何指定用途。每个产品的所有参数的测试不一定由 NVIDIA 进行。客户全权负责评估和确定本文档中包含的任何信息的适用性,确保产品适合并适合客户计划的应用,并对应用程序执行必要的测试,以避免应用程序出现故障或产品。客户产品设计中的缺陷可能会影响 NVIDIA 产品的质量和可靠性,并可能导致超出本文档中包含的条件和/或要求的其他或不同的条件和/或要求。NVIDIA 不承担与任何违约、损坏、费用、
本文档中的任何 NVIDIA 专利权、版权或其他 NVIDIA 知识产权均未授予任何明示或暗示的许可。NVIDIA 发布的有关第三方产品或服务的信息并不构成 NVIDIA 使用此类产品或服务的许可,也不构成其保证或认可。使用此类信息可能需要第三方根据其专利或其他知识产权获得许可,或者根据 NVIDIA 的专利或其他知识产权获得 NVIDIA 许可。
仅在事先获得 NVIDIA 书面批准、未经修改且完全符合所有适用的出口法律和法规并附有所有相关条件、限制和通知的情况下,才允许复制本文档中的信息。
本文档以及所有 NVIDIA 设计规范、参考板、文件、图纸、诊断、列表和其他文档(统称或单独称为“材料”)均按“原样”提供。NVIDIA 不对这些材料做出任何明示、暗示、法定或其他形式的保证,并明确否认对非侵权、适销性和特定用途适用性的所有默示保证。在法律不禁止的范围内,在任何情况下,NVIDIA 均不对任何损害承担责任,包括但不限于任何直接、间接、特殊、附带、惩罚性或后果性损害,无论其原因如何,也无论责任理论如何,对本文档的任何使用,即使 NVIDIA 已被告知可能会造成此类损害。