简介:本文从FLOPS定义出发,系统拆解CPU与GPU的理论峰值算力公式与实测制约因素,对比二者在架构、精度、扩展性、适用场景上的核心差异,并给出选型依据、迁移注意事项与常见误区,帮助技术读者建立可复用的算力评估框架。
在AI训练、科学计算、渲染与数据处理等场景中,“算力”几乎是最常被提及的指标。但很多团队在评估硬件时,往往只看到一个以TFLOPS为单位的数字,却忽略了这个数字是怎么来的、在什么精度下成立、以及在实际业务中能兑现多少。
CPU和GPU是当前两类最主要的通用计算载体。它们都能用“每秒浮点运算次数(FLOPS)”来衡量峰值能力,但二者的架构取向、计算方式和适用边界差异极大。把两者的算力放在同一把尺子下比较,既能帮助读者理解FLOPS的计算逻辑,也能避免“只看峰值、不看场景”的选型误区。本文的核心对比对象就是:通用串行取向的CPU与大规模并行取向的GPU,在算力计算方式与工程选型上的差异。
在计算领域,算力通常指硬件每秒钟可执行的浮点运算次数,标准单位为FLOPS(Floating-point Operations Per Second)。常见衍生单位包括MFLOPS(10^6)、GFLOPS(10^9)、TFLOPS(10^12)、PFLOPS(10^15)。
需要明确的是,“一次浮点运算”通常指一次加法或一次乘法,例如 c = a + b 或 c = a * b。而融合乘加(FMA)指令 d = a * b + c 在一个时钟周期内完成一次乘法和一次加法,因此可计为2次浮点运算。这个约定是理解后续所有峰值公式的基础。
CPU是通用处理器,物理核心数量相对有限,但每个核心具备完整的乱序执行、分支预测、多级缓存等机制,擅长处理复杂逻辑、串行依赖强的任务。其算力扩展主要依赖SIMD(单指令多数据)向量化技术,例如128位、256位、512位寄存器可分别同时处理多个单精度或双精度浮点数。
GPU由大量相对简单的计算单元组成,单核能力弱于CPU,但凭借成千上万的线程并行执行,在高吞吐、数据并行型负载上具备显著优势。其算力通常以流处理器数量、每周期指令吞吐和核心频率来估算,并高度依赖显存带宽与精度模式(FP64/FP32/FP16/低精度等)。
尽管架构不同,CPU与GPU的峰值算力估算共享同一套抽象逻辑:
理解了这四点,就能明白:峰值算力是可比的“理论上限”,但不是可直接兑现的“业务能力”。
CPU理论峰值算力可表示为:
峰值FLOPS = 核心数 × 每周期指令数(IPC,含SIMD宽度) × 主频(周期/秒) × 每指令浮点运算数
以一颗16核、支持512位SIMD与FMA、主频3.0GHz的CPU为例,单精度峰值约为:
16 × 16 × 3.0×10^9 × 2 = 1536 GFLOPS ≈ 1.536 TFLOPS
双精度下SIMD宽度减半(8个双精度数),峰值约为768 GFLOPS。
GPU的估算逻辑类似,但并行单元数量级更大:
峰值FLOPS ≈ 流处理器数量 × 每周期每单元浮点运算数 × 核心频率
差异的关键不在公式形式,而在参数规模:CPU的“核心数×SIMD宽度”通常在数百量级,GPU的并行单元则在数千到数万量级,因此在同代工艺下GPU峰值往往高出一个数量级以上。但GPU的峰值高度依赖精度模式,双精度峰值通常远低于单精度,低精度模式则可能成倍提升。
CPU面向延迟敏感型任务,强调单线程性能与复杂控制流;GPU面向吞吐敏感型任务,强调大量线程的并行吞吐。这决定了两者在分支密集、串行依赖强的逻辑任务与规整的大规模数据并行任务上表现迥异。
CPU的SIMD宽度固定,双精度与单精度差距通常为2倍;GPU在不同精度间的峰值差距可能更大,且低精度模式需要软件栈与算法配合(如混合精度训练)。因此比较两者算力时,必须对齐精度口径,否则数字没有可比性。
无论CPU还是GPU,理论峰值都难以完全达到,主要受制于:
| 维度 | CPU | GPU |
|---|---|---|
| 架构取向 | 少核心、强单核、低延迟 | 多核心、宽并行、高吞吐 |
| 峰值估算关键参数 | 核心数、SIMD宽度、主频、FMA | 并行单元数、每周期运算数、频率 |
| 精度间差距 | 相对较小(如同代双精度约为单精度一半) | 通常较大,随精度模式变化明显 |
| 擅长负载 | 串行逻辑、分支密集、控制复杂 | 数据并行、矩阵运算、批量吞吐 |
| 扩展方式 | 多路、集群、向量化 | 多卡、多机、并行框架 |
| 软件适配成本 | 编译器向量化、多线程改造 | 并行框架与算子适配、显存管理 |
| 运维关注点 | 通用生态成熟,调优偏单机 | 显存、互联、散热、驱动与框架版本 |
| 成本结构 | 单机成本相对可控,人力调优为主 | 整机与互联成本高,规模化后单位算力成本可能更优 |
选型应遵循条件化判断:当负载以规整的大规模数据并行为主、且软件栈可适配时,GPU更具吞吐优势;当任务串行依赖强、逻辑复杂或规模较小时,CPU的通用性与低接入成本更划算。
迁移时需重点评估:算法与算子是否可并行化、精度口径是否一致、显存/内存容量是否满足、框架与驱动版本兼容性、监控告警与容量规划是否到位、以及长期运维人力成本。切忌只对比峰值数字而忽略数据供给与软件适配。
CPU与GPU的算力都可用FLOPS体系估算,公式逻辑相通,但参数规模、精度特性与架构取向决定了二者的适用边界。理解“峰值怎么算”只是第一步,更重要的是对齐精度口径、评估实际可达算力,并结合业务负载特征做条件化选型,才能让算力数字真正转化为业务收益。