GPU计算可视化实验室
从 GPU 硬件架构到 CUDA 编程模型,从 Warp 调度到内存层次优化,深入解析 GPU 并行计算的核心机制与性能调优原理。每个模块含可交互 SVG 演示。
GPU 由多个 GPC(图形处理集群)组成,每个 GPC 含多个 SM(流多处理器),每 SM 含数十 CUDA Core。SM 内含寄存器、共享内存、调度单元。HBM 提供高带宽全局内存。
CUDA 三级层次:Grid(网格)含多个 Block,每 Block 含多个 Thread。Block 内线程共享共享内存与同步;Block 间独立调度。通过 blockIdx/threadIdx 计算全局坐标映射数据。
Warp 是 32 线程的执行单元,SM 以 SIMT 方式同步执行。分支分歧导致 warp 内线程串行化执行不同分支,性能损失。调度器轮转多个 warp 隐藏内存延迟。
GPU 内存层次:寄存器(每线程)→ 共享内存/L1(每 block)→ L2(全芯片)→ 全局内存 HBM。访问延迟从 1 到 500+ 周期递增。优化核心是数据局部性与减少全局访问。
共享内存分 32 个 bank,可并行访问。stride=1 访问无冲突;多线程访问同 bank 串行化(bank conflict)。通过 padding 改变访问模式消除冲突。Tile 化利用共享内存减少全局访问。
warp 内 32 线程访问连续对齐地址时,硬件合并为 1 次事务(128B/256B)。跨步或随机访问导致多次事务,带宽利用率骤降。结构数组(AoS)应转为数组结构(SoA)优化合并。
CUDA Stream 是异步操作序列。多流允许 H2D 传输、kernel 计算、D2H 传输重叠执行,隐藏 PCIe 延迟。事件(Event)用于流间同步。双缓冲技术进一步流水线化数据传输。
Roofline 模型横轴算术强度(FLOP/字节),纵轴性能。曲线由内存带宽(左斜坡)和峰值算力(右平台)决定。kernel 落点判断瓶颈:内存受限需优化访问,计算受限需优化指令。