01
CUDA开发环境搭建
安装NVIDIA驱动、CUDA Toolkit、cuDNN,配置VS或CMake工程。
环境入门
02
GPU架构基础
SM、Warp、Thread Block、Global Memory、Shared Memory概念。
架构核心
03
第一个CUDA程序
编写向量加法,理解<<>>语法和核函数声明。
实战向量
04
线程层次与索引
gridDim、blockDim、threadIdx、blockIdx的使用与计算。
线程索引
05
内存模型概览
全局内存、共享内存、寄存器、本地内存、常量内存、纹理内存。
内存层次
06
全局内存访问优化
合并访问(Coalesced Access)原理与对齐要求。
优化带宽
07
共享内存与Bank Conflict
共享内存声明、动态分配、Bank冲突避免。
共享内存冲突
08
常量内存与只读缓存
__constant__使用场景,只读缓存加速。
常量缓存
09
寄存器溢出与本地内存
寄存器压力分析,本地内存的隐藏开销。
寄存器性能
10
Warp发散与分支优化
Warp执行模型,if-else导致的分支代价。
分支warp
11
原子操作与锁
atomicAdd、atomicCAS,轻量级锁实现。
原子同步
12
Stream与异步并发
CUDA Stream创建,异步内存拷贝,重叠计算与传输。
异步并发
13
Event与时间测量
cudaEvent_t创建,精确测量核函数执行时间。
计时profiling
14
NVIDIA Nsight Systems入门
时间线视图,定位CPU/GPU瓶颈。
Nsight系统
15
NVIDIA Nsight Compute入门
Kernel分析,Occupancy、Memory、Compute指标。
Compute分析
16
Occupancy与Launch Configuration
Occupancy计算,blockSize/gridSize调优。
配置占用率
17
算术强度与Roofline模型
计算核心概念,Roofline分析工具使用。
Roofline强度
18
归约(Reduction)优化
树形归约,Warp Shuffle指令,避免Bank Conflict。
归约Shuffle
19
矩阵乘法优化(基础)
Tiling技术,Shared Memory分块。
GEMMTiling
20
矩阵乘法优化(进阶)
Vectorized Load/Store,双缓冲,Prefetching。
向量化双缓冲
21
卷积(Convolution)优化
Im2Col + GEMM,直接卷积Shared Memory优化。
卷积Im2Col
22
直方图(Histogram)计算
原子操作优化,私有化直方图,合并写回。
直方图原子
23
扫描(Scan/Prefix Sum)算法
Hillis-Steele与Blelloch扫描,Bank Conflict优化。
Scan前缀和
24
排序(Sort)算法
Radix Sort实现,Block Sort与Global Merge。
排序基数排序
25
稀疏矩阵向量乘(SpMV)
CSR格式,负载均衡与Warp分配。
稀疏SpMV
26
图算法(BFS/SSSP)
GPU上的BFS实现,Frontier Expansion与负载均衡。
图BFS
27
动态并行(Dynamic Parallelism)
子核函数调用,递归与动态任务生成。
动态递归
28
CUDA与多GPU编程
cudaSetDevice,Peer-to-Peer访问,多GPU归约。
多GPUP2P
29
CUDA与Python集成
PyCUDA与Numba CUDA,快速原型开发。
PythonNumba
30
CUDA调试与错误检查
cudaError_t处理,cuda-gdb,cuda-memcheck,compute-sanitizer。
调试错误