为什么多算一次反而更快?深入 Blackwell 微架构,拆解 FlashAttention-4 的逆天优化
1,613 TFLOPs/s。
这是2026年3月Tri Dao团队在NVIDIA B200上实测的FlashAttention-4 BF16 forward吞吐——换算成硬件利用率,大约是71%。对于一个本质上受限于内存带宽的kernel来说,这个数字已经逼近了理论天花板,而它的前任FA3在Hopper H100上的利用率大概在55%左右。从55%到71%,FA4做对了什么?
如果你还停留在"FlashAttention就是把大矩阵切成小块放到shared memory里算softmax"这个认知层面,那FA4会彻底刷新你对GPU kernel engineering的理解。它在Blackwell SM100上用多项式乘法替代了exp()硬件指令,用有条件的分支跳转替代了每次都执行的softmax rescale,让两个CTA协作完成一次MMA来压缩SMEM搬运量,甚至把整个MMA累加器从通用寄存器搬到了一块叫TMEM的专用片上存储。每一个决策背后都有一个清晰的工程判断:不是在追求更优的算法复杂度,而是在和Blackwell硬件的非对称缩放特性做精密的博弈。
这篇文章会从Attention计算的底层逻辑开始,经过Online Softmax的完整数学推导,深入Blackwell SM100的硬件微架构,一层一层拆解FA4的六个核心优化决策——每个优化为什么做、怎么做、在什么边界条件下会失效。如果你写过CUDA kernel,或者正在用vLLM/FlexAttention跑推理而想理解底层到底发生了什么,这篇文章应该能给你一些实质性的东西。
(数据来源:FlashAttention-4论文 arXiv:2603.05451, Tri Dao et al., March 2
