Skip to content

CPU HPL 实测:从单节点到 80 节点全流程复盘 ​

流程示意

摘要:本文是一份实测复盘,不是理论讲解。按"单节点调优 → 小规模扩展 → 全规模验收"的流程,给出每一步的 HPL.dat 配置、运行命令和真实结果,并记录全程踩过的坑。

1. 测试环境(脱敏后口径) ​

项配置
CPU双路,单路 52 物理核,共 104 核/节点,2.0 GHz
指令集AVX-512(每周期 32 双精度 FLOP)
内存1536 GB / 节点
软件Intel oneAPI(MKL + MPI),HPL 2.3
互连以太网 / InfiniBand 双场景
单节点理论 Rpeak6656 GFlops

加载 oneAPI 环境(每次测试前必做)

bash
source /opt/intel202*/oneapi/setvars.sh intel64 --force
which mpirun   # 确认能找到,否则下面全失败

2. 第 0 步:锁频,让测试可复现 ​

HPL 结果对频率抖动非常敏感,跑之前统一设置:

bash
# 所有节点执行
cpupower -c all frequency-set -g performance

# 抽查实时频率与负载
turbostat   # 期望看到 Avg_MHz ≈ 2.1GHz,Busy% = 100

BIOS 侧三项关键设置

  • CPU Power and Performance Policy → Performance(防节能降频)
  • Hyper-Threading:测试机建议 off(104 物理核跑满即可)
  • Turbo Boost → Enabled

3. 单节点实测:建立基线 ​

用 N_calculator.calculator 算好单节点规模(90% 内存利用率):

text
N = 430746(90% 内存)    Rpeak = 6656.0 GFlops

单节点 HPL 运行后,91 节点批量实测结果分布(节选):

节点实测 GFlops效率
节点 016329.6395.1%
节点 316282.6894.4%
节点 356433.0596.6%(最高)
节点 405843.3487.8%
节点 535792.3587.0%
节点 545777.4686.8%(最低)
全体平均~621893.4%

单节点基线结论:93.4% 平均效率。低于 90% 的节点单独排查。

4. 36 节点实测(中规模) ​

4.1 HPL.dat 关键参数 ​

text
N     : 1000000
NB    : 384
P     : 12
Q     : 6        (P × Q = 72 = 36 节点 × 2 进程/节点)

4.2 运行命令 ​

bash
# runme_intel64_dynamic 脚本内部实际执行
mpirun -perhost 2 -np 72 -hostfile hostfile ./runme_intel64_prv

4.3 结果 ​

项数值
理论 Rpeak239616 GFlops
实测191494 GFlops(1.91494e+05)
效率79.9%
运行时长3481.4 s(约 58 分钟)
残差校验PASSED

5. 80 节点实测(全规模验收) ​

5.1 HPL.dat 关键参数 ​

text
N     : 3145728
NB    : 384
P     : 10
Q     : 8        (P × Q = 80 进程,每节点 1 进程)

5.2 运行脚本与命令 ​

bash
export MPI_PROC_NUM=80
export MPI_PER_NODE=1
export NUMA_PER_MPI=2

# 以 2.txt 作为 hostfile(80 个节点地址)
mpirun -perhost ${MPI_PER_NODE} -np ${MPI_PROC_NUM} -f 2.txt ./runme_intel64_prv | tee -a 80cpulinpack.txt

5.3 结果 ​

项数值
理论 Rpeak532480 GFlops
实测417170 GFlops(4.17170e+05)
效率78.34%
运行时长49746.14 s(约 13.8 小时)
残差校验1.84674053e-03 ...... PASSED

5.4 完整输出片段 ​

text
T/V                N    NB     P     Q               Time                 Gflops
WC00C2R2     3145728   384    10     8           49746.14            4.17170e+05
||Ax-b||_oo/(eps*(||A||_oo*||x||_oo+||b||_oo)*N)=   1.84674053e-03 ...... PASSED

6. 扩展效率曲线(实测汇总) ​

规模理论 GFlops实测 GFlops效率时长
1 节点(平均)6656621893.4%—
36 节点23961619149479.9%58 min
80 节点53248041717078.3%13.8 h

三条规律:① 规模越大效率越低(通信开销);② 78%~80% 是 36~80 节点规模的实际水平;③ 大规模测试时间成本高(80 节点单次约 14 小时),排期要留足。

7. 踩坑记录 ​

7.1 坑 1:未加载 oneAPI,mpirun: command not found ​

text
./runme_intel64_dynamic: line 86: mpirun: command not found

原因:新开的 shell 未执行 source setvars.sh。重新加载后正常:

bash
source /opt/intel202*/oneapi/setvars.sh intel64 --force

7.2 坑 2:全节点目录不一致导致运行失败 ​

所有计算节点必须挂载/同步同一份 HPL 目录(可执行文件、HPL.dat、hostfile),否则 MPI 在部分节点起不来。本集群的做法是把管理节点目录通过 NFS 共享给所有 GPU 计算节点后再统一运行。

7.3 坑 3:忽略 residual 校验行 ​

HPL 结果以最后一行 PASSED 为准;若显示 FAILED,说明矩阵求解数值不稳定(多为 N 太大导致内存不足或 NB 不匹配),数据不可用。

8. 结论与复用建议 ​

  • 单节点 93.4% → 36 节点 79.9% → 80 节点 78.3%,这条效率曲线可直接用于同类集群的验收预估。
  • 全规模测试前务必:锁频 → 加载 oneAPI → 同步目录 → 小规模验证,再跑全规模,避免 14 小时的空跑。

需要理论计算与预估方法,见前两篇:CPU 理论浮点峰值 Rpeak 计算实战、HPL 性能预估:从理论峰值到可交付效率。

AI-HPC 智算超算专家 · Contact: openaihpc@gmail.com