NVIDIA CUDA 工具包发行说明
CUDA 工具包的发行说明。
NVIDIA® CUDA® 工具包的发行说明可在线找到:1. CUDA 12.4 Release Notes — Release Notes 12.4 documentation。
笔记
发行说明已重新组织为两个主要部分:常规 CUDA 发行说明和 CUDA 库发行说明(包括 12.x 版本的历史信息)。
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。
本节列出了新的常规 CUDA 和 CUDA 编译器功能。
nvidia-smi dmon --gpm-metrics
FUNCTION_NOT_FOUND
,如果 NVML 比驱动程序新,则会正常失败
__maxnreg__
内核函数限定符,允许用户直接指定在 CUDA C++ 中线程块中分配给单个线程的最大寄存器数量。
-fdevice-syntax-only
,用于在前端语法检查后结束设备编译。此选项可以提供源代码更改的快速反馈(警告和错误),因为它不会调用优化器。注意:此选项不会生成有效的目标代码。
-minimal
为 NVRTC 编译添加新标志。该-minimal
标志省略了某些语言功能以减少小程序的编译时间。特别是,省略了以下内容:
cudaTextureObject_t
)。
cudaMalloc
.
cuda/tools/cudart/driver_types.h
,通常以前缀“cuda”命名,例如cudaError_t
。
-pic
当编译模式为整个程序编译时,PTXAS 默认启用位置无关代码 ( )。-pic=false
用户可以通过指定PTXAS 选项来选择退出。默认情况下,调试编译和单独编译继续禁用位置无关代码。将来,位置无关的代码将允许 CUDA 驱动程序跨上下文共享文本部分的单个副本,并减少驻留内存的使用。
dp4a
或者dp2a
指令会在 ptx 中生成,并由于整数溢出而导致不正确的行为。此问题已在 CUDA 12.4 中修复。
当前版本的 CUDA 软件中已弃用的功能在当前版本中仍然有效,但它们的文档可能已被删除,并且在未来的版本中将不再受到正式支持。我们建议开发人员在其软件中采用替代解决方案来替代这些功能。
CUDA Toolkit 12.4 不再支持 NVIDIA CUDA 对 PowerPC 架构的支持。对此架构的支持已被视为已弃用,并将在即将发布的版本中删除。
CUDA Toolkit 12.4 不再支持 Red Hat Enterprise Linux 7 和 CentOS 7。即将发布的版本中将删除对这些操作系统的支持。
CUDA Toolkit 12.4 不再支持以下主机编译器:
本节介绍 12.x 版本的 CUDA 库发行说明。
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()
。
CUBLAS_POINTER_MODE_DEVICE
。这与 cuBLAS 12.3 Update 1 中记录的已知问题相同。
cublasLtMatmul
K 等于 1,尾声CUBLASLT_EPILOGUE_D{RELU,GELU}_BGRAD
可以越界访问工作区。该问题自 cuBLAS 11.3 Update 1 起就存在。
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
.
cublasLtMatmulDescInit()
不考虑使用cublasLtMatmulDescSetAttribute()
.
cublasLtMatmul
当 K 等于 1 时,尾声CUBLASLT_EPILOGUE_BGRAD{A,B}
可能会返回错误的偏差梯度结果。
cublasLtMatmul
K 等于 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 起就存在。
cudaMallocAsync
和cudaFreeAsync
. 但是,由于当前不支持子图或从设备启动的图中的内存节点,因此在这种情况下尝试捕获 cuBLAS 例程可能会失败。为了避免此问题,请使用该cublasSetWorkspace()
函数来提供用户拥有的工作区内存。
cublasLtMatmulDescInit()
可能不考虑使用cublasLtMatmulDescSetAttribute()
. cublasLtMatmulDescCreate()
要解决此问题,请使用而不是创建矩阵乘法描述符cublasLtMatmulDescInit()
。这将在即将发布的版本中修复。
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
。内核将第一批的偏差向量应用于所有批次。这将在未来版本中修复。
cublasLtMatrixLayoutCreate()
,所指向的对象cublasLtMatrixLayout_t
小于cublasLtMatrixLayoutOpaque_t
(但足以容纳内部结构)。因此,不应显式取消引用或复制该对象,因为这可能会导致越界访问。如果需要序列化布局或复制它,建议手动分配一个 sizesizeof(cublasLtMatrixLayoutOpaque_t)
字节的对象,并使用cublasLtMatrixLayoutInit()
函数初始化它。这同样适用于cublasLtMatmulDesc_t
和cublasLtMatrixTransformDesc_t
。该问题将在未来版本中通过确保cublasLtMatrixLayoutCreate()
分配至少sizeof(cublasLtMatrixLayoutOpaque_t)
字节来解决。
CUBLAS_WORKSPACE_CONFIG
一种可能的解决方法是在 NVIDIA Hopper 架构上运行 cuBLAS 时将环境变量设置为 :32768:2。
cublasLtMatmul
现在支持非零 beta 的 FP8。
int64
API 以支持更大的问题规模;参考64位整数接口。
cublasLtMatmul
为尾声添加了更多 Hopper 特定的内核:
CUBLASLT_EPILOGUE_BGRAD{A,B}
CUBLASLT_EPILOGUE_{RELU,GELU}_AUX
CUBLASLT_EPILOGUE_D{RELU,GELU}
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
被移除的人。
cufftXt.h
)。cuFFT 不支持此例程,并将在未来版本中从标头中删除。
ostride
的组件)执行异位实数到复数 (R2C) 转换时可能导致用户数据被覆盖的问题。
libcufftw
和FFTW之间不一致的行为。从现在开始,就像在 FFTW 中一样,作为参数传递相当于传递 n,即该维度的逻辑大小。inembedonembednullptr / NULLnullptr / NULLinembed/onembed
cufftExec
现在,如果在内核启动期间出现错误(例如由于缺少 CUDA 上下文),复杂到复杂 (C2C) 执行函数(及类似函数)可以正确地错误输出。
cufftSetStream
可以在多 GPU 计划中使用来自任何 GPU 上下文的流,而不是来自 中列出的第一个 GPU 的主要上下文cufftXtSetGPUs
。
cufftXtSetGPUs
。
cufftCreate
当一个线程调用( 或cufftDestroy
) 而另一个线程调用任何 API(除了cufftCreate
或cufftDestroy
),并且当活动计划总数超过 1023 时,cuFFT 会出现竞争状况。
cufftXtSetGPUs
。
cusolverDnXlarft
并cusolverDnXlarft_bufferSize
引入了 API。cusolverDnXlarft
形成真实块反射器的三角因子,同时cusolverDnXlarft_bufferSize
返回其所需的工作空间大小(以字节为单位)。
cusolverDn<t>gesvd()
修复了、cusolverDnGesvd()
和 的问题,如果或不等于 ' ' cusolverDnXgesvd()
,则可能会导致大于 18918 的矩阵出现错误结果。jobujobvtN
cusolverDnSetDeterministicMode()
和cusolverDnGetDeterministicMode()
。受影响的函数有:cusolverDn<t>geqrf()
、cusolverDn<t>syevd()
、cusolverDn<t>syevdx()
、cusolverDn<t>gesvdj()
、cusolverDnXgeqrf()
、cusolverDnXsyevd()
、cusolverDnXsyevdx()
、cusolverDnXgesvdr()
、 和cusolverDnXgesvdp()
。
cusolverDn<t>getrf()
可能会导致死锁。cusolverDnXgetrf()
cusparseSpMV_preprocess()
。
cusparseSpMM()
。
cusparseSpSM_updateMatrix()
用于在 的分析和求解阶段之间更新稀疏矩阵cusparseSpSM()
。
cusparseSpMV()
当输出向量未与 16 字节对齐时,会引入无效的内存访问。
cusparseSpVV()
当稀疏向量有许多非零时,提供了不正确的结果。
cusparseSpSV_bufferSize()
和例程cusparseSpSV_analysis()
现在接受密集向量的 NULL 指针。
cusparseSpSM_bufferSize()
的cusparseSpSM_analysis()
密集矩阵描述符。
cusparseSpSV_analysis()
和例程cusparseSpSM_analysis()
是阻塞调用/不是异步的。
cusparseSpSV()
在矩阵 A 上使用切片 ELLPACK 格式和转置/转置共轭运算可能会出现错误结果。
cusparseSpMV()
现在支持具有最小对齐的输出向量。
cusparseSpSV()
在某些情况下提供不确定的结果。
cusparseSpSV_analysis()
修复了在多线程环境中有时导致挂起的问题。
cusparseSpSV()
修复了cusparseSpSV()
当输出向量/矩阵或输入矩阵包含 NaN 时有时会产生错误输出的问题。
CUSPARSE_SPMM_CSR_ALG3
后备以避免算法选择过程中的混乱。
cusparseSDDMM()
。
cusparseCreateConstSlicedEll()
现在使用const
指针。
cusparseCsr2CscEx2()
修复了使用基数 1 索引的罕见边缘情况下的错误结果。
cusparseSpSM_bufferSize()
可以要求比需要的内存稍少的内存。
cusparseSpMV()
现在仅在严格需要时才检查缓冲区指针的有效性。
cusparseSDDMM
)。
cusparseSpMV
) 和具有单个右侧的三角求解器 ( cusparseSpSV
)。
cusparseSpSV_updateMatrix
),以在分析步骤后使用单个右侧更新稀疏三角求解器中的矩阵值和/或矩阵对角线。
cusparseSDDMM()
现在支持混合精度计算。
cusparseSpMM()
NVIDIA Ampere 架构 GPU 上某些矩阵的 alg2 混合精度性能。
cusparseSpMV()
通过新的负载平衡算法提高了性能。
cusparseSpSV()
现在cusparseSpSM()
支持就地计算,即输出和输入向量/矩阵具有相同的内存地址。
cusparseSpSM()
如果 RHS 矩阵的主维 (ld) 大于列数/行数,可能会产生错误的结果。
cusparseSpMMOp()
) 从驱动程序切换到 nvJitLto 库。从 CUDA 12.0 开始,用户需要链接到libnvJitLto.so
,请参阅cuSPARSE 文档。JIT LTO 性能也得到了改进cusparseSpMMOpPlan()
。
cusparseConstSpVecGet()
. 现在,通用 API 接口清楚地声明了 cuSPARSE 函数何时修改描述符及其数据。
cusparseSpGEMM()
降低内存利用率。第一个算法计算中间产品数量的严格限制,而第二个算法允许将计算划分为块。
int8_t
支持。cusparseGather()cusparseScatter()cusparseCsr2cscEx2()
cusparseSpSV()
分析和求解阶段的性能。
cusparseSpSM()
分析和求解阶段的性能。
cusparseSDDMM()
性能并增加了对批量计算的支持。
cusparseCsr2cscEx2()
性能。
cusparseSpSV()
并cusparseSpSM()
可能产生错误的结果。
cusparseDnMatGetStridedBatch()
不接受。batchStride == 0
cuda_fp16/bf16
现在不受类型双关的影响,并且在存在基于严格别名规则的优化的情况下可以正常工作。
__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
__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__
__expf()
更新了单精度固有函数和双__exp10f()
精度函数观察到的最坏情况误差范围asinh()
。acosh()
atanf
、acosf
、asinf
、sinpif
、cospif
、powf
、erff
和中的性能和准确性改进tgammaf
。
DBL_MAX 0x7FEF_FFFF_FFFF_FFFF__ddiv_rn()
size_t
。
ResizeSqrPixel
API 的性能问题现已修复,并且性能得到改善。
NVJPEG_FLAGS_REDUCED_MEMORY_DECODE_ZERO_COPY
标志将不再启用NVJPEG_FLAGS_REDUCED_MEMORY_DECODE
。
nvjpegBufferPinnedResize
新API:nvjpegBufferDeviceResize
可用于在使用固定缓冲区和设备缓冲区之前调整其大小。
nvJPEGDecMultipleInstances
解决了使用大量线程进行测试时导致运行时失败的问题。
NVJPEG_BACKEND_GPU_HYBRID
- 无法处理具有额外扫描长度的比特流。
nvjpegEncoderParamsCopyHuffmanTables
)。
仅适用于选定的 Linux 发行版
本文档仅供参考,不应被视为对产品特定功能、状况或质量的保证。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 已被告知可能会造成此类损害。