高性能计算扩展性:结果诊断与可信度验证
给出强/弱扩展效率的计算方法、Amdahl 律下的加速上限手算、通信占比与每核单元数的经验下限,以及用算术强度判断带宽受限的 roofline 判据,用于区分通信瓶颈、内存带宽瓶颈与负载不均。
高性能计算扩展性:结果诊断与可信度验证
扩展性诊断要回答的是"加核为什么不再变快",而不是"能跑多少核"。本文给出强/弱扩展效率的计算方法、Amdahl 律下的加速上限、通信占比与每核单元数的经验下限,以及用算术强度区分带宽瓶颈的判据。适用于 CF 求解器在 核区间的性能诊断。
强扩展与弱扩展测的不是同一件事
强扩展固定问题规模、增加核数,衡量"同一算例能不能更快";弱扩展保持每核工作量不变、同时放大问题与核数,衡量"能不能算更大的题"。二者公式不同:
$T_1T_NN$ 核墙钟时间。弱扩展效率则用
其中 $T_NN$ 核时的墙钟时间",理想值为 1。诊断时必须先声明测的是哪一种:一个求解器强扩展效率在 512 核掉到 40%,但弱扩展效率仍保持 0.92,说明它不适合加速小算例,却完全胜任更大规模的问题。
Amdahl 律给出的加速上限
若程序中不可并行部分占 ,则
一次可核对的手算:(0.1% 串行,来自 I/O、初始化与全局归约)时,加速上限 。在 时
在 时 ,。仅 0.1% 的串行比例就足以让 4096 核的效率跌到 20% 以下;而 只增加 0.1 个百分点(到 0.2%)就会把上限从 1000 砍到 500。这就是"扩展性下降点出现在千核量级"的定量来源。
通信占比与每核单元数的下限
分区并行中,每核通信量正比于子域表面积,计算量正比于子域体积,二者之比随子域尺寸 下降:
因此每核单元数(等价于 )存在经验下限。手算:三维块状分解,每核 个单元时子域边长约 个单元,边界单元约 ,占 27.7%;每核 个单元时边界占比降到 22.1%;每核 时降到 8.6%。工程经验是每核低于 个单元时通信占比超过 20%,扩展效率开始快速下降。
单次迭代的通信时间可估算为延迟项加带宽项:。取 、每核交换 、互连带宽 ,则 。若计算时间 ,通信占比 ;当每核单元数降到 ,计算时间降到 而通信因延迟项几乎不变,占比升到 17.8%,这就是下降点。
内存带宽与 roofline 判据
FVM 显式格式是典型的内存带宽受限算子。算术强度(每字节内存流量对应的浮点运算数)为
为每单元浮点运算数, 为每单元内存流量(字节)。手算:六面体单元 6 邻域、每单元约 50 次浮点运算,需读写 7 个 double(),。节点峰值 、可持续带宽 时,可达到的浮点性能只有 ,仅为峰值的 1.8%。因此"扩展效率低"常常不是通信问题,而是算法本身带宽受限,加核无法改善。
# 用简单计时估计强扩展效率与通信占比
import math
def efficiency(t1, tN, N):
S = t1 / tN
return S, S / N
S, eta = efficiency(86400.0, 3120.0, 64) # 86400 s -> 3120 s, 64 核
print(f"S={S:.1f} eta={eta:.3f}") # S=27.7 eta=0.433
t_comm, t_comp = 52e-6, 1.2e-3
print(f"f_comm={t_comm/(t_comm+t_comp):.3f}") # 0.042
上面第一组数(、64 核)给出 、,明显低于线性;第二组显示通信只占 4.2%,说明效率损失主要来自负载不均或内存带宽,而非通信。
失败模式:现象、根因与判定试验
| 现象 | 根因 | 判定试验 |
|---|---|---|
| 64 核效率 43%,通信占比仅 4% | 负载不均或分区边界过大 | 统计各 rank 计算时间与单元数离散度 |
| 512→1024 核耗时几乎不变 | 串行部分或全局归约主导 | 用 Amdahl 反解 ,检查 I/O 与全局通信 |
| 弱扩展效率随核数缓慢下降 | 表面积/体积比上升,通信占比增长 | 记录每核单元数与 |
| 每核单元数 3000 时效率骤降 | 低于通信占比 20% 的经验下限 | 增大问题规模或减少分解块数 |
| 加核后浮点性能停在峰值 2% | 算术强度低于 roofline 拐点 | 计算 AI,判断是否带宽受限 |
| 相同核数不同分解效率差 30% | 分区质量差(切割面或邻接失衡) | 比较不同分解器的邻接通信量 |
扩展性报告字段
一次扩展性测试至少要报告:问题规模(单元数)、核数序列、每核单元数、$S_N\eta_Nf_{comm}$、内存峰值(GB/核),以及瓶颈归类(通信/带宽/负载)。缺少每核单元数这一项,效率数字无法与别人的算例比较——同样的 50% 效率,在每核 5 万单元和每核 2 千单元下含义完全不同。
参考文献:
- Amdahl, G. M., “Validity of the single processor approach to achieving large scale computing capabilities”, AFIPS Spring Joint Computer Conference, 1967.
- Gustafson, J. L., “Reevaluating Amdahl’s law”, Communications of the ACM, 31(5), 532–533, 1988.
- Saad, Y., Iterative Methods for Sparse Linear Systems, 2nd ed., SIAM, 2003.
- Gropp, W., Lusk, E., & Skjellum, A., Using MPI: Portable Parallel Programming with the Message-Passing Interface, 3rd ed., MIT Press, 2014.
- Williams, S., Waterman, A., & Patterson, D., “Roofline: an insightful visual performance model for multicore architectures”, Communications of the ACM, 52(4), 65–76, 2009.
- PETSc Development Team, PETSc/TAO Users Manual, Argonne National Laboratory, ANL-21/39, 2023.