FlashAttention 动效 04

FA3:让矩阵乘和 softmax 同时忙起来

H100 上矩阵乘(WGMMA)和数据搬运(TMA)都能异步跑,但 FA2 仍然是一步等一步。切换三种执行方式,看 SM 的空闲怎么被填掉。

TMA 搬运(producer warp) WGMMA 矩阵乘(consumer warpgroup) softmax / 指数(多功能单元)

为什么必须把指数运算藏起来:H100 的吞吐不对称

FP16 矩阵乘
989 TFLOPs/s
指数(SFU)
3.9 TFLOPs/s

head_dim=128 的前向里,matmul FLOP 是指数的 512 倍,但指数吞吐低 256 倍——算下来指数能吃掉约一半的周期。FP8 再把 matmul 吞吐翻倍,指数却不变,所以 FA3 用 warp 专门化 + pingpong 调度把 exp 排到 Tensor Core 干活的同一段时间里。实测 FP16 最高 740 TFLOPs/s(75%),FP8 接近 1.2 PFLOPs/s。