Series

GPU 架构学习合集

从 CPU/GPU 差异讲到 SIMT、SM、Warp、存储层次、Tensor Core、Nsight 性能分析、多 GPU 协作和简化 GPU RTL 设计。

Lessons28
Reading621 min
PathArchitecture to RTL

课程目录

按学习顺序整理,每篇文章仍然可以通过博客分类、标签和搜索访问。

00

Blackwell 架构概览

我会用最基础的层次,把 Blackwell 的定位、核心改进和它解决什么问题讲清楚。

4 min readGPUCUDAArchitectureBlackwell
01

第一课:GPU 为什么存在,以及它和 CPU 有什么区别

先从“GPU为什么存在”讲起,再逐步进入线程、SIMT、SM、Warp、存储层次和指令执行。先建立整体框架,不急着看具体英伟达架构。

9 min readGPUCUDAArchitectureCPU vs GPU
02

第二课:GPU 程序是怎样被执行的

下面继续讲 GPU 程序从启动到执行完成的全过程,重点理清 Kernel、Grid、Block、Warp、Thread 与 SM 的对应关系。

15 min readGPUCUDAArchitectureKernel
03

第三课:GPU 的存储层次

这一部分讲 GPU 的存储层次,以及为什么同一个程序只是改变数据访问方式,性能就可能相差数倍。

23 min readGPUCUDAArchitectureGPU Memory
04

第四课:SM 内部结构与指令执行过程

这一部分进入 SM 内部,重点讲清楚 Warp Scheduler、发射、执行单元、Scoreboard 和流水线之间的关系。

20 min readGPUCUDAArchitectureSM
05

第五课:分支、谓词执行与 Warp 发散

这一课继续讲控制流:同一个 Warp 遇到 if/else、循环和提前退出时,硬件如何处理,以及分支发散为什么会降低效率。

21 min readGPUCUDAArchitectureWarp Divergence
06

第六课:GPU 中的数据依赖、数据冒险与同步

这一课讲 GPU 中的数据依赖与数据冒险,重点区分“依赖本身”和“流水线造成的冲突”,并说明 Scoreboard、原子操作和内存屏障如何保证正确性。

22 min readGPUCUDAArchitectureSynchronization
07

第七课:GPU 是算力受限,还是带宽受限

这一课建立 GPU 性能分析的核心框架:先判断程序受算力限制,还是受显存带宽限制。

20 min readGPUCUDAArchitecturePerformance
08

第八课:GPU 如何完成矩阵乘法

这一课用矩阵乘法把前面学过的线程、Block、Shared Memory、寄存器和计算强度串联起来。

19 min readGPUCUDAArchitectureGEMM
09

第九课:GPU 如何执行神经网络卷积

这一课把矩阵乘法继续推进到卷积,重点解释卷积的数据组织、常见映射方式,以及为什么不同卷积在 GPU 上效率差异很大。

21 min readGPUCUDAArchitectureCNN
10

第十课:Tensor Core 与低精度计算

这一课讲 Tensor Core 和低精度计算:先理解不同数值格式,再看 MMA 指令、混合精度累加,以及 Blackwell 中 Transformer Engine 的作用。

22 min readGPUCUDAArchitectureTensor Core
11

第十一课:GPU 的缓存、显存控制器与内存事务

这一课继续深入 GPU 的内存系统,重点解释一个 Warp 的访存请求如何变成 Cache Line、内存事务,并最终到达 GDDR 或 HBM。

28 min readGPUCUDAArchitectureCache
12

第十二课:Block 如何分配到 SM,以及 Occupancy 由什么决定

这一课讲 Block 如何进入 SM、哪些硬件资源限制并发度,以及 Occupancy 为什么只是性能指标之一。

19 min readGPUCUDAArchitectureOccupancy
13

第十三课:GPU 为什么有多个调度层次

这一课把调度层次串起来:从 CPU 提交 Kernel,到 Stream、Grid、Block,再到 SM 内部的 Warp 调度。

21 min readGPUCUDAArchitectureScheduling
14

第十四课:多 GPU 如何协同工作

这一课进入多 GPU 系统,先讲 PCIe、NVLink、NVSwitch,再讲数据并行、张量并行、流水线并行和 AllReduce,最后用 GB200 NVL72 串起来。

26 min readGPUCUDAArchitectureMulti-GPU
15

第十五课:GPU 如何渲染一幅三维图像

这一课转向 GPU 的图形起源,讲一幅三维场景如何经过顶点处理、光栅化、像素着色和深度测试,最终变成屏幕图像。

26 min readGPUCUDAArchitectureRendering
16

第十六课:从 GPU 框图理解完整芯片

这一课把前面的 SM、缓存、显存控制器和图形单元放回整块 GPU 中,学习如何阅读一张完整的 GPU 架构框图。

21 min readGPUCUDAArchitectureGPU Architecture
17

第十七课:NVIDIA GPU 架构如何演进

这一课按时间线梳理 NVIDIA GPU 架构演进,重点不是背型号,而是看每一代解决了什么瓶颈。

15 min readGPUCUDAArchitectureNVIDIA
18

第十八课:PTX、SASS 与 Compute Capability

前面讨论的是 GPU 硬件如何执行指令,但程序员通常写的是 CUDA C++:

27 min readGPUCUDAArchitecturePTX
19

第十九课:编译器如何优化 CUDA Kernel

这一课解释 CUDA 编译器如何从源代码生成更高效的 GPU 指令,以及这些优化怎样影响寄存器、分支、访存和 Occupancy。

31 min readGPUCUDAArchitectureCUDA Compiler
20

第二十课:如何使用 Nsight Compute 分析 CUDA Kernel

这一课进入实际性能诊断:如何从 Nsight Compute 的报告中判断 Kernel 是计算受限、带宽受限,还是因为延迟与调度停顿而变慢。

32 min readGPUCUDAArchitectureNsight Compute
21

第二十一课:从低效 Reduction Kernel 到高性能归约

这一课用 Reduction 实战串联原子操作、Shared Memory、分支发散、Warp Shuffle、向量化加载和多级归约。

28 min readGPUCUDAArchitectureReduction
22

第二十二课:Softmax 为什么难以高效,以及 FlashAttention 如何减少显存访问

这一课把 Reduction 应用到 Softmax 和 Attention,并推导 FlashAttention 如何用分块与在线 Softmax 避免保存完整的 N x N 注意力矩阵。

25 min readGPUCUDAArchitectureSoftmax
23

第二十三课:LayerNorm 和 RMSNorm 如何在 GPU 上实现

这一课讲 LayerNorm 与 RMSNorm;随后我会把课程收束到少数几个最必要章节,避免继续无限展开。

21 min readGPUCUDAArchitectureLayerNorm
24

第二十四课:Transformer 中的 MLP、GEMM 与算子融合

这一课讲 Transformer 中计算量最大的 MLP 模块,以及 GEMM Epilogue、GELU/SiLU/SwiGLU 融合和张量并行的数据流。

23 min readGPUCUDAArchitectureTransformer
25

第二十五课:稀疏计算、不规则访存,以及 GPU 不擅长什么

这一课是倒数第三课,重点解释“计算量更少”为什么不一定更快,以及不规则访存、原子冲突和负载不均衡为何会削弱 GPU 优势。

29 min readGPUCUDAArchitectureSparse
26

第二十六课:如何从零设计一个简化的 SIMT GPU

这一课从 RTL 设计角度搭建一颗最小可运行的 SIMT GPU。重点是模块边界、状态机和实现顺序,而不是一开始复制完整商用 GPU。

30 min readGPUCUDAArchitectureSIMT
27

第二十七课:GPU 架构学习总结与统一分析框架

最后一课将把前面所有内容压缩成一套统一分析框架,并给出面向 GPU 架构与 RTL 设计的后续实践路线。

23 min readGPUCUDAArchitectureGPU Architecture