FP8与FP32吞吐量对比解释 | AI生成和翻译
问题: 为什么 FP8 的位宽仅为 FP32 的 1/4(32÷8),却能带来 16 倍的吞吐量提升?
答案:
这 16 倍提升源于两个独立因素的叠加效应:
- 内存带宽 ×4 — 在相同字节寻址的内存总线上,可容纳 4 倍于 FP32 的 FP8 数值
- 硬件并行度 ×4 — 张量核心能在相同时钟周期和芯片面积内,执行 4 个 FP8 运算,而 FP32 仅能执行 1 个
这两个因素是相乘而非相加关系:4 × 4 = 16 倍。
以下是 GPU 视角的解读:
内存层面:
相同 900 GB/s 内存带宽下:
- FP32:900 GB/s ÷ 4 字节 = 225 GFLOPS(内存受限)
- FP8: 900 GB/s ÷ 1 字节 = 900 GFLOPS(内存受限)
硬件执行层面: 现代 GPU(NVIDIA Hopper、H100)在每个张量核心指令中封装了多个 FP8 运算:
FP32:每个核心每周期执行 1 次乘加运算(MAC)
FP8: 每个核心每周期执行 4 次 MAC(占用相同物理空间)
在执行密集矩阵运算(如 2614.9 TFLOPS 的峰值场景)时,你会同时获得两项优势:
- 数据吞吐量提升 4 倍(带宽)
- 每周期运算量提升 4 倍(硬件)
- 结果:16 倍吞吐量
关键在于 FP8 为此专门设计——NVIDIA 的张量核心内置原生 FP8 指令,同时利用了数据密度和算术并行性。
那为什么不总是 4 倍? 因为部分工作负载受限于计算能力(而非内存带宽)。若受限于内存带宽,你仅能获得 4 倍提升。但对于现代硬件上依托专用张量核心执行的矩阵乘法运算,则可实现完整的 16 倍增益。