CPU 和 GPU 解决的是不同的问题。CPU 针对低延迟的串行任务和复杂的分支逻辑进行了优化;GPU 则针对大规模并行工作负载的吞吐量进行了优化。选错处理器类型,是服务器架构中代价最高的错误之一。
本文将说明每种处理器在哪些场景下胜出、何时将两者结合才有意义,以及如何避免为您无法充分利用的硬件超支。
CPU 工作负载:串行、分支密集与通用计算
现代 CPU 拥有少量但性能强劲的核心,配备深层缓存、分支预测和高主频。它擅长:
- Web 服务器、应用服务器和数据库
- 包含大量条件分支的业务逻辑
- 必须逐个快速完成的任务
- 内存访问模式不规则的工作负载
如果您的代码大部分时间都在等待内存或做决策,GPU 帮不上忙。此时增加 CPU 核心、更快的内存或更好的缓存通常更重要。
GPU 工作负载:并行、可向量化与吞吐量受限
GPU 包含数千个较为简单的核心,旨在同时对大量数据元素执行同一条指令。当同一操作需要应用于大规模数据集时,它的优势最为明显:
- 机器学习训练与推理
- 视频转码与渲染
- 科学仿真与矩阵计算
- 密码学暴力破解或哈希计算
GPU 要求先把数据搬运到显存、启动计算内核(kernel),再把结果拷贝回来。如果问题规模太小或过于串行,这些开销会抵消 GPU 的优势。
CPU 与 GPU 对比
| 维度 | CPU | GPU |
|---|---|---|
| 核心数量 | 数十个核心 | 数千个核心 |
| 最佳适用场景 | 串行、分支密集的逻辑 | 大规模并行数学运算 |
| 延迟 | 单线程延迟低 | 内核启动延迟较高 |
| 内存 | 大型缓存层级 | 高带宽显存 |
| 功耗与成本 | 单位功耗与成本较低 | 单位功耗与成本较高,但密度更高 |
何时需要两者并用
许多生产系统会同时使用 CPU 和 GPU:CPU 负责请求路由、业务逻辑和编排调度,GPU 负责繁重的数学计算内核。典型例子包括:
- 实时语音识别:CPU 处理音频流和文本后处理;GPU 运行声学模型
- 推荐系统:CPU 提供 API 服务;GPU 计算向量嵌入(embeddings)
- 视频平台:CPU 管理上传与分发;GPU 将视频转码为多种格式
关键在于尽量减少主机内存与显存之间的数据搬运,并对工作进行流水线化,避免任何一方处理器空转。