HPCG
背景介绍
HPCG 的全称是 High-Performance Conjugate Gradient Benchmark(高性能共轭梯度基准测试),旨在评估超级计算机系统处理高带宽、低延迟工作负载的能力,这些负载更接近于现实世界中的许多科学应用,例如流体力学、结构分析和天气预报等。
HPCG 的测试内容是求解一个三维离散化问题所产生的稀疏线性方程组。它使用的核心迭代求解器是预条件共轭梯度法 (Preconditioned Conjugate Gradient, PCG)。
具体介绍参见https://www.hpcg-benchmark.org
赛题说明
-
本次赛题使用并行科技算力平台,在H800集群上进行,限制在单节点运行,最多使用4卡。
清华同学:通过 清华专属算例--并行科技 领取 500 元代金券,进入并行智算云,选择“集群”进行集群资源申请,选择 H800 即可。登入后点击“SSH”连接集群。
-
登录集群,从网盘链接获取sif文件,下载到集群工作目录。(参考集群使用说明)
该文档使用NVIDIA HPC Benchmark Container作为运行环境,并使用singularity运行容器。
这里提供已经转换好的sif文件hpc-benchmarks_25.02.sif
https://cloud.tsinghua.edu.cn/f/d1628b26fc924eaca407/
可在运行目录输入以下指令,直接下载到目录
```bash
wget https://cloud.tsinghua.edu.cn/f/d1628b26fc924eaca407/?dl=1 -O hpc-benchmarks_25.02.sif
```
如需加载singularity如下:
```bash
module load singularity
```
- 在当前目录准备输入文件
hpcg.dat
,一个可能的参数配置如下:
HPCG benchmark input file
Sandia National Laboratories; University of Tennessee, Knoxville
256 256 256
60
- 之后,我们可以创建用于运行的脚本
run.sh
,一个可能的示例如下
#!/bin/bash
#----------------------------------------------------------
# SBATCH Directives
#----------------------------------------------------------
#SBATCH --job-name=test
#SBATCH --output=./logs/test_hpcg_%j.out
#SBATCH --error=./logs/test_hpcg_%j.err
#SBATCH --gpus=1
#SBATCH --time=00:30:00
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
date
module load singularity
module load openmpi/4.1.5_ucx1.17.0_nvhpc24.9_cuda12.4
CONT="$(pwd)/hpc-benchmarks_25.02.sif"
MOUNT="$(pwd):/my-dat-files"
# 指定镜像与挂载目录
# 将当前目录挂载到my-dat-files,使容器可访问当前目录文件
`which mpirun` -np 1 --bind-to none \
singularity run --nv \
-B "${MOUNT}" "${CONT}" \
/workspace/hpcg.sh --dat /my-dat-files/hpcg.dat --b 1 \
- 在当前目录使用sbatch提交脚本(关于sbatch与slurm的用法参考集群使用文档) 注:集群某些计算节点可能存在环境问题,导致运行出错,此时可使用-x选项排除指定节点并提交
之后,在运行目录下将会生成文件夹logs
,logs
中test_hpcg_xxx.out
文件即为输出结果
调优提示
可以自行探索尝试的调优方向包括但不限于:
- mpi及其他运行环境的选择。不同运行环境可能对运行效果有所影响。
- mpi的运行时选项和进程数配比。进程数对于程序的运行效率和性能有很大的影响,配合mpi的不同通信策略可能带来不同的效果。
- 调整脚本运行参数。在官网及相关文件中有对hpcg.sh
脚本运行参数的说明,可以进行调整来优化运行性能。
- 调整输入规模和计算策略。在hpcg顶层目录中的TUNING文件中对各个输入参数有比较详细的介绍,你可以对这些参数进行调整来获得最佳的测试性能。
提交要求
基本提交
优化完成后,请在gpu上运行并获取输出,内容包括
=========================================================
================= NVIDIA HPC Benchmarks =================
=========================================================
NVIDIA Release 25.02
Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
Various files include modifications (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved.
This container image and its contents are governed by the NVIDIA Deep Learning Container License.
By pulling and using the container, you accept the terms and conditions of this license:
https://developer.nvidia.com/ngc/nvidia-deep-learning-container-license
HPCG-NVIDIA 25.2.0 -- NVIDIA accelerated HPCG benchmark -- NVIDIA
...
...
Final Summary=
Final Summary::HPCG result is VALID with a GFLOP/s rating of=3055.69
Final Summary::HPCG 2.4 rating for historical reasons is=3073.34
Final Summary::Results are valid but execution time (sec) is=54.3606
Final Summary::Official results execution time (sec) must be at least=1800
*.out
文件中只允许包含一个测试规模下的运行结果。该文件需上传到测评网站,用于判断正确性与性能。
完整提交
- 优化报告,总结该题目的优化过程,包括发现的问题、优化方法、加速比等,鼓励加入图表等形象化呈现
- 配置文件(包括输入参数、环境配置等)
- 运行脚本(包括软件环境、运行参数等)
- 运行后的输出log
*.out
- 如有其他修改,提交相关文件,并在报告中说明
评分标准
- 正确运行 70%
- 性能分 30% ,计算方式为 \(0.3 \times \frac{FLOPS_{team}}{FLOPS_{fastest}}\)
注意事项
- 运行环境限制在单机,最多使用4卡,多于4卡将不计性能分
- 可使用其他版本的NVIDIA HPC Benchmark Container,但需记录完整流程,将相关修改一概提交,以验证合法性
- 不允许修改输出log,需包含原始标准输出的完整内容
- 最终提交时,需提交上述要求完整提交的所有文件,否则不计分