目录
- 1. 简介
- 2. 编程模型
-
3. 编程接口
- 3.1. 使用 NVCC 进行编译
-
3.2. CUDA 运行时
- 3.2.1. 初始化
- 3.2.2. 设备内存
- 3.2.3. 设备内存 L2 访问管理
- 3.2.4. 共享内存
- 3.2.5. 分布式共享内存
- 3.2.6. 页锁定主机内存
- 3.2.7. 内存同步域
- 3.2.8. 异步并发执行
- 3.2.9. 多设备系统
- 3.2.10. 统一虚拟地址空间
- 3.2.11. 进程间通信
- 3.2.12. 错误检查
- 3.2.13. 调用堆栈
- 3.2.14. 纹理和表面内存
- 3.2.15. 图形互操作性
- 3.2.16. 外部资源互操作性
- 3.3. 版本控制和兼容性
- 3.4. 计算模式
- 3.5. 模式切换
- 3.6. Windows 的 Tesla 计算集群模式
- 4. 硬件实现
- 5. 性能指南
- 6. 支持 CUDA 的 GPU
-
7. C++ 语言扩展
- 7.1. 函数执行空间限定符
- 7.2. 变量内存空间限定符
- 7.3. 内置向量类型
- 7.4. 内置变量
- 7.5. 内存栅栏函数
- 7.6. 同步函数
- 7.7. 数学函数
-
7.8. 纹理函数
-
7.8.1. 纹理对象 API
- 7.8.1.1. tex1Dfetch()
- 7.8.1.2. tex1D()
- 7.8.1.3. tex1DLod()
- 7.8.1.4. tex1DGrad()
- 7.8.1.5. tex2D()
- 7.8.1.6. 用于稀疏 CUDA 数组的 tex2D()
- 7.8.1.7. tex2Dgather()
- 7.8.1.8. 用于稀疏 CUDA 数组的 tex2Dgather()
- 7.8.1.9. tex2DGrad()
- 7.8.1.10. 用于稀疏 CUDA 数组的 tex2DGrad()
- 7.8.1.11. tex2DLod()
- 7.8.1.12. 用于稀疏 CUDA 数组的 tex2DLod()
- 7.8.1.13. tex3D()
- 7.8.1.14. 用于稀疏 CUDA 数组的 tex3D()
- 7.8.1.15. tex3DLod()
- 7.8.1.16. 用于稀疏 CUDA 数组的 tex3DLod()
- 7.8.1.17. tex3DGrad()
- 7.8.1.18. 用于稀疏 CUDA 数组的 tex3DGrad()
- 7.8.1.19. tex1DLayered()
- 7.8.1.20. tex1DLayeredLod()
- 7.8.1.21. tex1DLayeredGrad()
- 7.8.1.22. tex2DLayered()
- 7.8.1.23. 用于稀疏 CUDA 数组的 tex2DLayered()
- 7.8.1.24. tex2DLayeredLod()
- 7.8.1.25. 用于稀疏 CUDA 数组的 tex2DLayeredLod()
- 7.8.1.26. tex2DLayeredGrad()
- 7.8.1.27. 用于稀疏 CUDA 数组的 tex2DLayeredGrad()
- 7.8.1.28. texCubemap()
- 7.8.1.29. texCubemapGrad()
- 7.8.1.30. texCubemapLod()
- 7.8.1.31. texCubemapLayered()
- 7.8.1.32. texCubemapLayeredGrad()
- 7.8.1.33. texCubemapLayeredLod()
-
7.8.1. 纹理对象 API
-
7.9. 表面函数
-
7.9.1. 表面对象 API
- 7.9.1.1. surf1Dread()
- 7.9.1.2. surf1Dwrite
- 7.9.1.3. surf2Dread()
- 7.9.1.4. surf2Dwrite()
- 7.9.1.5. surf3Dread()
- 7.9.1.6. surf3Dwrite()
- 7.9.1.7. surf1DLayeredread()
- 7.9.1.8. surf1DLayeredwrite()
- 7.9.1.9. surf2DLayeredread()
- 7.9.1.10. surf2DLayeredwrite()
- 7.9.1.11. surfCubemapread()
- 7.9.1.12. surfCubemapwrite()
- 7.9.1.13. surfCubemapLayeredread()
- 7.9.1.14. surfCubemapLayeredwrite()
-
7.9.1. 表面对象 API
- 7.10. 只读数据缓存加载函数
- 7.11. 使用缓存提示的加载函数
- 7.12. 使用缓存提示的存储函数
- 7.13. 时间函数
-
7.14. 原子函数
-
7.14.1. 算术函数
- 7.14.1.1. atomicAdd()
- 7.14.1.2. atomicSub()
- 7.14.1.3. atomicExch()
- 7.14.1.4. atomicMin()
- 7.14.1.5. atomicMax()
- 7.14.1.6. atomicInc()
- 7.14.1.7. atomicDec()
- 7.14.1.8. atomicCAS()
- 7.14.1.9. __nv_atomic_exchange()
- 7.14.1.10. __nv_atomic_exchange_n()
- 7.14.1.11. __nv_atomic_compare_exchange()
- 7.14.1.12. __nv_atomic_compare_exchange_n()
- 7.14.1.13. __nv_atomic_fetch_add() 和 __nv_atomic_add()
- 7.14.1.14. __nv_atomic_fetch_sub() 和 __nv_atomic_sub()
- 7.14.1.15. __nv_atomic_fetch_min() 和 __nv_atomic_min()
- 7.14.1.16. __nv_atomic_fetch_max() 和 __nv_atomic_max()
- 7.14.2. 位运算函数
- 7.14.3. 其他原子函数
-
7.14.1. 算术函数
- 7.15. 地址空间谓词函数
- 7.16. 地址空间转换函数
- 7.17. Alloca 函数
- 7.18. 编译器优化提示函数
- 7.19. Warp Vote 函数
- 7.20. Warp Match 函数
- 7.21. Warp Reduce 函数
- 7.22. Warp Shuffle 函数
- 7.23. Nanosleep 函数
- 7.24. Warp 矩阵函数
- 7.25. DPX
- 7.26. 异步屏障
- 7.27. 异步数据复制
-
7.28. 使用
cuda::pipeline
的异步数据复制 - 7.29. 使用张量内存加速器 (TMA) 的异步数据复制
- 7.30. 在设备上编码张量图
- 7.31. 分析器计数器函数
- 7.32. 断言
- 7.33. Trap 函数
- 7.34. 断点函数
- 7.35. 格式化输出
- 7.36. 动态全局内存分配和操作
- 7.37. 执行配置
- 7.38. 启动边界
- 7.39. 每线程最大寄存器数
- 7.40. #pragma unroll
- 7.41. SIMD 视频指令
- 7.42. 诊断 Pragma
- 8. 协同组
-
9. CUDA 动态并行
- 9.1. 简介
- 9.2. 执行环境和内存模型
- 9.3. 编程接口
- 9.4. 编程指南
- 9.5. CDP2 与 CDP1
-
9.6. 旧版 CUDA 动态并行性 (CDP1)
- 9.6.1. 执行环境和内存模型 (CDP1)
- 9.6.2. 编程接口 (CDP1)
- 9.6.3. 编程指南 (CDP1)
- 10. 虚拟内存管理
- 11. 流有序内存分配器
- 12. 图内存节点
- 13. 数学函数
-
14. C++ 语言支持
- 14.1. C++11 语言特性
- 14.2. C++14 语言特性
- 14.3. C++17 语言特性
- 14.4. C++20 语言特性
-
14.5. 限制
- 14.5.1. 主机编译器扩展
- 14.5.2. 预处理器符号
- 14.5.3. 限定符
- 14.5.4. 指针
- 14.5.5. 运算符
- 14.5.6. 运行时类型信息 (RTTI)
- 14.5.7. 异常处理
- 14.5.8. 标准库
- 14.5.9. 命名空间保留
- 14.5.10. 函数
- 14.5.11. 类
- 14.5.12. 模板
- 14.5.13. 三字符组和二字符组
- 14.5.14. Const 限定变量
- 14.5.15. Long Double
- 14.5.16. 弃用注释
- 14.5.17. Noreturn 注释
- 14.5.18. [[likely]] / [[unlikely]] 标准属性
- 14.5.19. const 和 pure GNU 属性
- 14.5.20. __nv_pure__ 属性
- 14.5.21. Intel 主机编译器特定
- 14.5.22. C++11 特性
- 14.5.23. C++14 特性
- 14.5.24. C++17 特性
- 14.5.25. C++20 特性
- 14.6. 多态函数包装器
- 14.7. 扩展 Lambda
- 14.8. 放松 Constexpr (-expt-relaxed-constexpr)
- 14.9. 代码示例
- 15. 纹理获取
- 16. 计算能力
- 17. 驱动程序 API
- 18. CUDA 环境变量
- 19. 统一内存编程
- 20. 延迟加载
- 21. 扩展 GPU 内存
- 22. 通知