基于HPCC的高性能计算集群基准测试
摘要
高性能计算已成为国家重要的科技实力之一,也是科学与工程计算不可或缺的工具。基准测试对高性能计算至关重要。作为HPL测试的补充工具,高性能计算挑战(HPCC)不仅评估系统的浮点计算能力,还全面评估内存访问速度、网络通信速度等其他性能指标。HPCC测试能有效反映高性能计算系统各方面的性能表现。本文以甘肃计算中心的一套高性能计算集群为研究对象,探讨矩阵规模N、矩阵分块大小NB以及二维处理器网格P*Q等关键参数对HPCC基准测试的影响,并对该集群进行多节点测试与分析。
关键词 :高性能计算;HPCC;HPL;基准测试
I. 引言
计算已成为与理论研究、科学实验并列的现代科学三大范式之一。面对日益复杂的科学研究与工程计算中的大规模数学运算,普通计算工具已难以胜任,高性能计算(HPC)是实现大规模科学与工程计算不可或缺的方法,也是科学研究与工程计算领域的重要基础设施,可广泛应用于信息安全、工业模拟、科学研究、生物信息学、基因测序、油气勘探、气候预测等领域[2-5]。高性能计算已成为一个国家科技实力的体现,也是抢占科技制高点方面具有重大战略意义的国家之一[2]。
高性能计算集群的计算能力是其最重要的评价指标[6,7]。然而,高性能计算集群所宣称的理论性能指标并不能代表实际计算能力,系统软硬件协同严重影晌系统的实际性能,因此有必要对高性能集群进行基准测试。常见的基准测试包括HPL测试[7]、高性能计算挑战(HPCC)[8]、高性能共轭梯度(HPCG)[9]、NAS并行基准测试(NPB)[10]、标准性能评估委员会(SPEC)[11]等。全球超级计算机500强榜单[6]基于HPL基准测试。HPL方法侧重于测试处理器性能,仅反映系统的双精度浮点计算速度,对其他方面的性能反映不足。随着高性能计算的不断发展,针对更加复杂计算应用的需求日益增长,因此高性能计算领域需要更全面的基准测试。为此,HPCC[8,12-13]应运而生。该项目由美国田纳西大学的杰克·唐加拉教授牵头,美国与日本的高性能计算领域专家也参与了项目工作,主要目的是对业界最常用的HPL进行补充。
HPCC[8,12-18]是一个面向高性能计算集群的综合性测试套件。该套件包含多个独立的内核测试程序,包括HPL、PTRANS、STREAM、RandomAccess、P2P带宽、MPI FFT、Global Latency等。它不仅能测试计算性能,还评估计算集群的内存访问速度、网络通信速度及其他性能,对于各类应用均具有一定的代表性与参考价值。
为研究矩阵大小N、矩阵块大小NB以及二维处理器网格PxQ对HPCC基准测试的影响,对中国甘肃计算中心的一套高性能计算集群进行了测试与分析。
II. HPCC测试的软硬件环境
A. 硬件环境
测试集群包含1个管理节点、18个计算节点与1个存储节点。内部互联网络为Intel 100G EDR InfiniBand高速网络。所有软件运行于计算节点上,所有软件安装于存储节点并通过NFS挂载至计算节点执行,不于管理节点与存储节点上进行。每个计算节点配备2颗Intel Xeon Gold 6132处理器,主频为2.60GHz,内存为192GB DDR4 2666MHz。因此,每个节点双精度浮点计算的理论峰值为:2.6(主频GHz)×32(单核双精度浮点运算次数)×28(核/节点)= 2329.6 GFlops。
B. 软件环境
集群中所有节点的操作系统均为CentOS Linux 7.4.1708版本。编译HPCC测试套件(版本1.5.0),BLAS库采用OpenBLAS数学库(版本0.2.20),并行编程接口采用OpenMPI(版本2.1.1),HPCC版本为1.5.0 Meta Version。
III. 测试指标与参数设置
A. 测试指标
HPCC测试包含多个模块[8,12-18],进一步分为三个部分,分别用于测试计算性能、内存访问性能与网络通信性能。
- 用于测试集群性能的4个模块 (结果以GFlops表示):
- HPL (高性能Linpack):评估系统的性能,通过求解稠密线性方程组来测试整个系统的浮点计算能力;
- PTRANS (并行转置):用于评估浮点计算能力的并行转置。不同于HPL,PTRANS衡量多个处理器的浮点计算最大速度;
- DGEMM (双精度通用矩阵乘法):评估浮点计算性能,通过双精度矩阵乘法测试系统的点计算能力;
-
MPI FFT (消息传递接口快速傅里叶变换):评估浮点计算性能,通过并行快速傅里叶变换测试系统的点计算能力。
-
用于测试集群内存访问的2个模块 :
- STREAM :通过复制、缩放、求和等简单操作测试持续内存带宽,结果以GB/s表示;
-
RandomAccess :通过随机访问内存区域并进行异或操作,测试内存的随机访问性能以及进程间的内存访问性能。结果以MTEPS(百万次异或操作每秒)表示。
-
用于测试集群网络通信性能的2个模块 ,包括:
- PTRANS (并行矩阵传输):主要测试多处理器间大规模数据的通信性能。通过让多个处理器共同完成并行矩阵转置操作,测试系统的网络通信性能,结果以GB/s表示;
- 通信带宽与延迟 :基于PingPong(点对点通信基准)评估MPI Ping通信模式与Alltoall通信模式的带宽与延迟。
已有大量工作[8,12-17]与经验表明,每个模块对应1个指标,共8个指标,表I罗列了这8个指标。
B. 测试参数设置
1. 参数介绍
HPCC测试需要合理设置测试系统的理论峰值、内存大小、通信模式等参数。这些参数的含义已在许多参考文献[8,12-16,18-19]中进行了解释,此处不再赘述。鉴于不同机器配置不同,对测试结果影响较大的三个参数是矩阵大小N、矩阵块大小NB以及二维处理器网格PxQ[8,14-15,17-21]。其他参数通常设为默认值。
为尽可能获得最优测试指标数据,需在单节点测试中调整最优测试参数矩阵大小N与矩阵块大小NB,在多节点测试中,矩阵块大小NB可保持不变。大小N与可用内存成正比,并需考虑其规则设定二维处理器网格PxQ,以获得最优测试指标数据。
表I. HPCC基准测试指标
| 模块 | 索引及含义 |
|---|---|
| HPL | 串行稠密线性方程组求解速度 HPL_TFlops TFlops |
| PTRANS | 矩阵转置速度(MP模式) PTRANS_GBytes GB/s |
| DGEMM | 双精度矩阵乘法速度(MP模式) DGEMM_GFLOPs GFlops |
| MPI FFT | 一维快速傅里叶变换速度(MP模式) MPIFFT_Gflops GFlops |
| STREAM | 可持续内存带宽 STREAM_Triad GB/s |
| RandomAccess | 内存随机访问速度(MP模式) RandomAccess_MTEPS MTEPS |
| PTRANS | 多处理器对之间的大数据通信速度 PTRANS_Bandwidth GB/s |
| 通信带宽与延迟 | 消息传递的点对点通信带宽 Bandwidth_PingPong GB/s |
| 消息传递的全对全通信带宽 Bandwidth_Alltoall GB/s |
矩阵大小N越大,计算、通信与数据访问的开销越高,可能获得更高的性能。然而,当矩阵大小过大时,可能导致超出物理内存并产生磁盘交换,导致内存与缓存之间的冲突加剧,计算性能反而下降。因此,在尽可能增大矩阵大小N的同时,还需避免不产生系统交换。通常建议占用约80%的系统可用内存[8,14,16-18,22]。
通常研究认为N取值方法为公式1。
$$ N = \sqrt{\frac{0.8 \times \text{Memory}}{8}} $$
其中,Memory是可用的物理内存,其单位为字节(Byte),其中1GB = 1073741824 Byte。
矩阵块大小NB[8,14,16-18,21]的取值与通信模式、网络、处理器速度以及矩阵分块方式有关。通常经验认为,分块越小,缓存命中率越高,数据重用性越好,但通信开销增加,可能无法充分发挥处理器性能,从而降低整体测试性能。分块过大,性能也可能随之下降;当分块过大超过一定数值时,由于缓存不命中的影响,处理器性能也会随之下降。NB的最优值通常介于32与256之间。一般而言,NB是缓存行的整数倍。
二维处理器网格PxQ通常设为一串,规则[8,14,16-18,21]为:(1)PxQ = 进程数;(2)P ≤ Q,P的值应尽可能接近Q;(3)通常P的值为2的幂次,如1、2、4、8、16,性能较优。例如,16个进程,可设为P=Q=4;32个进程,可设为P=4,Q=8。然而,在某些处理器中,由于核心数分布的特性,完全遵循规则2并不一定是最优的。
为在单节点测试中使用最优测试参数,基本原则是:首先遵循二维处理器网格PxQ的设置规则得到最优组合,其他参数可暂时不变;然后遵循矩阵大小N与矩阵块大小NB的设置规则,尝试多种数据组合进行反复试验,以测得HPL_TFlops值最大的一组作为最优参数,从而确定最优的矩阵大小N与矩阵块大小NB。以下详述各个参数的设置方法。
2. 矩阵大小N
相关研究[14,16,22]指出,假设可用内存为Memory,矩阵大小为N,双精度数据每个元素占8字节。考虑到可用于该问题的内存是可用内存的80%,因此可用内存为0.8×Memory,即有8N²=0.8×Memory,从而得出公式1。
测试的每个节点内存为192GB,通过公式1计算为144000,通过公式2计算为128000。理论上,N值应在128000与144000之间。因此,为确定最优的N值,取144000与128000之间的差值16000,并将其四分之一即4000作为步长,从120000开始以4000为步长递增至最大值。因此,在192GB内存中可设置的最大N值为160000,此值内存占用已接近上限,可能影响性能测试。因此,仅选取大于144000的两个值,即148000与152000。综上所述,本研究选取了9个N值:120000、124000、128000、132000、136000、140000、144000、148000、152000。
3. 矩阵块大小NB
参考文献[16]建议选取不同BLAS库版本的最优NB值。对于OpenBLAS库,建议NB默认为384为佳。本测试中CPU的缓存大小为64KB。因此,建议NB设为64的倍数,即64、128、192、256、320、384、448。
4. 二维处理器网格PxQ
在一个计算节点内,包含2个中央处理器与共计28个核心。因此,进程数设为28。根据二维处理器网格PxQ的设置规则,P设为4,Q设为7为最优设置。
IV. 测试过程与结果
A. 单节点测试
在单节点测试中,核心数固定为28,进程数设为28,P设为4,Q设为7,满足二维处理器网格PxQ的三项设置规则。矩阵块大小NB的设置不仅与通信模式、网络与处理器速度有关,还与矩阵大小N相关。因此,对选定的N与NB值进行多次反复试验,以获得HPL_TFlops值最大且稳定的结果,如表II所示。
结果显示,当P设为4、Q设为7时,对于NB=64与128,矩阵块大小NB的HPL_TFlops值表现较差。对于矩阵大小N,在120000至152000范围内测得的HPL_TFlops值表现较好。
因此,为确定矩阵大小N与矩阵块大小NB的最优组合,绘制了所有NB值(除64与128外)下N与HPL_TFlops的关系图(见图1)。
图1结果表明:1. 当矩阵块大小NB为320时,测试数据较为稳定,且当矩阵大小N为140000与152000时达到最优的两组结果。这与先前研究[16]不一致,因为当BLAS为OpenBLAS时,NB取384为最佳;2. 对于不同的矩阵块大小NB,当矩阵大小N不同时,HPL_TFlops测试值表现出波动;3. 理论上,当可用内存占用率为80%时,测试内存应充足,即当N值小于144000时,随着N值的增大,HPL_TFlops测试值应随之上升,但当N为128000时,多组测试数据反而小于N值为124000的情况,甚至还有些小于N值为120000的情况。
表II. 不同矩阵大小N与矩阵块大小NB对单节点HPL测试的影响(TFlops)
| N | 120000 | 124000 | 128000 | 132000 | 136000 | 140000 | 144000 | 148000 | 152000 |
|---|---|---|---|---|---|---|---|---|---|
| NB=64 | 0.747599 | 0.779999 | 0.792601 | 0.750792 | 0.755158 | 0.782519 | 0.794617 | 0.784288 | 0.752131 |
| NB=128 | 1.34454 | 1.33238 | 1.36674 | 1.3439 | 1.36737 | 1.33561 | 1.35466 | 1.35275 | 1.33036 |
| NB=192 | 1.48685 | 1.51406 | 1.50337 | 1.51424 | 1.50781 | 1.51581 | 1.52301 | 1.514 | 1.49836 |
| NB=256 | 1.54421 | 1.55877 | 1.55175 | 1.55537 | 1.55483 | 1.55614 | 1.5578 | 1.56277 | 1.50623 |
| NB=320 | 1.57133 | 1.57974 | 1.53027 | 1.58846 | 1.58152 | 1.59162 | 1.57805 | 1.55792 | 1.5936 |
| NB=384 | 1.50328 | 1.5275 | 1.45105 | 1.50092 | 1.52215 | 1.55695 | 1.49388 | 1.55577 | 1.56911 |
| NB=448 | 1.52731 | 1.51796 | 1.45143 | 1.53644 | 1.53255 | 1.5283 | 1.49629 | 1.52089 | 1.51825 |
当NB为320且N为152000时,HPL_TFlops测试值最高,但由于此测试内存占用超过了可用内存的80%,测试环境不稳定,不予采纳。因此,单节点测试的NB与N值分别确定为320与140000,多节点测试中的NB值固定为320,N值取140000与可用内存的比例尽可能大。
B. 多节点测试
1. 二维处理器网格PxQ的影响
在多节点测试中,测试了2、4、8与16个节点,分别对应56、112、224、448个核心,并测试了HPCC的基准测试指标值(见表III)。根据单节点测试结果,参数N最大为140000,可用内存占用率为NB=320。二维处理器网格PxQ的值随进程数变化,同时需兼顾规则2与规则3,因此需测试PxQ的不同设置对HPL_TFlops测试值的影响。
在1个节点、4个节点与16个节点的测试中,二维处理器网格PxQ的PxQ值分别设为4x7、8x14与16x28,满足二维处理器网格PxQ的三项规则。然而,在2个节点与8个节点的测试中,二维处理器网格PxQ的规则2(P≤Q,P值尽可能接近Q)与规则3(P是2的幂次)存在矛盾,因此需要测试PxQ的设置对HPL_TFlops测试值的影响。
在测试2个节点时,PxQ设置为多组,即:4x7、4x14、2x28、1x56。N值取140000与可用内存198000的比例尽可能大,NB为320。测试参数与结果见表III。在测试8个节点时,PxQ设置为多组,即:14x16、2x112、8x28、7x32、4x56,N值与可用内存比例尽可能大,即396000,NB为320,测试参数与结果见表IV。
表III. 不同PxQ值对2节点HPL测试(TFlops)的影响
| P | 4 | 4 | 2 | 1 |
|---|---|---|---|---|
| Q | 7 | 14 | 28 | 56 |
| N | 198000 | 198000 | 198000 | 198000 |
| NB | 320 | 320 | 320 | 320 |
| HPL_TFlops | 2.98011 | 3.18416 | 2.98035 | 2.68892 |
表IV. 不同PxQ值对8节点HPL测试(TFlops)的影响
| P | 8 | 7 | 4 | 2 |
|---|---|---|---|---|
| Q | 28 | 32 | 56 | 112 |
| N | 396000 | 396000 | 396000 | 396000 |
| NB | 320 | 320 | 320 | 320 |
| HPL_TFlops | 11.3825 | 12.1922 | 11.3323 | 11.2685 |
| ## 2. 多节点测试 |
所有参数均根据其设置规则进行调整。表V列出了单节点与多节点HPCC测试中矩阵大小N、矩阵块大小NB以及二维处理器网格PxQ的具体测试参数。HPCC基准测试的结果见表VI。
表V. HPCC单节点与多节点测试的参数值
| 单节点 | 2个节点 | 4个节点 | 8个节点 | 16个节点 | |
|---|---|---|---|---|---|
| N | 140000 | 198000 | 280000 | 396000 | 560000 |
| NB | 320 | 320 | 320 | 320 | 320 |
| P | 4 | 4 | 8 | 8 | 16 |
| Q | 7 | 14 | 14 | 28 | 28 |
| 核心数 | 28核 | 56核 | 112核 | 224核 | 448核 |
3. 归一化分析
为便于在折线图中展示8个指标,需要对这8个指标进行归一化处理,即令8个指标的最优值设为1,其余值通过将测试值与最优值相除得到。图2展示了8个指标归一化后的折线图。
结果显示,
SUBS_STREAM
与
DGEMM_FLOPS
的测试结果不随节点数量的增加而显著变化,因为这两项主要测试的是持续内存带宽与单个处理器的浮点计算速度(通过矩阵乘法速度计算)。HPL、
MPIFFT
、
MPIRandomAccess
与
PTRANS_Bandwidth
这四项指标均随节点数量的增加而显著提升,表明该集群具有良好的可扩展性。
随着节点数量的增加,
RandomAccess
与
Bandwidth_Alltoall
反而有所下降。这是因为在增加节点与进程数量时,进程间的通信开销也随之增加,进而导致通信带宽下降。
4. 加速比和加速效率
加速比用于衡量n个节点的加速效果,计算方法是将n个节点的测试值除以单个节点的测试值。加速效率是n个节点的加速比与理想加速比(即n倍)的比值,计算方法是将n个节点的测试值除以n倍的单节点测试值。为考察多节点并行性能,计算了多节点HPL、
MPIFFT
、
MPIRandomAccess
与
PTRANS_Bandwidth
的加速比与加速效率。加速比与加速效率的变化趋势见表VII。
表VII. HPCC测试中加速比与效率随节点数量增加的变化
| 单节点 | 2个节点 | 4个节点 | 8个节点 | 16个节点 | |
|---|---|---|---|---|---|
| HPL | 1 | 2.00 | 3.89 | 7.66 | 14.83 |
| 100% | 100% | 97.25% | 95.75% | 92.69% | |
| MPIFFT | 1 | 1.99 | 3.45 | 5.84 | 11.28 |
| 100% | 99.5% | 86.25% | 73.00% | 70.50% | |
| MPIRandomAccess | 1 | 1.89 | 3.50 | 6.17 | 9.30 |
| 100% | 94.5% | 87.5% | 77.13% | 58.13% | |
| PTRANS_Bandwidth | 1 | 1.81 | 3.08 | 5.11 | 10.41 |
| 100% | 90.5% | 77.00% | 63.88% | 65.06% |
结果显示,HPL、
MPIFFT
、
MPIRandomAccess
与
PTRANS_Bandwidth
均表现出良好的加速比与效率。对于HPL,16个并行节点的性能达到了单个节点性能的14.83倍,相当于16个节点理想性能的92.69%,表明该集群的并行效率与可扩展性表现优异。
MPIFFT
结果表明,随着节点数量的增加,一维FFT并行计算的速度也随之提升,但其并行效率不如HPL。
MPIRandomAccess
表明,内存访问性能随节点数量增加而提高,但受节点间通信的影响较大。
PTRANS_Bandwidth
表明,成对通信与大规模数据传输的速度随节点数量增加而提高,但也受到节点间通信的影响。
V. 结论
性能评估在高性能计算领域变得越来越重要。如何客观、准确地评估其性能是一个亟待深入探索的问题。本文以甘肃计算中心的一套高性能计算集群为测试对象,研究了关键参数矩阵大小N、矩阵块大小NB与二维处理器网格PxQ对测试的影响,这对高性能计算集群的HPCC基准测试具有一般的参考价值与指导作用。
在单节点测试中,确定矩阵大小N为140000,块大小NB为320。在多节点测试中,设置二维处理器网格PxQ时应兼顾P≤Q且P的值尽可能接近Q,并使P的值为2的幂次。此外,当Q/P的比值不大(小于10)时,优先考虑P为2的幂次;在此基础上,仍需保证P≤Q且P的值尽可能接近Q。当Q/P的比值较大(大于10)时,则应优先保证P≤Q且P的值尽可能接近Q,此时不必刻意追求P为2的幂次。
结果显示,单个处理器的持续内存带宽
SUBS_STREAM
与浮点计算速度
DGEMM_FLOPS
不随节点数量变化。HPL、
MPIFFT
、
MPIRandomAccess
与
PTRANS_Bandwidth
均表现出良好的加速比与效率,其中HPL表现最优。测试表明,该集群的并行效率表现优异,也具有良好的可扩展性。然而,随着节点数量与进程数量的增加,进程间的通信开销也随之增加,其加速比趋于饱和,
RandomAccess
与
Bandwidth_Alltoall
也呈现出下降趋势。
35

被折叠的 条评论
为什么被折叠?



