CUDA 工具包文档 12.9
开发、优化和部署GPU加速应用
NVIDIA® CUDA® 工具包为创建高性能GPU加速应用提供了开发环境。借助CUDA工具包,您可以在GPU加速的嵌入式系统、桌面工作站、企业数据中心、云平台和HPC超级计算机上开发、优化和部署应用程序。该工具包含GPU加速库、调试和优化工具、C/C++编译器以及用于部署应用程序的运行时库。
利用内置的多GPU配置计算分发能力,科学家和研究人员可以开发从单GPU工作站扩展到数千个GPU云部署的应用程序。
- 版本说明
 CUDA工具包的版本发布说明。
- CUDA功能存档
 按版本列出的CUDA功能列表。
- 最终用户许可协议
 - 
CUDA工具包最终用户许可协议适用于NVIDIA CUDA工具包、 NVIDIA CUDA示例代码 (view on GitHub)、 NVIDIA显示驱动程序、NVIDIA Nsight工具(Visual Studio版)以及相关的 CUDA API文档、编程模型和开发工具。如果您不同意该许可协议的条款和条件, 请不要下载或使用该软件。
 
安装指南
- 快速入门指南
 本指南提供了在标准系统上安装和验证CUDA的最简初步操作说明。
- Windows 安装指南
 本指南讨论如何在Microsoft Windows系统上安装并检查CUDA开发工具的正确运行。
- Linux安装指南
 本指南讨论如何在GNU/Linux系统上安装并验证CUDA开发工具的正确运行。
编程指南
- 编程指南
 本指南详细探讨了CUDA编程模型和编程接口,随后阐述了硬件实现原理,并提供了实现最佳性能的指导建议。附录部分包含所有支持CUDA的设备清单、C++语言扩展功能的详细说明、支持的数学函数列表、主机与设备代码中可用的C++特性、纹理获取的细节说明、各类设备的技术规格,最后介绍了底层驱动API。
- 最佳实践指南
 本指南介绍了成熟的并行化和优化技术,并解释了能够极大简化面向支持CUDA的GPU架构编程的编码隐喻和习惯用法。其目的是提供使用CUDA工具包从NVIDIA GPU获取最佳性能的指导原则。
- Maxwell兼容性指南
 本应用指南旨在帮助开发者确保其NVIDIA CUDA应用程序能够在基于NVIDIA Maxwell架构的GPU上正常运行。本文档提供了确保您的软件应用与Maxwell兼容的指导建议。
- Pascal兼容性指南
 本应用说明旨在帮助开发者确保其NVIDIA CUDA应用程序能够在基于NVIDIA Pascal架构的GPU上正常运行。本文档提供了相关指导,以确保您的软件应用与Pascal架构兼容。
- Volta兼容性指南
 本应用说明旨在帮助开发者确保其NVIDIA CUDA应用程序能够在基于NVIDIA Volta架构的GPU上正常运行。本文档提供了确保您的软件应用程序与Volta兼容的指导。
- 图灵兼容性指南
 本应用说明旨在帮助开发者确保其NVIDIA CUDA应用程序能在基于NVIDIA图灵架构的GPU上正常运行。本文档提供了确保您的软件应用与图灵架构兼容的指导。
- NVIDIA安培GPU架构兼容性指南
 本应用说明旨在帮助开发者确保其NVIDIA CUDA应用程序能够在基于NVIDIA安培GPU架构的GPU上正常运行。本文档提供指导以确保您的软件应用程序与NVIDIA安培GPU架构兼容。
- Hopper兼容性指南
 本应用说明旨在帮助开发者确保其NVIDIA CUDA应用程序能够在Hopper GPU上正常运行。本文档提供指导,以确保您的软件应用与Hopper架构兼容。
- Ada兼容性指南
 本应用说明旨在帮助开发者确保其NVIDIA CUDA应用程序能在Ada GPU上正常运行。本文档提供指导以确保您的软件应用与Ada架构兼容。
- Blackwell 兼容性指南
 本应用说明旨在帮助开发者确保其NVIDIA CUDA应用程序能在Blackwell GPU上正常运行。本文档提供指导以确保您的软件应用程序与Blackwell架构兼容。
- Maxwell调优指南
 Maxwell是NVIDIA第四代CUDA计算应用架构。遵循Kepler架构最佳实践的应用程序通常无需更改代码即可在Maxwell架构上获得加速。本指南总结了如何通过利用Maxwell架构特性对应用程序进行微调以获得额外加速的方法。
- Pascal调优指南
 Pascal是NVIDIA第五代CUDA计算应用架构。遵循Maxwell架构最佳实践的应用程序通常无需更改代码即可在Pascal架构上获得加速。本指南总结了如何通过利用Pascal架构特性来微调应用程序以获得额外加速。
- Volta调优指南
 Volta是NVIDIA第六代CUDA计算应用架构。遵循Pascal架构最佳实践的应用程序通常无需修改代码即可在Volta架构上获得加速。本指南总结了如何通过利用Volta架构特性对应用程序进行微调以获得额外加速的方法。
- 图灵调优指南
 图灵是NVIDIA第七代面向CUDA计算应用的架构。遵循帕斯卡架构最佳实践的应用程序通常无需修改代码即可在图灵架构上获得加速。本指南总结了如何通过利用图灵架构特性对应用程序进行微调以获得额外加速的方法。
- NVIDIA安培GPU架构调优指南
 NVIDIA Ampere GPU架构是NVIDIA第八代面向CUDA计算应用的架构。遵循NVIDIA Volta架构最佳实践的应用程序通常无需任何代码修改即可在NVIDIA Ampere GPU架构上获得加速。本指南总结了如何通过利用NVIDIA Ampere GPU架构的特性来微调应用程序以获得额外加速。
- Hopper调优指南
 Hopper GPU架构是NVIDIA第九代专为CUDA计算应用设计的架构。遵循NVIDIA Volta架构最佳实践的应用程序通常无需修改代码即可在Hopper GPU架构上获得加速。本指南总结了如何通过利用Hopper GPU架构的特性对应用程序进行微调,以获得额外的加速效果。
- Ada调优指南
 NVIDIA® Ada GPU架构是NVIDIA第十代面向CUDA®计算应用的架构。NVIDIA Ada GPU架构保留并扩展了由前代NVIDIA GPU架构(如NVIDIA Ampere和Turing架构)提供的相同CUDA编程模型,遵循这些架构最佳实践的应用程序通常无需任何代码更改即可在NVIDIA Ada架构上获得加速。本指南总结了如何通过利用NVIDIA Ada GPU架构的特性对应用程序进行微调以获得额外加速。
- Blackwell调优指南
 NVIDIA® Blackwell GPU架构是NVIDIA为CUDA®计算应用推出的最新架构。NVIDIA Blackwell GPU架构保留并扩展了前代NVIDIA GPU架构(如NVIDIA Ampere和Turing架构)提供的相同CUDA编程模型,遵循这些架构最佳实践的应用程序通常无需更改代码即可在NVIDIA Blackwell架构上获得加速。本指南总结了如何通过利用NVIDIA Blackwell GPU架构的特性来微调应用程序以获得额外加速。
- PTX ISA
 本指南详细介绍了PTX的使用方法,这是一种底层并行线程执行虚拟机与指令集架构(ISA)。PTX将GPU暴露为数据并行计算设备。
- PTX互操作性
 本文档展示如何编写符合ABI规范并能与其他CUDA代码互操作的PTX代码。
- 内联PTX汇编
 本文档展示如何将PTX(并行线程执行)汇编语言语句内联到CUDA代码中。它描述了可用的汇编语句参数和约束条件,同时还提供了一些您可能遇到的常见问题列表。
CUDA API 参考文档
- CUDA Runtime API
 结构体中的字段可能以与声明顺序不同的顺序出现。
- CUDA 驱动 API
 结构体中的字段可能以与声明顺序不同的顺序出现。
- CUDA数学API
 CUDA数学API。
- cuBLAS
 cuBLAS库是基于NVIDIA CUDA运行时实现的BLAS(基础线性代数子程序)库。它允许用户访问NVIDIA图形处理单元(GPU)的计算资源,但不会自动跨多个GPU进行并行化。
- cuDLA API
 cuDLA API。
- NVBLAS
 NVBLAS库是一个基于NVIDIA cuBLAS库构建的多GPU加速即插即用BLAS(基础线性代数子程序)。
- nvJPEG
 nvJPEG库为深度学习和超大规模多媒体应用中常用的图像格式提供了高性能的GPU加速JPEG解码功能。
- cuFFT
 cuFFT库用户指南。
- CUB
 CUB 用户指南。
- CUDA C++ 标准库
 libcu++(CUDA C++标准库)的API参考文档。
- cuFile API 参考指南
 NVIDIA® GPUDirect® Storage cuFile API参考指南提供了关于cuFile API参考指南预览版的信息,该指南用于应用程序和框架中以利用GDS技术,并描述了这些API的用途、上下文和操作,这些API是GDS技术的一部分。
- cuRAND
 cuRAND库用户指南。
- cuSPARSE
 cuSPARSE库用户指南。
- NPP
 NVIDIA NPP是一个用于执行CUDA加速处理的函数库。该库的初始功能集专注于图像和视频处理,对这些领域的开发者具有广泛适用性。NPP将随着时间的推移不断发展,以涵盖更多问题领域中的计算密集型任务。NPP库的编写旨在保持高性能的同时最大化灵活性。
- nvJitLink
 nvJitLink库的用户指南。
- nvFatbin
 nvFatbin库的用户指南。
- NVRTC (运行时编译)
 NVRTC是CUDA C++的运行时编译库。它接收字符串形式的CUDA C++源代码,并创建可用于获取PTX的句柄。NVRTC生成的PTX字符串可通过CUDA驱动API的cuModuleLoadData和cuModuleLoadDataEx加载,并通过cuLinkAddData与其他模块链接。这种机制通常能提供纯离线静态编译无法实现的优化和性能。
- Thrust
 C++并行算法库。
- cuSOLVER
 cuSOLVER库用户指南。
PTX编译器API参考
- PTX编译器API
 本指南展示如何使用静态PTX编译器库提供的API将PTX程序编译为GPU汇编代码。
- CUDA演示套件
 本文档介绍随CUDA演示套件一同提供的示例应用程序。
- WSL上的CUDA
 本指南旨在帮助用户在Linux的Windows子系统(WSL 2)上开始使用NVIDIA CUDA。该指南涵盖了在此环境中安装和运行CUDA应用程序及容器的相关内容。
- 多实例GPU (MIG)
 本版用户指南介绍了NVIDIA® A100 GPU的多实例GPU功能。
- CUDA兼容性
 本文档介绍CUDA兼容性,包括CUDA增强兼容性和CUDA前向兼容升级。
- CUPTI
 CUPTI-API。CUDA性能分析工具接口(CUPTI)支持创建针对CUDA应用程序的性能分析和追踪工具。
- 调试器API
 CUDA调试器API。
- GPUDirect RDMA
 Kepler级GPU和CUDA 5.0引入的一项技术,当设备使用PCI Express的标准功能共享相同上游根复合体时,能够在PCI Express总线上为GPU与第三方对等设备之间的通信提供直接路径。本文档介绍了该技术,并描述了在Linux设备驱动模型中启用与NVIDIA GPU的GPUDirect RDMA连接所需的步骤。
- GPUDirect存储
 GPUDirect Storage的文档。
- vGPU
 支持CUDA的虚拟GPU。
其他
工具
- NVCC
 这是CUDA编译器驱动nvcc的参考文档。nvcc支持多种常规编译器选项,例如用于定义宏、包含/库路径以及控制编译过程。
- CUDA-GDB
 NVIDIA推出的用于调试在Linux和QNX系统上运行的CUDA应用程序的工具,为开发者提供了在实际硬件上调试CUDA应用程序的机制。CUDA-GDB是GNU项目调试器GDB在x86-64架构上的扩展版本。
- 计算消毒器
 Compute Sanitizer 用户指南。
- Nsight Eclipse插件安装指南
 Nsight Eclipse插件安装指南
- Nsight Eclipse插件版
 Nsight Eclipse插件版入门指南
- Nsight Systems
 Nsight Systems的文档。
- Nsight Compute
 NVIDIA Nsight Compute是面向CUDA应用的下一代交互式内核分析器。它通过用户界面和命令行工具提供详细的性能指标和API调试功能。
- Nsight Visual Studio 版本
 Nsight Visual Studio 版本的文档。
- 性能分析器
 这是Profiler的使用指南。
- CUDA二进制工具
 cuobjdump、nvdisasm和nvprune的应用说明文档。
白皮书
- 浮点数与IEEE 754标准
 与浮点精度和合规性相关的许多问题经常在CPU和GPU上引起混淆。本白皮书的目的是讨论与NVIDIA GPU相关的最常见问题,并补充CUDA C++编程指南中的文档。
- 不完全LU分解与Cholesky预条件迭代方法
 在本白皮书中,我们展示了如何利用cuSPARSE和cuBLAS库在不完全-LU和Cholesky预处理迭代方法中实现比CPU快2倍的加速。我们重点研究双共轭梯度稳定法(Bi-Conjugate Gradient Stabilized)和共轭梯度迭代法(Conjugate Gradient),这两种方法分别可用于求解大型稀疏非对称线性系统和对称正定线性系统。此外,我们还探讨了并行稀疏三角求解这一算法中的关键构建模块。
应用说明
- 适用于Tegra的CUDA
 本应用说明概述了NVIDIA® Tegra®内存架构,并探讨了将代码从x86系统连接的独立GPU(dGPU)移植到Tegra®集成GPU(iGPU)时的注意事项。文中还讨论了EGL互操作性。
编译器SDK
- libNVVM API
 libNVVM API。
- libdevice 用户指南
 libdevice库是一个LLVM位码库,用于实现GPU内核的常见函数。
- NVVM IR
 NVVM IR是一种基于LLVM IR的编译器中间表示。NVVM IR旨在表示GPU计算内核(例如CUDA内核)。高级语言前端(如CUDA C编译器前端)可以生成NVVM IR。