3. 算力基础
在智能驾驶系统中,算力是支撑感知、融合、预测、规划与控制等算法实时运行的底层资源。理解算力,不能只记住“多少 TOPS”这个数字,而要弄清它由什么运算构成、在什么精度下测得、实际能跑出多少有效性能。本节围绕 TOPS、FLOPS、MAC 与算力利用率四个核心概念展开,并说明不同数值精度对算力的直接影响。
一、从一次乘加说起:MAC 是最小运算单元
神经网络中绝大多数计算是“乘加”操作:把两个数相乘,再累加到结果上。这个操作称为 MAC(Multiply-Accumulate,乘加运算)。卷积、全连接、矩阵乘法都可以拆解为大量 MAC。因此,MAC 是衡量算力最基础的“原子单位”。
一次 MAC 包含一次乘法和一次加法,通常计为 2 次运算(2 OPS)。例如一个 3×3 卷积核在单个位置计算一次,需要 9 次 MAC,即 18 次运算。理解这一点,就能明白为什么芯片厂商标称的算力数字往往很大——它统计的是每秒能完成多少次这样的基本运算。
二、FLOPS 与 TOPS:算力的两种计量口径
FLOPS(Floating-point Operations Per Second)表示每秒浮点运算次数,常用于 GPU、CPU 等以浮点计算为主的芯片。TOPS(Tera Operations Per Second)表示每秒万亿次运算,其中“Operations”通常是整数或混合精度运算,是智能驾驶 NPU、AI 加速器最常用的算力单位。
两者关系可以简单理解为:1 TOPS = 1012 OPS。若某芯片标称 200 TOPS INT8,意味着理论上每秒可完成 200 万亿次 8 位整数运算。需要注意的是,TOPS 与 FLOPS 不能直接等价换算,因为它们的运算类型和精度口径不同,比较时必须对齐精度与统计方式。
三、精度如何改变算力:INT8、FP16 与 FP32
同一颗芯片在不同数值精度下,算力差异可能达到数倍。原因在于:低精度数据占用位宽更小,乘法器、累加器和存储带宽的利用率更高,单位时间内可并行处理的运算更多。常见精度及其典型特征如下表所示。
| 精度类型 | 位宽 | 典型算力倍率 | 适用场景 |
|---|---|---|---|
| INT8 | 8 bit | 基准 1× | 感知主干、卷积网络推理 |
| INT4 | 4 bit | 约 2× | 轻量化模型、部分量化网络 |
| FP16 / BF16 | 16 bit | 约 0.5×~1× | 训练、部分高精度推理 |
| FP32 | 32 bit | 约 0.25× 或更低 | 高精度训练、科学计算 |
以某 NPU 为例,若 INT8 算力为 256 TOPS,则 FP16 可能只有 128 TFLOPS 左右,FP32 可能进一步降至 32 TFLOPS 量级。因此,看到“256 TOPS”时,必须追问:这是 INT8 还是 FP16?是否包含稀疏加速?否则数字没有可比性。
四、算力利用率:标称算力与实际性能的差距
标称算力是理论峰值,实际运行中很难跑满。真正决定系统表现的是算力利用率(Utilization),即实际有效算力与理论峰值之比。它受限于内存带宽、数据搬运、算子调度、并行度、模型结构等多种因素。
常见影响因素包括:
- 内存墙:数据搬运速度跟不上计算速度,算力单元等待数据而空转。
- 算子碎片化:小算子、非规则算子难以高效映射到硬件阵列。
- 批处理不足:batch size 过小,无法填满并行计算单元。
- 精度切换开销:混合精度计算中频繁转换格式,增加额外开销。
- 调度与同步:多核、多任务竞争导致等待和空泡。
工程上,一个优化良好的感知模型在 NPU 上的利用率通常可达 40%~70%,而未经优化的模型可能只有 10%~20%。这意味着标称 200 TOPS 的芯片,实际有效算力可能只有 40~140 TOPS。规划算力时,必须按有效算力而非峰值算力做预算。
五、案例:同一模型在不同精度下的算力账
假设某 BEV 感知网络共有 50 GMAC(500 亿次乘加),即约 100 GOPS 的运算量。若要求实时运行在 30 FPS,则每秒运算需求为:
单帧运算量 = 100 GOPS
目标帧率 = 30 FPS
所需算力 = 100 × 30 = 3000 GOPS = 3 TOPS
若 INT8 利用率 60%,则需标称算力:
3 TOPS ÷ 0.6 = 5 TOPS(INT8)
若改用 FP16,算力倍率约 0.5×:
所需标称算力 ≈ 10 TFLOPS(FP16)
这个例子说明:同一网络,精度从 INT8 提升到 FP16,所需标称算力可能翻倍。因此在算力规划中,精度选择不是“越高越好”,而是要在精度损失与算力成本之间做权衡。
六、常见误区与复盘
误区一:只看 TOPS 数字大小。不同精度、不同统计口径下的 TOPS 不可直接比较,必须对齐精度和测试条件。
误区二:把峰值算力当有效算力。峰值只是上限,实际利用率受内存带宽和调度影响,规划时应留出 30%~50% 余量。
误区三:忽视精度对算力的影响。同一芯片 INT8 与 FP32 算力可能相差 4 倍以上,模型精度需求直接决定算力预算。
误区四:忽略 MAC 与 OPS 的换算。把 MAC 数直接当作 OPS 数,会导致算力需求被低估一半。
复盘来看,算力规划的正确顺序是:先明确模型运算量(MAC/OPS),再确定精度需求,然后按目标帧率计算所需有效算力,最后结合利用率反推标称算力并留出余量。只有把 TOPS、FLOPS、MAC、精度和利用率放在同一张账上,算力规划才真正可靠。