GPU并行计算 · CUDA实战
📚 30章 完整目录
v2.0
01
GPU计算概述
为什么需要GPU?CPU与GPU架构对比,GPU的适用场景。
02
CUDA开发环境搭建
NVIDIA驱动安装、CUDA Toolkit安装、cuDNN配置、环境变量设置。
03
GPU硬件架构详解
SM(流多处理器)、CUDA Core、Warp调度、内存层次结构。
04
CUDA编程模型
Host与Device、Kernel函数、线程层次结构(Grid、Block、Thread)。
05
第一个CUDA程序
编写向量加法Kernel、编译与运行、nvcc编译器使用。
06
CUDA内存管理
cudaMalloc、cudaMemcpy、cudaFree、统一内存(Unified Memory)。
07
线程索引计算
内置变量threadIdx、blockIdx、blockDim、gridDim的使用。
08
Block与Grid配置
一维、二维、三维网格配置,如何根据数据量选择配置。
09
全局内存访问
合并访问(Coalesced Access)原理与优化,对齐要求。
10
共享内存 (Shared Memory)
声明与使用、Bank Conflict、同步机制__syncthreads()。
11
常量内存与纹理内存
__constant__声明、纹理内存的缓存特性与适用场景。
12
寄存器与本地内存
寄存器溢出(Register Spill)、本地内存的隐藏开销。
13
Warp与Warp调度
Warp大小、Warp Divergence(分支发散)及其影响。
14
原子操作 (Atomic)
atomicAdd、atomicCAS等,解决竞态条件。
15
流 (Streams) 与并发执行
创建流、异步操作、重叠计算与数据传输。
16
事件 (Events) 与计时
cudaEvent_t创建与使用,精确测量Kernel执行时间。
17
CUDA错误处理
cudaGetLastError、cudaError_t、检查返回值的最佳实践。
18
矩阵乘法优化 (基础版)
朴素实现,分析性能瓶颈。
19
矩阵乘法优化 (共享内存版)
使用Shared Memory分块(Tiling)优化。
20
矩阵乘法 (Bank Conflict消除)
调整共享内存布局,避免Bank Conflict。
21
归约 (Reduction) 操作
并行归约算法,Warp级归约优化。
22
前缀和 (Scan/Prefix Sum)
并行前缀和算法,Hillis-Steele与Blelloch扫描。
23
直方图计算
原子操作实现直方图,私有化直方图优化。
24
CUDA库简介
cuBLAS、cuFFT、cuRAND、Thrust库的基本使用。
25
多GPU编程
cudaSetDevice、点对点通信(P2P)、多GPU协同计算。
26
CUDA与Python集成
PyCUDA、Numba CUDA入门。
27
性能分析工具
NVIDIA Nsight Systems、Nsight Compute的使用与解读。
28
CUDA调试技巧
cuda-gdb调试器、printf调试、Device-side断言。
29
深度学习中的CUDA
卷积操作在GPU上的实现原理,cuDNN库简介。
30
CUDA最佳实践总结
Occupancy优化、内存带宽利用、指令级并行、常见陷阱。