cuda和显卡驱动对应版本关系

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_fs

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

‌Nsight是由NVIDIA提供的一套系统级和内核级的性能分析工具,主要用于分析和优化GPU和CPU上的应用程序性能

运行 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中有详细描述

表 2 CUDA 工具包和 CUDA 次要版本兼容性所需的最低驱动程序版本 

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 中记录的已知问题相同。

  • cublasLtMatmulK 等于 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}可能会返回错误的偏差梯度结果。

  • cublasLtMatmulK 等于 1,CUBLASLT_EPILOGUE_D{RELU,GELU}如果没有提供工作空间,尾声可能会产生非法内存访问。该问题自 cuBLAS 11.6 起就存在。

  • cublasLtMatmul使用 A 和 B 类型 equal CUDA_R_8I、scale 和 C 类型 equalCUDA_R_32I以及计算类型 equalsCUBLAS_COMPUTE_32I{,_PEDANTIC}可能会错误地将结果转换为浮点数据类型,然后返回整数,从而导致精度损失(对于大于 2^24 的输出)。该问题自 cuBLAS 11.0 起就存在。

  • 当在 CUDA Graph 流捕获中捕获时,cuBLAS 例程可以通过使用流排序分配 APIcudaMallocAsynccudaFreeAsync. 但是,由于当前不支持子图或从设备启动的图中的内存节点,因此在这种情况下尝试捕获 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_tcublasLtMatrixTransformDesc_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。

  • 添加了int64API 以支持更大的问题规模;参考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_BIASCUBLASLT_EPILOGUE_BIAS尾声的偏差。

  • 禁止在同一翻译单元中包含cublas.h和。cublas_v2.h

  • 删除:

    • CUBLAS_MATMUL_STAGES_16x80CUBLAS_MATMUL_STAGES_64x80cublasLtMatmulStages_t. 没有内核再利用这些阶段。

    • cublasLt3mMode_tCUBLASLT_MATMUL_PREF_MATH_MODE_MASK、 和CUBLASLT_MATMUL_PREF_GAUSSIAN_MODE_MASK来自cublasLtMatmulPreferenceAttributes_t。相反,使用 中的相应标志cublasLtNumericalImplFlags_t

    • CUBLASLT_MATMUL_PREF_POINTER_MODE_MASKCUBLASLT_MATMUL_PREF_EPILOGUE_MASK、 和CUBLASLT_MATMUL_PREF_SM_COUNT_TARGET来自cublasLtMatmulPreferenceAttributes_t。相应的参数直接取自cublasLtMatmulDesc_t.

    • CUBLASLT_POINTER_MODE_MASK_NO_FILTERINGcublasLtPointerModeMask_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 不支持此例程,并将在未来版本中从标头中删除。

已解决的问题

  • 修复了使用用户指定的输出步长(即使用高级数据布局 APIostride的组件)执行异位实数到复数 (R2C) 转换时可能导致用户数据被覆盖的问题。

  • 修复了当和均为 时libcufftwFFTW之间不一致的行为。从现在开始,就像在 FFTW 中一样,作为参数传递相当于传递 n,即该维度的逻辑大小。inembedonembednullptr / NULLnullptr / NULLinembed/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(除了cufftCreatecufftDestroy),并且当活动计划总数超过 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 架构添加许多新的加速案例。

已知的问题

已解决的问题

  • cuFFT 计划的每个计划都会无意中产生少量内存开销(几 kB)。这已解决。

2.3、cuSOLVER 库

2.3.1、cuSOLVER:版本 12.4

新功能

  • cusolverDnXlarftcusolverDnXlarft_bufferSize引入了 API。cusolverDnXlarft形成真实块反射器的三角因子,同时cusolverDnXlarft_bufferSize返回其所需的工作空间大小(以字节为单位)。

已知的问题

  • cusolverDnXtrtri_bufferSize`返回不正确的所需设备工作空间大小。作为解决方法,可以将返回的大小乘以数据类型的大小(例如,如果矩阵 A 为 double 类型,则为 8 个字节)以获得正确的工作区大小。

2.3.2、cuSOLVER:版本 12.2 更新 2

已解决的问题

  • cusolverDn<t>gesvd()修复了、cusolverDnGesvd()和 的问题,如果或不等于 ' ' cusolverDnXgesvd(),则可能会导致大于 18918 的矩阵出现错误结果。jobujobvtN

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

新功能

已解决的问题

  • 删除了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.hcuda_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

新功能

  • atanfacosfasinfsinpifcospifpowferff和中的性能和准确性改进tgammaf

2.5.5、CUDA 数学:版本 12.0

新功能

已知的问题

  • 导致双精度除法算法在默认“舍入到最接近的偶数模式”下的双精度输入会产生虚假溢出:在预期的位置传递无限结果。受影响的 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 ResizeSqrPixelAPI 的性能问题现已修复,并且性能得到改善。

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 发行版

转自:cuda和显卡驱动对应版本关系_nvidia驱动对应的cuda版本-CSDN博客 

### 关于CUDA与显卡版本的兼容性 CUDA 是由 NVIDIA 开发的一种并行计算平台编程模型,允许开发者利用 GPU 进行通用计算。CUDA 的功能实现依赖于特定的显卡驱动版本以及硬件架构的支持。以下是关于 CUDA 显卡版本兼容性的详细介绍: #### 1. **CUDA显卡驱动的要求** 每一代 CUDA 都需要最低版本显卡驱动来提供必要的支持。这种需求是由 CUDA 所需的功能集决定的。如果显卡驱动过低,则可能无法加载某些 CUDA 功能模块[^1]。 - 每个版本显卡驱动都有其支持的最大 CUDA 版本,并能够向下兼容旧版 CUDA。 - 虽然可以在同一台主机上安装多个 CUDA 工具包版本,但通常只建议安装单一版本显卡驱动以避免冲突[^3]。 #### 2. **CUDA 与显卡型号的关系** NVIDIA 显卡按照性能分为不同系列,如 GeForce、Tesla Quadro 等。这些显卡内部采用不同的微架构(Compute Capability),而 CUDA 只能在具有相应 Compute Capability 的设备上运行。例如: - 计算能力较低的显卡(如 G/GS<GT<GTS<GTX)可能仅能支持较老版本CUDA[^2]。 - 更新的显卡(如 RTX 系列)则具备更高的计算能力更广泛的 CUDA 支持范围。 #### 3. **多版本 CUDA 的管理方式** 当项目对显卡驱动无严格要求时,可通过调整环境变量中的 CUDA 路径快速切换到所需的 CUDA 版本。具体操作如下: - 将目标 CUDA 安装路径通过 `export PATH` 或者创建软链接的方式设置为默认路径。 - 如果项目涉及底层编译或特殊优化,则仍需匹配相应的显卡驱动版本。 #### 4. **选择合适的 CUDA 版本** 实际应用中,CUDA 版本的选择不仅取决于显卡本身的能力,还受到其他因素的影响,包括但不限于: - 上层框架的需求(如 TensorFlow、PyTorch、Caffe 等)。这些框架往往针对某几个固定的 CUDA 版本进行了测试适配[^4]。 - 编译器及其插件的具体配置(如 Visual Studio 或 GCC)也可能限制可用的 CUDA 版本。 #### 示例代码:检查当前系统的 CUDA 驱动版本 以下是一个简单的 Python 脚本用于检测系统上的 CUDA 显卡驱动版本: ```python import torch print(f"CUDA Version: {torch.version.cuda}") print(f"NVIDIA Driver Version: {torch.cuda.driver_version() / 1000} (in decimal format)") ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值