Post

计算瓶颈

FP16、FP32、FP64:精度选择背后的工程现实

精度不是数学洁癖,而是吞吐、误差、带宽和可维护性之间的系统级权衡。

2026年3月3日 Updated 2026年3月17日 8 min read
Light Frantice Systems Engineer / HPC / FPGA / Research Writing
precisionperformancegpuhpc

讨论精度时,最常见的误区是把它当成一个纯数学问题。实际上它首先是工程问题,因为精度会同时影响速度、显存占用、带宽压力和误差传播。

精度不是越高越好

更高的精度意味着:

  • 更大的数据体积
  • 更高的带宽压力
  • 更低的吞吐

但更低的精度也不是免费午餐,因为它会带来:

  • 数值不稳定
  • 梯度或中间量崩坏
  • 结果不可复现

一个更现实的问法

不该问“该不该用 FP16”,而该问:

  • 哪些阶段必须高精度
  • 哪些中间量可以降精度
  • 误差容忍度在哪里
  • 带宽是否已经是第一瓶颈

常见的系统策略

实际工程里更合理的方式通常是混合精度,而不是全局统一精度。也就是说,把精度当成可分层设计的资源。

critical accumulation -> FP32 / FP64
bulk tensor movement  -> FP16 / BF16
aggressive inference  -> FP8 when validated

我的原则

精度选择必须和性能剖析一起讨论。没有 profile 的精度讨论,大概率只是偏好,不是工程判断。