简介:本文从FLOPS定义出发,系统拆解CPU与GPU理论峰值算力的计算逻辑,对比二者在架构、精度、带宽与适用场景上的核心差异。读者将掌握两类处理器算力估算公式,理解标称算力与实际性能的差距来源,并形成面向AI训练推理、科学计算与通用业务的选型判断依据。
在AI与高性能计算领域,“算力”是评估硬件能力最常被引用的指标。但同样标注为“X TFLOPS”的两块芯片,在实际业务中的表现可能相差数倍。原因在于,算力的计算方式与硬件架构强相关:CPU与GPU走向了两条截然不同的设计路线,其理论峰值算力的估算公式、有效算力的影响因素、以及适用负载都存在本质差异。
本文的对比对象是通用处理器(CPU)与并行加速处理器(GPU) 在算力计算与使用上的差异,围绕“算力如何算出来、标称值与实际值为何不同、什么场景该选哪一类”展开,帮助开发者在方案评估与硬件选型时建立清晰的判断框架。
CPU(通用处理器):核心数量较少但单核功能强大,具备完整的控制逻辑、分支预测、乱序执行与多级缓存体系,擅长处理复杂、串行、逻辑分支多的任务。其算力扩展主要依赖SIMD(单指令多数据)向量化与多核并行。
GPU(图形/通用并行处理器):由大量相对简单的计算核心组成,采用SIMD/SIMT执行模型,强调吞吐而非单线程延迟,擅长处理数据并行度高、分支逻辑少的大规模数值计算。其算力扩展主要依赖核心数量堆叠与高内存带宽。
两者的共同目标是提升单位时间内的浮点运算吞吐,但实现路径、效率边界与代价结构完全不同。
d = a * b + c 在两类硬件上通常计为2次浮点运算(一次乘法+一次加法),这是算力公式中的共同约定。CPU理论峰值算力:
峰值FLOPS = 物理核心数 × 每周期指令数(IPC相关) × 主频(周期/秒) × 每指令浮点运算数(SIMD宽度×FMA系数)
以16核、支持512位向量寄存器、主频3.0GHz、启用FMA的CPU为例,单精度(FP32)下每个512位寄存器可容纳16个单精度浮点数:
16核 × 16数据/指令 × 3.0×10^9周期/秒 × 2运算/周期 = 1536 GFLOPS ≈ 1.536 TFLOPS
双精度(FP64)时向量宽度减半为8,算力相应减半为768 GFLOPS。可见CPU算力对精度极为敏感,FP64与FP32通常呈2:1关系。
GPU理论峰值算力:
峰值FLOPS = 流处理器(计算核心)数量 × 每核心每周期浮点运算数 × 主频(周期/秒)
GPU的算力公式结构更简单,因为其核心数量本身就是并行度的直接体现。一个拥有数千个流处理器、主频约1.5GHz、每核心每周期可执行2次FP32运算(FMA计2次)的GPU,其FP32峰值可达数十TFLOPS量级。需要强调的是,不同GPU的FP64/FP32比例差异很大:面向计算的型号通常保留较高的FP64能力,而面向图形或推理的型号FP64可能被大幅削减(如1/32甚至更低),这与CPU相对稳定的比例形成鲜明对比。
| 维度 | CPU | GPU |
|---|---|---|
| 核心定位 | 少量强核心,重单线程性能 | 海量弱核心,重吞吐 |
| 并行模型 | 多核 + SIMD向量化 | SIMT,线程束批量执行 |
| 分支处理 | 分支预测、乱序执行,擅长复杂逻辑 | 分支发散代价高,倾向无分支或统一分支 |
| 缓存体系 | 大容量多级缓存,降低延迟 | 缓存相对小,靠高带宽与大量线程隐藏延迟 |
| 算力扩展方式 | 增加核心数、拓宽向量宽度、提频 | 堆叠计算核心、提升显存带宽 |
这一差异直接决定了:CPU的算力公式中“每指令浮点运算数”依赖向量宽度,而GPU的算力公式中并行度主要体现在核心数量上。
CPU通常对FP32与FP64保持较均衡的支持,向量宽度按位宽换算(如512位寄存器在FP32下16路、FP64下8路),比例稳定可预期。
GPU的精度策略更分层:FP32是基础能力,FP64视型号而定,而FP16、BF16、FP8等低精度格式往往获得数倍于FP32的吞吐,部分型号还配备专用矩阵运算单元进一步放大低精度算力。这意味着比较GPU算力时必须锁定精度口径,用FP32标称值去推断FP16性能,或用低精度峰值去代表通用能力,都会产生误导。
理论峰值只反映计算单元能力,实际有效算力还受数据供给能力约束。GPU的算力/带宽比通常更高,意味着它更容易因带宽不足而“饿着”;CPU缓存层级更深,对中等规模数据的复用更友好。对于访存密集型负载(如大规模稀疏操作、频繁不规则访问),GPU的标称算力优势可能大幅缩水。因此评估时应同时关注:计算峰值、内存带宽、缓存容量三者是否匹配目标负载的算术强度。
无论CPU还是GPU,以下因素都会使实际算力低于理论峰值:
经验上,实际应用能达到理论峰值的比例因负载而异,高度规整的矩阵运算达成率较高,含大量分支与不规则访问的负载达成率明显偏低。
| 对比维度 | CPU | GPU |
|---|---|---|
| 算力公式核心变量 | 核心数×SIMD宽度×主频×FMA系数 | 流处理器数×每核心运算数×主频 |
| 并行度来源 | 多核 + 向量宽度 | 海量线程 + 宽向量 |
| FP64/FP32比例 | 通常稳定(约1:2) | 因型号差异大,可能大幅削减 |
| 低精度加速 | 有限 | 通常显著(FP16/BF16/FP8及矩阵单元) |
| 分支复杂负载 | 友好 | 代价较高 |
| 访存敏感度 | 相对低 | 较高,依赖高带宽 |
| 标称算力达成难度 | 中等,依赖向量化 | 高,依赖并行度与算子优化 |
| 典型优势场景 | 通用业务、复杂逻辑、串行任务、小规模计算 | 深度学习训练推理、大规模矩阵运算、数据并行任务 |
CPU与GPU的算力计算并非同一把尺子:CPU的峰值公式体现“少核宽向量”的设计哲学,精度比例稳定、分支友好;GPU的峰值公式体现“多核高吞吐”的路线,低精度加速显著但精度分层明显。理解两者在公式结构、精度策略、并行模型与带宽约束上的差异,才能正确解读标称算力,并结合业务精度、算术强度、并行度与改造成本做出条件化的选型判断——理论峰值决定上限,有效算力才决定业务表现。