- 对视频教程中的代码进行存档
- 对视频教程中部分地方进行详细补充, 以求更好的帮助入门CUDA, 并想到好的优化方式
- 1.1 课程介绍(00:07:30)
- 1.2 异构计算和并行计算(00:08:38)
- 1.3 CUDA介绍(00:10:34)
- 1.4 系统GPU检测(00:06:30)
- 1.5 Linux系统检查(00:07:23)
- 1.6.1 CUDA安装(一)(00:07:33)
- 1.6.2 CUDA安装(二)(00:05:21)
- 1.7 查询GPU信息(00:07:36)
- 2.1 CUDA编程模型(00:06:10)
- 2.2 CUDA线程模型(00:06:36)
- 2.3 CUDA内存模型(00:07:31)
- 2.4 nvcc工作流程(00:07:11)
- 2.5 nvcc命令行参数(00:08:02)
- 2.6 CUDA内核函数(00:08:06)
- 2.7 CUDA内核函数执行(00:07:07)
- 2.8 获取线程索引(00:07:29)
- 2.9 CUDA错误处理(00:08:32)
- 2.10 运行时GPU信息查询(00:08:07)
- 2.11 GPU架构(00:07:04)
- 2.12 线程分割和执行(00:07:42)
- 2.13 PTX介绍(00:07:29)
- 2.14 PTX兼容性(00:07:38)
- 2.15 二进制兼容性(00:07:34)
- 2.16 CUDA运行时库(00:07:26)
- 2.17 矩阵加法程序(00:06:42)
- 2.18 矩阵加法初始化(00:08:42)
- 2.19 GPU内存分配和数据拷贝(00:09:41)
- 2.20 内核矩阵加法(00:10:45)
- 2.21 监测内核执行时间(00:09:40)
- 2.22 nvprof监测内核执行时间(00:06:19)
- 2.23 用网格和块索引数据(00:10:12)
- 2.24 二维网格和块配置(00:08:06)
- 2.25 一维网格和块配置(00:07:42)
- 2.26 二维网格和一维块配置(00:05:23)
- 2.27 线程束分支(00:11:01)
- 2.28 线程束分支优化(00:07:37)
- 2.29 线程束分支特点(00:06:52)
- 2.30 线程束计算资源分配(00:06:15)
- 2.31 指令延迟隐藏(00:05:47)
- 2.32 算术运算指令并行性需求(00:05:20)
- 2.33 内存指令并行性需求(00:05:06)
- 2.34 流处理器占用率计算(00:08:47)
- 2.35 nvprof分析线程束和内存读写(00:06:29)
- 2.36 邻域并行计算(00:10:37)
- 2.37 间域并行计算(00:08:16)
- 2.38 循环展开(00:07:49)
- 2.39 模版函数(00:11:46)
- 2.40 GPU动态并行(00:07:41)
- 2.41 动态并行HelloWorld(00:10:35)
- 3.1 GPU内存结构(00:07:02)
- 3.2 寄存器溢出(00:06:15)
- 3.3 本地内存和共享内存(00:06:17)
- 3.4 常量内存(00:07:43)
- 3.5 全局内存(00:07:17)
- 3.6 GPU缓存和变量作用域(00:05:24)
- 3.7 静态全局内存传递(00:11:40)
- 3.8 统一虚拟地址(00:09:25)
- 3.9 统一内存空间(00:12:14)
- 3.10 页锁定内存(00:10:02)
- 3.11 零拷贝内存(00:09:02)
- 3.12 内存加载模式(00:06:55)
- 3.13 GPU缓存设置(00:06:27)
- 3.14 缓存数据加载(00:06:40)
- 3.15 无缓存数据加载(00:05:58)
- 3.16 内存存储模式(00:05:34)
- 3.17 共享内存(00:08:02)
- 3.18 动态分配共享内存(00:05:55)
- 3.19 共享内存bank(00:05:19)
- 3.20 共享内存访问模式(00:07:06)
- 3.21 共享内存访问模式设置.(00:06:33)
- 3.22 共享内存大小配置(00:09:18)
- 3.23 共享内存屏障(00:08:32)
- 3.24 线程块栅栏(00:07:39)
- 3.25 线程网格栅栏(00:05:25)
- 3.26 广播shuffle指令(00:08:05)
- 3.27 向上shuffle指令(00:09:04)
- 3.28 向后shuffle指令(00:06:28)
- 3.29 异或shuffle指令(00:06:15)
- 4.1 CUDA流(00:07:47)
- 4.2 CUDA流创建(00:05:19)
- 4.3 异步数据拷贝(00:06:30)
- 4.4 流调度(00:09:34)
- 4.5 流事件(00:06:53)
- 4.6 流事件同步(00:08:35)
- 4.7 流操作时长计算(00:06:06)
- 4.8 流执行顺序(00:07:00)
- 4.9 隐式和显式同步(00:07:15)
- 4.10 可配置事件(00:09:59)
- 4.11 GPU内核并发检测(00:05:16)
- 4.12 多流多内核执行(00:09:03)
- 4.13 Visual Profiler工具(00:07:12)
- 4.14 Visual Profiler分析多内核执行(00:11:05)
- 4.15 OpenMP介绍(00:06:12)
- 4.16 多线程分发CUDA流(00:06:59)
- 4.17 使用环境变量修改工作队列(00:09:17)
- 4.18 内核和数据拷贝并行(00:07:11)
- 4.19 流回调函数(00:08:30)
- 5.1 底层指令优化(00:06:17)
- 5.2 浮点数二进制编码(00:07:30)
- 5.3 单精度和双精度(00:05:54)
- 5.4 内置和标准函数(00:07:07)
- 5.5 原子操作(00:06:01)
- 5.6 浮点数精度测试(00:05:29)
- 5.7 浮点数性能测试(00:09:01)
- 5.8 内置函数PTX代码分析(00:09:11)
- 5.9 MAD指令优化(00:07:44)
- 5.10 CAS原子操作(00:06:21)
- 5.11 自定义原子操作(00:07:41)
- 5.12 原子操作的性能损失(00:08:23)
- 6.1 CUDA程序调试(00:07:28)
- 6.2 内核调试焦点(00:07:50)
- 6.3 中断和单步执行(00:07:35)
- 6.4 调试断点使用(00:08:08)
- 6.5 内核入口断点(00:06:16)
- 6.6 条件断点(00:06:58)
- 6.7 查看变量值(00:07:30)
- 6.8 CUDA状态信息查询(00:05:34)
- 6.9 寄存器查看(00:06:09)
- 6.10 事件通知(00:05:56)
- 6.11 自动错误检测(00:05:14)
- 6.12 cuda-memcheck介绍(00:05:52)
- 6.13 内存错误检测(00:10:03)
- 6.14 线程竞争检测(00:09:29)
- CUDA 人工智能编程, 中新金桥, 夏松老师