CUDA 工具包文档 12.8
开发、优化和部署 GPU 加速应用
NVIDIA® CUDA® 工具包提供了一个开发环境,用于创建高性能 GPU 加速应用程序。借助 CUDA 工具包,您可以在 GPU 加速的嵌入式系统、桌面工作站、企业数据中心、云平台和 HPC 超级计算机上开发、优化和部署应用程序。该工具包包括 GPU 加速库、调试和优化工具、C/C++ 编译器以及用于部署应用程序的运行时库。
利用内置的跨多 GPU 配置分配计算的功能,科学家和研究人员可以开发可从单 GPU 工作站扩展到包含数千个 GPU 的云端部署的应用程序。
- 发行说明
CUDA 工具包的发行说明。
- CUDA 功能特性存档
按版本列出的 CUDA 功能特性列表。
- EULA
CUDA 工具包最终用户许可协议适用于 NVIDIA CUDA 工具包、NVIDIA CUDA 示例、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 兼容的指南。
- Turing 兼容性指南
本应用笔记旨在帮助开发人员确保他们的 NVIDIA CUDA 应用程序可以在基于 NVIDIA Turing 架构的 GPU 上正常运行。本文档提供了确保您的软件应用程序与 Turing 兼容的指南。
- NVIDIA Ampere GPU 架构兼容性指南
本应用笔记旨在帮助开发人员确保他们的 NVIDIA CUDA 应用程序可以在基于 NVIDIA Ampere GPU 架构的 GPU 上正常运行。本文档提供了确保您的软件应用程序与 NVIDIA Ampere 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 架构特性进行微调以获得额外加速的方法。
- Turing 调优指南
Turing 是 NVIDIA 面向 CUDA 计算应用的第七代架构。遵循 Pascal 架构最佳实践的应用程序通常应该在 Turing 架构上看到加速,而无需任何代码更改。本指南总结了应用程序可以通过利用 Turing 架构特性进行微调以获得额外加速的方法。
- NVIDIA Ampere 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 使用的详细说明,PTX 是一种低级并行线程执行虚拟机和指令集架构 (ISA)。PTX 将 GPU 公开为数据并行计算设备。
- 视频解码器
NVIDIA 视频解码器 (NVCUVID) 已弃用。请改为使用 NVIDIA 视频编解码器 SDK (https://developer.nvidia.com/nvidia-video-codec-sdk)。
- PTX 互操作性
本文档展示了如何编写与 ABI 兼容并可与其他 CUDA 代码互操作的 PTX。
- 内联 PTX 汇编
本文档展示了如何将 PTX(并行线程执行)汇编语言语句内联到 CUDA 代码中。它描述了可用的汇编器语句参数和约束,并且本文档还提供了一些您可能遇到的陷阱列表。
CUDA API 参考
- CUDA 运行时 API
结构中的字段可能以与声明顺序不同的顺序出现。
- CUDA 驱动程序 API
结构中的字段可能以与声明顺序不同的顺序出现。
- CUDA 数学 API
CUDA 数学 API。
- cuBLAS
cuBLAS 库是在 NVIDIA CUDA 运行时之上实现的 BLAS(基本线性代数子程序)库。它允许用户访问 NVIDIA 图形处理单元 (GPU) 的计算资源,但不会跨多个 GPU 自动并行化。
- cuDLA API
cuDLA API。
- NVBLAS
NVBLAS 库是一个多 GPU 加速的即插即用 BLAS(基本线性代数子程序)库,构建于 NVIDIA cuBLAS 库之上。
- nvJPEG
nvJPEG 库为深度学习和超大规模多媒体应用中常用的图像格式提供高性能 GPU 加速 JPEG 解码功能。
- cuFFT
cuFFT 库用户指南。
- CUB
CUB 用户指南。
- CUDA C++ 标准库
libcu++(CUDA C++ 标准库)的 API 参考。
- cuFile API 参考指南
NVIDIA® GPUDirect® Storage cuFile API 参考指南提供了关于 cuFile API 参考指南初步版本的信息,该指南用于应用程序和框架中以利用 GDS 技术,并描述了作为 GDS 技术一部分的这些 API 的意图、上下文和操作。
- 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 演示套件附带的演示应用程序。
- CUDA on WSL
本指南旨在帮助用户开始在 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 的标准功能共享相同的上游根联合体时,该技术实现了 GPU 和 PCI Express 总线上的第三方对等设备之间直接通信的路径。本文档介绍了该技术,并描述了在 Linux 设备驱动程序模型中启用与 NVIDIA GPU 的 GPUDirect RDMA 连接所需的步骤。
- GPUDirect Storage
GPUDirect Storage 的文档。
- vGPU
支持 CUDA 的 vGPU。
杂项
工具
- NVCC
这是 nvcc(CUDA 编译器驱动程序)的参考文档。nvcc 接受一系列常规编译器选项,例如用于定义宏和包含/库路径,以及用于引导编译过程。
- CUDA-GDB
NVIDIA 工具,用于调试在 Linux 和 QNX 上运行的 CUDA 应用程序,为开发人员提供了一种在实际硬件上调试 CUDA 应用程序的机制。CUDA-GDB 是 GDB(GNU 项目调试器)的 x86-64 端口的扩展。
- Compute Sanitizer
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 版本的文档。
- 性能分析器
这是性能分析器指南。
- CUDA 二进制实用程序
cuobjdump、nvdisasm 和 nvprune 的应用笔记。
白皮书
- 浮点和 IEEE 754
与浮点精度和合规性相关的许多问题是 CPU 和 GPU 上频繁引起混淆的根源。本白皮书的目的是讨论与 NVIDIA GPU 相关的最常见问题,并补充 CUDA C++ 编程指南中的文档。
- 不完全 LU 和 Cholesky 预处理迭代方法
在本白皮书中,我们展示了如何使用 cuSPARSE 和 cuBLAS 库在不完全 LU 和 Cholesky 预处理迭代方法中实现比 CPU 快 2 倍的加速。我们重点关注双共轭梯度稳定法和共轭梯度迭代法,它们可用于求解大型稀疏非对称和对称正定线性系统。此外,我们还评论了并行稀疏三角求解,它是这些算法中必不可少的构建块。
应用笔记
- CUDA for Tegra
本应用笔记概述了 NVIDIA® Tegra® 内存架构以及将代码从连接到 x86 系统的独立 GPU (dGPU) 移植到 Tegra® 集成 GPU (iGPU) 的注意事项。它还讨论了 EGL 互操作性。
编译器 SDK
- libNVVM API
libNVVM API。
- libdevice 用户指南
libdevice 库是一个 LLVM bitcode 库,它实现了 GPU 内核的常用函数。
- NVVM IR
NVVM IR 是基于 LLVM IR 的编译器 IR(中间表示)。NVVM IR 旨在表示 GPU 计算内核(例如,CUDA 内核)。高级语言前端(如 CUDA C 编译器前端)可以生成 NVVM IR。