返回 ELI5 知识库首页 🧮 HPC & GENERAL MATRIX MULTIPLY
🧮 General Matrix Multiply · BLAS Level 3 · Hardware Core

什么是 GEMM(通用矩阵乘法)?

如果说普通矩阵乘法是数学课本里的抽象公式 $A \times B$;那么 GEMM 则是高性能计算与 AI 芯片界封神了 40 年的“终极黄金标准” —— $C = \alpha(A \times B) + \beta C$,它将纯数学变成了压榨显卡极限吞吐的超级工程!

🐢 朴素教科书写法 (三层循环)

三层 for 循环,显存缓存全穿透

初学者写的 for i, for j, for k 代码,在超大矩阵面前会导致 CPU/GPU 缓存(Cache Miss)频繁失效,算力发挥不到硬件极限的 5%

for (i = 0; i < M; i++) for (j = 0; j < N; j++) for (k = 0; k < K; k++) C[i][j] += A[i][k]*B[k][j]; ⚠️ 缺乏内存局部性,严重受困于内存墙
  • 缓存命中率极低:跨行跨列跳跃读取内存,访存极其缓慢
  • 未利用向量化:没有 SIMD 指令集与硬件脉动阵列加速
VS
⚡ 工业级 GEMM (Tiling 分块分层优化)

切成微小砖块,把缓存喂到极致

BLAS / cuBLAS / CUTLASS 极致调优:通过多级分块(Tiling)、寄存器重用、Tensor Core 硬件直通,让硬件算力利用率狂飙至 95%+

C = α · (A × B) + β · C 分块 (Tiling) 压入 SRAM 零缓存缺失 · 满载吞吐 🚀 硬件算力利用率直接飙上 95%!
  • 多级缓存分块:将超大矩阵切碎,完美塞进 L1/L2 Cache 与寄存器
  • 自带累加器偏置:兼顾神经网络中必不可少的 Bias 偏移量($+ \beta C$)
💡

一句话顿悟:为什么说 GEMM 是算力皇冠上的明珠?

世界上所有顶级芯片(Nvidia H100/B200、Google TPU、华为昇腾 910B)在发布时宣称的“数千 TFLOPS 峰值算力”,其测试基准全部都是 GEMM! 把 GEMM 优化快了 10%,全世界的大模型推理与训练速度就直接快了 10%!

拆解 GEMM 极致性能的 4 大绝招

从万能数学公式到现代 GPU 硬件层级映射,读懂高性能算力密码

📜

1. BLAS Level 3 黄金公式

公式 $C = \alpha(A \times B) + \beta C$。其中的 $\alpha, \beta$ 缩放系数与原矩阵 $C$ 累加,天然完美匹配神经网络的前向加偏置与反向求导!

🧱

2. 多级分块 (Tiling)

把上万维大矩阵切成 ThreadBlock Tile ➔ Warp Tile ➔ Thread Tile,层层精准匹配 GPU 内存阶梯(HBM ➔ L2 ➔ Shared Memory ➔ 寄存器)。

🧊

3. 脉动阵列与 Tensor Core

数据像血液一样在微芯片阵列中流动,一个输入数据在网格内部被复用几十次,彻底摆脱内存频繁读写限制。

🛠️

4. CUTLASS / Triton 生态

现代高性能 GEMM 开发模板库。让工程师无需从头手写几千行 PTX 汇编,就能生成针对具体矩阵维度的极限性能内核。

🕹️ GEMM 分块(Tiling)与流水线交互演练台

观察超大矩阵如何被切成 $4 \times 4$ 微型 Tile 积木,并由计算核心依次吞吐:

🧮 分块计算与缓存复用状态
当前计算:Tile Block #1
数据从 HBM 载入 Shared Memory 片上缓存,寄存器复用率高达 16x,计算核心满载运转!
算力利用率 (MFU): 94.8% (接近理论极限)
📜 40 年传奇

从 1979 年 BLAS 到当代 AI

20 世纪 70 年代,科学家为了让大型超级计算机统一线性代数接口,制定了 BLAS(基础线性代数子程序)。

其中 Level 3 的 dgemm / sgemm 成为了横跨气象预测、空气动力学到 ChatGPT 大模型的通用工业底座。

⚡ 极致软硬结合

GEMM 推动硬件架构变迁

为了把 GEMM 算到极致,英伟达在 Volta 架构中首次塞入了 Tensor Core,Google 在 TPU 中打造了二维脉动阵列。

整个人类芯片硬件架构的演进史,在很大程度上就是一部“如何把 GEMM 算得更便宜、更快速”的进化史。

🚀 现代前沿变体

从稠密 GEMM 到 MoE 稀疏 GEMM

在最新的 DeepSeek-V3 等混合专家模型(MoE)中,GEMM 进一步进化为 Grouped GEMM

不同专家处理不同大小的输入矩阵,动态调度分块,继续在算力效率前沿开疆拓土。