HPC 基准 —— HPL、HPCG 与 TOP500

HPC 基准是 GPU 集群验收里第一个跑的——既是验机也是衡量峰值。本文专题讲 HPL、HPCG、HPL-MxP,以及 TOP500 / Green500 / HPCG 三张榜单。

TOP500 用什么标尺

1
2
3
TOP500 自 1993 年起,每年 6 月(ISC)/ 11 月(SC)发布
排名标尺:HPL Linpack(FP64 LU 分解 GFLOPS)
HPL 2.0 规范 2008 年定稿,沿用至今

TOP500 创始人之一的田纳西大学教授 Jack Dongarra 认为 Linpack 性能已经过时,大家也意识到单看 CPU 性能的弊端,开始使用 HPCG(The High Performance Conjugate Gradients)性能来全面衡量超算性能。Linpack 更考验超算的处理器理论性能,而 HPCG 更看重实际性能,对内存系统、网络延迟要求也更高。

HPL —— Linpack 怎么跑

HPL 解一个 N×N 稠密线性方程组(双精度)。计算量 ≈ 2/3 N³ + 2 N²。

GPU 时代用 NVIDIA 优化版的 HPL(容器名 nvcr.io/nvidia/hpc-benchmarks),底层调 cuBLAS / NCCL。

关键参数 HPL.dat

按 NVIDIA SA benchmark 实战经验:

1. N(矩阵规模 / Problem Size)

1
2
3
4
5
6
7
原则:填满所有 GPU 显存(85-92%)
公式:显存占用 (Bytes) = N² × 8(FP64)

单机 8× A100 80GB(总 640 GB):
N ≈ √(640 × 1024^3 × 0.9 / 8) ≈ 268,328

注意:N 必须是 NB 的整数倍。

2. NB(数据块大小 / Block Size)

1
2
3
现代 NVIDIA GPU 推荐 NB 远大于传统 CPU 的设定
A100 / H100 / H200: 2048、3840、4096
B200 / B300: 尝试 2048-4096,跑几个值取最高

3. P × Q(进程网格)

1
2
3
4
5
6
7
P × Q = 总 MPI 进程数 = 总 GPU 数
P ≤ Q 且尽量接近正方形(或 P 是 Q 的一半)
避免 1×8 这种极度狭长

单机 8 卡: P=2, Q=4
4×8=32 卡: P=4, Q=8
NVL72: P=8, Q=9

其他

1
2
3
PMAP:     1 (Row-major) 或 0 (Column-major),NVIDIA 优化版脚本通常自动管理
BCAST: 广播算法,尝试 1 或 2
DEPTH: Look-ahead 深度,GPU 上通常 0 或 1

跑分目标

1
2
3
4
HPL 效率 = 实测 GFLOPS / 理论峰值 GFLOPS
单机 8× A100 / H100:典型 70-80%
NVL72: 典型 65-75%(受 NVLink + IB 影响)
万卡集群: 典型 55-70%

低于 60% 一般有问题——下面是典型排查路径。

调优排查(来自 NVIDIA SA 实战 guide)

问题 1:性能远低于理论峰值(效率 < 60%)

1
2
3
4
5
6
7
8
9
10
11
12
13
原因:显存未充分利用
→ 增大 N,逼近 OOM 临界点(90% 显存利用)

原因:降频
→ sudo nvidia-smi -pm 1 # 持久模式
→ sudo nvidia-smi -lgc <Max_Clock> # 锁最高加速频率

原因:NUMA 拓扑绑定不当
→ MPI 启动加 NUMA binding 参数
→ 用 NVIDIA bind.sh 等脚本,确保 GPU 分到最近的 CPU 物理核

原因:P/Q 不合理
→ 交换 P 和 Q 的值,调整比例

问题 2:多节点扩展性极差

1
2
3
4
5
6
7
8
9
10
原因:InfiniBand/RoCE 未全速运行
→ ib_write_bw 测试节点间 RDMA 是否达标

原因:GPUDirect RDMA 未生效
→ lsmod | grep nv_peer_mem
→ 没加载会经 CPU 内存回环,延迟暴涨

原因:NCCL 调优
→ NCCL_IB_HCA 指定 HCA
→ NCCL_DEBUG=INFO 查看实际链路

HPCG —— “真实性能”基准

1
2
3
4
5
[HPCG](https://www.hpcg-benchmark.org/) 每半年发布榜单
求解 SpMV(稀疏矩阵向量乘)+ 多重网格预条件
对内存带宽、延迟、网络通信极度敏感

HPCG 性能通常 = HPL 性能的 1-3%

为什么 HPCG”低得多”?

1
2
3
4
5
6
7
8
HPL:稠密 BLAS-3 操作,几乎都是 GEMM
→ 计算密度高,HBM/cache 复用极好
→ GPU Tensor Core 不能用(只支持 FP16+)但 FP64 cuBLAS 已经很优

HPCG:稀疏访存为主
→ memory-bound,HBM 带宽决定上限
→ 内存延迟、网络延迟一一暴露
→ 真实科学计算更像 HPCG

跑 HPCG 时 GPU 利用率(nvidia-smi 看)只有 30-50%——这不是 bug,是 workload 性质决定。

历史事件

1
2
3
4
5
天河 2 号之前是 HPCG 性能第一名
2016 上半年: 中国天河 2 号第一,日本 K 第二
2016 下半年起: 日本 K 超算夺第一(K 超算在 TOP500 排名第七)
富岳(Fugaku): 2020 年起 HPCG 长期第一
富岳 HPCG ~16 PFLOPS(vs Linpack 442 PFLOPS)

待补充:2026 年最新 HPCG 榜单数据。

HPL-MxP —— 混合精度 HPL

1
2
3
4
[HPL-MxP](https://hpl-mxp.org/) 原名 HPL-AI(2019 年)
用 FP16/FP32 做主体计算,FP64 修正
利用 Tensor Core 大幅加速
针对 LU 分解的迭代细化方法

为什么需要 HPL-MxP?

1
2
3
4
5
6
7
8
9
HPL 只能用 FP64 cuBLAS
→ V100 起 FP64 算力远低于 Tensor Core 算力
→ H100 FP64 67 TFLOPS vs Tensor FP16 1979 TFLOPS(相差 30×)
→ "大半算力闲着"

HPL-MxP:
主迭代用 FP16/BF16 Tensor Core 算
最后用 FP64 修正残差到精度
→ 能跑出 5-10× 于纯 FP64 HPL 的成绩

NVIDIA SA 集群验收里 HPL 和 HPL-MxP 都会跑——前者是历史延续可比,后者是真实 AI/HPC 混合负载的体现。

1
2
3
4
2024-11 HPL-MxP 榜单 TOP(参考):
Frontier (MI250X): 11.4 EFLOPS(混合精度)
Aurora: 10.6 EFLOPS
El Capitan: 16.7 EFLOPS(最新提交)

待补充:2026 年 HPL-MxP 最新数据。

NVL72 / NVL576 上跑 HPL

NVIDIA 在 GB-NVL72 / HGX B200/B300 都有官方 step-by-step benchmark guide(NDA / Partner,公开版可在 docs.nvidia.com 检索 DGX/HGX benchmark guide)。

1
2
3
4
5
6
典型流程:
1. 节点 prep:DCGM diag、nvbandwidth、cublasMatmulBench
2. 单机 HPL:8 卡 / 节点
3. 多机扩展:rail-optimized IB + NCCL-tests 通过
4. NVL72 整柜 HPL(72 GPU 单 NVLink domain)
5. HPL-MxP 跑 Tensor Core

NVL72 整柜 HPL 要求所有 72 GPU 在同一个 NVLink domain 内一次跑过——这是 GB200 NVL72 区别于”8 节点 HGX H100 + IB”的本质:72 GPU 之间 collective 走 NVLink,HPL 多节点扩展性损失更小。

Green500 —— 能效榜

Green500 与 TOP500 同源:

1
2
3
排名标尺:HPL GFLOPS / Watt
2024-11 第一:JEDI(NVIDIA H100 + Grace)≈ 72 GFLOPS/W
2024-11 富岳:约 14 GFLOPS/W

GPU 集群通常 60-72 GFLOPS/W,纯 CPU 集群 10-20 GFLOPS/W——HPC 已经实质 GPU 化

HPC 三张榜怎么选

1
2
3
4
5
6
7
8
HPL:     "我家硬件 FP64 峰值多少"——历史延续,TOP500 主榜
HPCG: "我家硬件真实跑多少"——内存/网络瓶颈
HPL-MxP: "我家硬件 AI 友好场景多少"——Tensor Core 时代
Green500: "我家硬件能效如何"——TCO 视角

HPC 中心日常: 三张榜都看
GPU 集群验收: HPL + HPL-MxP 必跑,HPCG 选跑
AI 集群验收: HPL-MxP / NCCL-tests / MLPerf

一些命令与文档

1
2
3
4
5
6
7
8
9
10
11
# NVIDIA hpc-benchmarks 容器(HPL/HPL-MxP/HPCG)
docker run --gpus all --rm -it \
-v $PWD:/workspace \
nvcr.io/nvidia/hpc-benchmarks:24.09 bash

# 容器内跑 HPL
mpirun -np 8 --map-by node:PE=12 \
./hpl.sh --dat HPL.dat

# 跑 HPL-MxP(NVIDIA 容器自带)
./hpl-mxp.sh --m=2048 --n=2048 ...
1
2
3
4
查 TOP500:       https://www.top500.org/
查 HPCG: https://www.hpcg-benchmark.org/
查 Green500: https://www.top500.org/lists/green500/
NVIDIA HPC bench:https://docs.nvidia.com/ → DGX/HGX Benchmark Guide

一张速查

测试 测什么 适合场景 占总时间
HPL FP64 峰值 LU 分解 集群初验、TOP500 提交 数小时
HPL-MxP Tensor Core 混合精度 AI 集群验收 数小时
HPCG 真实科学计算 真实 workload 摸底 1-2 小时
nvbandwidth H2D/D2H/D2D 带宽 单卡基线 几分钟
NCCL-tests 集合通信带宽 集群互联验收 1-2 小时

小结

  • HPL(Linpack)测 FP64 峰值,TOP500 标尺,效率 65-80% 算合格
  • HPCG 测真实场景,性能通常是 HPL 的 1-3%
  • HPL-MxP 用 Tensor Core 跑混合精度,AI 时代的”新 HPL”
  • 跑 HPL 关键三参数 N / NB / P×Q,效率低主排查显存、降频、NUMA、IB
  • Green500 看能效,GPU 集群比 CPU 集群高 5-10×

下一篇讲存储与网络 benchmark——fio / iperf / ib_write_bw / SPECsfs 实战。