1. 课程导入与基准测试全景
当我们说“这颗 CPU 比那颗快”“这块 GPU 训练大模型更划算”时,背后其实需要一套严谨的度量语言。CPU 与 GPU 计算性能基准测试,就是用可重复、可比较的方法,量化硬件在特定工作负载下的表现,并据此做出选型、调优与验收决策。它不是跑一个分数就结束,而是从“测什么、怎么测、结果怎么读”三个层面建立可信证据链。
本课程面向真实工程场景:你可能要为 HPC 集群采购节点,要为推理服务挑选加速卡,要为渲染农场评估升级收益,也可能只是想知道自己写的并行程序到底卡在哪里。无论哪种目标,基准测试的价值都在于把模糊的“感觉快”转化为可解释的数字,并且明确这些数字的适用边界。
四个核心概念:吞吐量、延迟、能效、扩展性
性能度量中最容易被混淆的是吞吐量与延迟。吞吐量描述单位时间内完成的工作量,例如每秒浮点运算次数(FLOPS)、每秒处理的图像帧数、每秒完成的推理请求数;延迟描述单个任务从开始到结束的时间,例如一次矩阵乘法的耗时、一个请求的端到端响应时间。二者并不总是同向变化:提高批处理大小通常提升吞吐量,却可能拉高单请求延迟。基准测试必须明确报告的是哪一个,否则数字之间无法比较。
能效把性能与功耗绑定,常用“性能/瓦特”表示,例如每瓦每秒浮点运算次数。它决定了在功耗受限的数据中心里,单位电费能换回多少算力。扩展性则描述资源增加时性能如何增长,常见指标是强扩展(问题规模固定、增加计算资源)与弱扩展(问题规模随资源同比增加)下的并行效率。一个在单卡上表现优异的程序,若在多卡上效率骤降,往往说明通信或同步成为瓶颈。
典型应用场景决定基准选择
不同场景对四个维度的权重完全不同。HPC 科学计算通常以双精度浮点吞吐和弱扩展效率为核心,关注 LINPACK、STREAM 这类标准化基准;AI 训练看重混合精度算力、显存带宽与多卡通信效率,常用矩阵乘法、Transformer 训练吞吐来衡量;AI 推理更关注低延迟与高并发下的吞吐,批处理策略和量化精度会显著改变结果;实时渲染则对帧率稳定性、帧生成延迟和显存带宽敏感,基准往往以固定场景的帧时间分布呈现。
这意味着不存在“通用最强”的基准。选择基准的第一原则是:基准的工作负载特征必须贴近你的真实应用。如果你的业务是稀疏矩阵求解,那么一个只测稠密浮点峰值的分数参考价值有限;如果你的服务对尾延迟敏感,那么平均值漂亮的报告可能掩盖了长尾问题。
一个可操作的示例:同一段矩阵乘法在 CPU 与 GPU 上的对比
为了把概念落到操作层面,我们设计一个教学示例(以下数值为合理假设,用于说明方法,并非实测结果)。任务是对两个 4096×4096 的单精度矩阵做乘法,比较 CPU 多线程实现与 GPU 实现的吞吐量与能效。
CPU 侧使用 16 核处理器,采用分块矩阵乘法并开启 OpenMP,测得平均耗时约 1.2 秒,对应约 114 GFLOPS;整机功耗约 180 瓦,能效约 0.63 GFLOPS/瓦。GPU 侧使用一块中端加速卡,采用 cuBLAS 单精度接口,测得平均耗时约 0.08 秒,对应约 1.7 TFLOPS;整卡功耗约 250 瓦,能效约 6.9 GFLOPS/瓦。若只看耗时,GPU 快约 15 倍;若看能效,优势约 11 倍。这个差距的来源不是“GPU 更先进”,而是矩阵乘法高度规则、可大规模并行,恰好匹配 GPU 的众核结构。
但结论不能止步于此。若把矩阵规模缩小到 256×256,GPU 的启动与数据传输开销占比上升,优势可能缩小到数倍;若改为稀疏矩阵或强依赖串行的递推计算,CPU 甚至可能反超。因此报告基准结果时,必须同时写明矩阵规模、精度、库版本、线程数、功耗测量方式和重复次数。
# 教学示例:记录一次对比测试的关键元数据(示例值)
workload : SGEMM 4096x4096x4096, FP32
cpu_config : 16 cores, OpenMP, block=256
gpu_config : cuBLAS, single card, batch=1
warmup : 3 iterations
measure : 10 iterations, report median
cpu_result : 1.20 s -> 114 GFLOPS, 180 W, 0.63 GFLOPS/W
gpu_result : 0.08 s -> 1.70 TFLOPS, 250 W, 6.90 GFLOPS/W
note : 示例数据,仅用于说明测量与记录方法
本课程的任务驱动学习路径
接下来的学习不是按“概念—工具—报告”平铺,而是围绕一条可交付的主线推进:先建立度量语言与实验纪律,再分别深入 CPU 与 GPU 的基准方法,随后进入真实场景的组合测试与结果归因,最后形成一份可复用的基准测试报告。每一阶段都对应一个可检查的产出,例如指标定义表、测试脚本、原始数据记录和结论摘要。
学习过程中请始终带着三个问题:我测的指标定义清楚了吗?我的负载贴近真实业务吗?我的结论能被别人复现吗?能回答这三个问题,基准测试才从“跑分”变成工程决策依据。课程结束时,你应当能够独立设计一次针对具体场景的 CPU/GPU 对比测试,读懂结果中的异常,并给出有边界的性能结论。