CUDA C编程权威指南

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4 全局内存
4.7 习题
4 全局内存
4.1.1 内存层次结 构的优点
4.1.2 CUDA内存模 型
4.1 CUDA内存模型概述
4.2.1 内 存分配和 释放
4.2.4 零拷贝 内存
4 全局内存
4.2 内存管理
4.2.2 内存传 输
4.2.5 统一虚 拟寻址
4.2.3 固定内 存
4.2.6 统一内 存寻址
6.3.2 使用 广度优先调 度重叠
6.3 重叠内核执行和数据传输
08
7 调整指令级原语
7 调整指令级原语
01
02
03
04
7.1 CUDA 7.2 程序 7.3 总结 7.4 习题 指令概述 优化指令
7 调整指令级原语
7.1.1 浮点指令
A
7.1.2 内部函数和标 准函数
B
7.1.3 原子操作指令
10
9 多GPU编程
9 多GPU编程
9.1 从一个GPU到多GPU 9.3 多GPU上的点对点通
信 9.5 跨GPU集群扩展应用
程序
9.2 多GPU间细分计算 9.4 多GPU上的有限差分
9.6 总结
9 多GPU编程
9.7 习题
9 多GPU编程
9.1.1 在多GPU上执 行
A
9.1.2 点对点通信

03
5.1.3 共享 内存存储体 和访问模式
04
5.1.4 配 置共享内
存量
05
5.1.5 同 步
5.1 CUDA共享内存概述
5 共享内存和常量内存
5.2.1 方形共享 内存
A
5.2.2 矩形共享 内存
B
5.2 共享内存的数据布局
5 共享内存和常量内存
5.3.1 使用共享 内存的并行归约
5.3.3 使用动态共享 内存的并行归约
B
2.2 给核函数计时
2 CUDA编程模型
2.3.1 使用块和线 程建立矩阵索引
2.3.2 使用二维网 格和二维块对矩阵
求和
2.3.3 使用一维网 格和一维块对矩阵
求和
2.3.4 使用二维网 格和一维块对矩阵
求和
2.3 组织并行线程
2.4.1 使用运行时 API查询GPU信息
A
2.4.2 确定最优 GPU
8.2.5 cuSPARSE小结
8.2 cuSPARSE库
8.3.1 管理 cuBLAS数据
8.3.3 cuBLAS发 展中的重要主题
8 GPU加速库和OpenACC
8.3 cuBLAS库
8.3.2 cuBLAS功 能示例
8.3.4 cuBLAS小 结
8 GPU加速库和 OpenACC
8.4 cuFFT库
9.3.2 点对点的内存复 制
9 多GPU编程
01
9.4.1 二GPU程序的 典型模式
03
9.4.3 多 GPU上的二 维模板计算
04
9.4.4 重 叠计算与
通信
05
9.4.5 编 译和执行
9.4 多GPU上的有限差分
9 多GPU编程
01
9.5.1 CPU到 CPU的数据传输
C
10.2 配置文件驱动优化
5 共享内存和常量内存
5.1 CUDA 共享内存 概述
5.2 共 享内存的 数据布局
5.3 减 少全局内 存访问
5.4 合 并的全局 内存访问
5.5 常 量内存
5.6 线 程束洗 牌指令
5 共享内存和常量内存
A 5.7 总结
B 5.8 习题
5 共享内存和常量内存
01
5.1.1 共 享内存
02
5.1.2 共 享内存分
8.4.2 cuFFT 功能示例
1
2
3
8.4.1 使用 cuFFT API
8.4.3 cuFFT 小结
8.5.3 cuRAND介绍
8.5.4 cuRAND发展 中的重要主题
8.5.2 cuRAND库概 述
8.5.1 拟随机数或 伪随机数的选择
C
D
B
A
8 GPU加速库和OpenACC
8.5 cuRAND库
函数
05
2.1.5 编 写核函数
03
2.1.3 线 程管理
06
2.1.6 验 证核函数
2.1 CUDA编程模型概述
2 CUDA编程模型
2.1.7 处 理错误
1
2.1.8 编 译和执行
2
2.1 CUDA编程模型概述
2 CUDA编程模型
2.2.1 用CPU计时 器计时
A
2.2.2 用nvprof 工具计时
B
2.4.3 使用nvidiasmi查询GPU信息
2.4.4 在运行时设 置设备
CD
2 CUDA编程模型
2.4 设备管理
04
3 CUDA执行模型
3 CUDA执行模型
3.1 CUDA 执行模型 概述
3.2 理解 线程束执 行的本质
3.3 并 行性的 表现
3.4 避 免分支 分化
3.5 展 开循环
3.6 动 态并行
3 CUDA执行模型
3.4.1 并行归约 问题
3.4.3 改善并行 归约的分化
3.4.2 并行归约 中的分化
3.4 避免分支分化
3.4.4 交错配对 的归约
3 CUDA执行模型
3.5.1 展开的 归约
3.5.3 完全展 开的归约
3.5.2 展开线 程的归约
3.5.4 模板函 数的归约
3.5 展开循环
3 CUDA执行模型
3.6 动态并行
3.6.1 嵌套 执行
3.6.2 在GPU 上嵌套Hello
World
3.6.3 嵌套 归约
05
4 全局内存
4 全局内存
4.1 CUDA内存 模型概述
4.4 核函数可 达到的带宽
4.2 内存管理
4.5 使用统一 内存的矩阵加法
4.3 内存访问 模式
4.6 总结
8.7 CUDA函数库的性能研究
8 GPU加速库和OpenACC
01
8.8.1 OpenACC计算 指令的使用
02
8.8.2 OpenACC数据 指令的使用
03
8.8.3 OpenACC运
行时API
04
8.8.4 OpenACC和CUDA
库的结合
05
8.8.5 OpenACC小

8.8 OpenACC的使用
3 CUDA执行模型
3.7 总 结
3.8 习 题
3.1.1 GPU架构 概述
3.1.3 Kepler架 构
3 CUDA执行模型
3.1 CUDA执行模型概述
3.1.2 Fermi架 构
3.1.4 配置文件 驱动优化
3.2.1 线 程束和线 程块
3.2.4 延迟隐 藏
3 CUDA执行模型
3.2 理解线程束执行的本质
02
9.5.2 使用传 统MPI在GPU和 GPU间传输数据
03
9.5.3 使用 CUDA-aware MPI进行GPU到 GPU的数据传输
04
9.5.4 使用CUDAaware MPI进行节 点内GPU到GPU的数 据传输
05
9.5.5 调整消 息块大小
06
9.5.6 使用 GPUDirect RDMA技 术进行GPU到GPU的 数据传输
B
9.1.3 多GPU间的同 步
C
9.1 从一个GPU到多GPU
9 多GPU编程
9.2.2 单主机 线程分配工作
1
2
3
9.2.1 在多设 备上分配内存
9.2.3 编译和 执行
9.2 多GPU间细分计算
9.3.1 实现点对点访问 9.3.3 统一虚拟寻址的
点对点内存访问
9 多GPU编程
9.3 多GPU上的点对点通信
8 GPU加速库和 OpenACC
8.6 CUDA 6.0中函数库的 介绍
8.6.1 DropIn库
8.6.2 多GPU 库
8.7.1 cuSPARSE与MKL的 比较
8.7.3 cuFFT与FFTW及 MKL的比较
8.7.2 cuBLAS与MKL BLAS的比较
8.7.4 CUDA库性能小结
8 GPU加速库和OpenACC
6.4 重叠GPU和 CPU执行
6.2 并发内核 执行
6.5 流回调
6.3 重叠内核 执行和数据传输
6.6 总结
6 流和并发
6.7 习题
6 流和并发
6.1.1 CUDA 流
6.1.2 流调度
6.1 流和事件概述
6.1.5 流同步
6.1.4 CUDA 事件
6.1.3 流的优 先级
6.2.1 非空流中的并发 内核
5.3.2 使用展开 的并行归约
5.3 减少全局内存访问
5.3.4 有效带宽
5.4.1 基准转置内核
5.4.3 使用填充共享内 存的矩阵转置
5.4.5 增大并行性
5 共享内存和常量内存
5.4 合并的全局内存访问
5.4.2 使用共享内存的 矩阵转置
5.4.4 使用展开的矩阵 转置
5 共享内存和常量 内存
1 基于CUDA 的异构并行 计算
1.1 并行计算
https://
1.1.1 串 行编程和 并行编程
1.1.2 并行性
1.1.3 计算机架

1 基于CUDA的异构并行计算
1.2.1 异构架构
A
1.2.2 异构计算范例
B
1.2.3 CUDA:一种 异构计算平台
C
1.2 异构计算
8.1.1 CUDA库支 持的作用域
A
8.1.2 通用的 CUDA库工作流
B
8 GPU加速库和OpenACC
01
8.2.1 cuSPARSE数据 存储格式
02
8.2.2 用 cuSPARSE进行 格式转换
03
8.2.3 cuSPARSE功能 示例
04
8.2.4 cuSPARSE发展 中的重要主题
05
C
7.1 CUDA指令概述
7 调整指令级原语
7.2.1 单精度与 双精度的比较
7.2.3 了解原子 指令
7.2.2 标准函数与内 部函数的比较
7.2 程序优化指令
7.2.4 综合范例
09
8 GPU加速库和OpenACC
8 GPU加速库和OpenACC
8.1 CUDA库概述 8.3 cuBLAS库 8.5 cuRAND库
6.2.3 使用OpenMP的调 度操作
6.2.5 GPU资源的并发限 制
6 流和并发
6.2 并发内核执行
6.2.2 Fermi GPU上的虚 假依赖关系
6.2.4 用环境变量调整 流行为
6.2.6 默认流的阻塞行 为
6 流和并发
6.2 并发内核执行
6.2.7 创建流间依赖关系
6 流和并发
6.3.1 使用 深度优先调 度重叠
CUDA C编程权威指南
演讲人 2020-11-21
01
技术审校者简介
技术审校者简介
02
1 基于CUDA的异构并行计算
1 基于CUDA的异构并行计算
1.1 并 行计算
1.2 异 构计算
1.3 用GPU 输出Hello World
1.4 使用 CUDA C编 程难吗
1.5 总 结
1.6 习 题
03
2 CUDA编程模型
2 CUDA编程模型
01
2.1 CUDA编程 模型概述
02
2.2 给核函数 计时
03
2.3 组织并行 线程
04
2.4 设备管理
05
2.5 总结
06
2.6 习题
2 CUDA编程模型
01
2.1.1 CUDA编程
结构
02
2.1.2 内 存管理
04
2.1.4 启动 一个CUDA核
9.5 跨GPU集群扩展应用程序
11
10 程序实现的注意事项
10 程序实现的注意事项
10.1 CUDA C的开发过程
10.3 CUDA调试 10.5 总结
10.2 配置文件驱动优化
10.4 将C程序移植到CUDA C的案例研究
10.6 习题
10 程序 实现的注 意事项
10.1 CUDA C的开发过程
3.2.2 线程束 分化
3.2.5 占用率
3.2.3 资源分 配
3.2.6 同步
3 CUDA执行模型
3.2 理解线程束执行的本 质
3.2.7 可扩展性
3 CUDA执行模型
01
3.3.1 用 nvprof检测活
跃的线程束
02
3.3.2 用 nvprof检测
内存操作
03
3.3.3 增 大并行性
3.3 并行性的表现
https://
10.1.1 APOD开 发周期
10.1.3 CUDA代 码编译
10.1.2 优化因 素
10.1.4 CUDA错 误处理
10 程序实现的注意事项
10.2.1 使用nvprof 寻找优化因素
A
10.2.2 使用nvvp指 导优化
B
10.2.3 NVIDIA工具 扩展
4 全局内存
01
4.3.1 对 齐与合并
访问
02
4.3.2 全 局内存读

03
4.3.3 全 局内存写

04
4.3.4 结构 体数组与数
组结构体
05
4.3.5 性 能调整
4.3 内存访问模式
4 全局内存
4.4.1 内存带 宽
4.4.2 矩阵转 置问题
4.4 核函数可达到的带 宽
06
5 共享内存和常量内存
5.5 常量内存
A
5.5.1 使用常量 内存实现一维模板
5.5.2 与只读缓 存的比较
B
5.6.1 线程束洗牌指令 的不同形式
5.6.3 使用线程束洗牌 指令的并行归约
5 共享内存和常量内存
5.6 线程束洗牌指令
5.6.2 线程束内的共享 数据
07
6 流和并发
6 流和并发
6.1 流和事件 概述
8.2 cuSPARSE库
8.4 cuFFT库
8.6 CUDA 6.0中函数库的 介绍
8 GPU加速库和OpenACC
8.7 CUDA函数库 的性能研究
A
8.8 OpenACC的使 用
B
8.9 总结
C
8.10 习题
D
8 GPU加速 库和 OpenACC
8.1 CUDA库概述
https://
相关文档
最新文档