金能智 文洮 杨博超 安文婷
摘 要:高性能计算已成为国家科技创新核心竞争力的重要方面,其运算能力是重要的评价指标。HPL(High Performance Linpack)是行业内使用最广泛的高性能计算机浮点计算能力的基准测试程序。如何做好Linpack基准测试对于高性能计算有着重要的意义,本文以甘肃省计算中心一套高性能计算集群为测试对象,从HPL原理、HPL测试及结果优化来探究Linpack基准测试方法。
关键词:高性能计算;Linpack;High Performance Linpack;基准测试
中图分类号:TP338;TP316.81 文献标识码:A 文章编号:2096-4706(2019)14-0060-03
Research on Benchmarking Test of Linux High Performance Computing Cluster
Based on HPL
JIN Nengzhi,WEN Tao,YANG Bochao,AN Wenting
(Gansu Key Laboratory of Cloud Computing,Gansu Computing Center,Lanzhou 730030,China)
Abstract:High performance computing has become an important aspect of the core competitiveness of national science and technology innovation,and its computing power is an important evaluation index.HPL(High Performance Linpack)is the most widely used benchmark test program for floating-point computing capability of high performance computers in the industry. How to do Linpack benchmark well is of great significance for high performance computing. This paper takes a high performance computing cluster of Gansu Computing Center as the test object,and explores the Linpack benchmark test method from the principle of HPL,HPL test and result optimization.
Keywords:high performance computing;Linpack;High Performance Linpack;benchmark test
0 引 言
高性能计算(High performance computing,HPC)是大规模科学计算和工程计算的必备基础设施,能够运用在信息服务、工业仿真、科学研究、生物信息、基因测序、石油勘探等众多领域,已成为国家科技创新核心竞争力的重要方面,是推动国家科技创新发展的强力引擎,是各国都投入巨资争夺的科学技术制高点之一[1-3]。高性能计算机的运算能力是其最重要的评价指标,而Linpack基准测试是业内公认的高性能计算运算能力基准测试方法[4-6]。如何做好Linpack基准测试对于高性能计算有着重要的意义,本文就以甘肃省计算中心高性能计算集群为测试对象,以高性能计算集群普遍常用的Linpack基准测试软件HPL(High Performance Linpack)为例,探讨高性能计算集群浮点计算能力的基准测试。
1 Linpack简介
浮点计算峰值是衡量计算机计算能力的一个重要指标,它是指计算机每秒钟能完成的浮点计算最大次数[7,8]。它包括理论浮点峰值和实测浮点峰值。理论浮点峰值主要由CPU的核数和主频决定[7]。实测浮点峰值一般可用浮点计算峰值基准测试软件测得。Linpack是行业内著名的计算机浮点计算峰值的基准测试软件[6],结果按每秒浮点运算次数(flops)表示[7-9]。Linpack测试包括三类:Linpack100、Linpack1000和HPL[9,10]。其中,Linpack100和Linpack 1000分别求解规模为100阶和1000阶的线性代数方程组。由于计算机行业的快速发展,Linpack100和Linpack1000已经不适合现代高性能计算集群的测试。此时,A.Petitett、R.C.Whaley、J.Dongarra等人开发出了高度并行计算基准测试程序HPL[9-12]。
在运行HPL程序时,除基本算法不可改变外,可以采用其它任何优化方法执行该测试程序,以获取最佳的性能测试数据[9-12]。HPL测试已经成为国际TOP500和国内TOP500的依据,成为高性能计算机性能评价的标准[6]。
2 HPL原理
HPL的基本算法是以MPI的列主元分块LU分解的方法为基础,求解大规模稠密线性方程组,因此,它需要MPI通信库环境运行正常,还需要基础线性代数子程序库(Basic Linear Algebra Subprograms,BLAS)或矢量信号图像处理库(Vector Signal Image Processing Library,VSIPL)的线性代数子程序包的支撑[9]。
HPL软件的原理[9-12]为求一个N维的线性方程组Ax=b的解,通过选局部列主元的方法对N×(N+1)的[A b]系数矩阵进行LU分解,分解形式如下:[A b]=[[L,U]y]
由于下三角矩阵L因子所作的变换在分解的过程中也逐步应用到b上,所以,最后方程组的解x就可以转化为求解上三角矩阵U作为系数矩阵的线性方程组Ux=y而得到。
为了保证良好的负载平衡和算法的可扩展性,数据是以循环块的方式分布到一个P×Q的由所有进程组成的2维网格中。N×(N+1)的系数矩阵首先在逻辑上被分成一个个NB×NB大小的数据块,然后循环的分配到P×Q进程网格上去处理。这个分配的工作在矩阵的行、列两个方向同时进行。N为最高GFLOPS值的矩阵规模,NB为求解矩阵的分块大小,P为处理器网格中水平方向处理器个数、Q为处理器网格中垂直方向处理器个数。
N,NB,P,Q都是可以根据集群的具体配置和用户需要而随时修改的,也是HPL测试中十分关键和重要的几个参数。
3 HPL测试的软硬件环境
3.1 硬件
本次测试以甘肃省计算中心的一套集群为例,有管理节点1台,计算密集型刀片40台,存储服务器1台。具体硬件参数配置如表1所示。
3.2 软件环境
集群全部使用统一的操作系统CentOS Linux release 7.4.1708,安装了Intel编译器和MKL数学库,并行环境采用Intelmpi,Intel MKL提供一个优化版本的Intel Optimized LINPACK Benchmark,它是根据HPL(http://www.netlib.org/benchmark/hpl/)优化后的程序,通过运行这个程序,可以方便进行CPU的基准性能测试。具体参数如表2所示。
表2 测试集群软件环境
4 测试过程及结果
4.1 单机测试
4.1.1 测试过程
(1)进行测试之前,需要确保整个集群环境正常。所有节点正常,且无负载,调试好Infiniband网络,确保风扇正常、CPU温度无异常,确保测试相关的环境变量已导入,无异常进程和服务。
(2)随机选取任意一台计算节点,通过不断调整和优化相关测试参数,测得单机Linpack效率较高时的运行参数。
(3)使用在第2步中获取的运行参数,同时对各节点进行单机Linpack测试。
(4)创建测试脚本,修改权限:
(5)利用clusconf并行命令方式在测试的各个节点上运行Linpack测试:
4.1.2 测试结果
单机Linpack测试结果如表3所示。当矩阵规模N为140000,求解矩阵的分块大小NB为384,水平方向处理器个数P为4,垂直方向处理器个数Q为7时,实测单机Linpack效率最高为73.83%,最低为67.74%,40个计算节点的单机效率平均值是71.04%。各节点运行效率正常,且表现稳定。
4.2 整机测试
4.2.1 测试过程
测试过程跟单机测试相同。首先保证整个集群环境正常,继而通过不断调整和优化相关测试参数,创建脚本测试。由于前期单机测试中水平方向处理器个数P为4,垂直方向处理器个数Q为7时,单机效率平均值为71.04%,根据以往经验,效率还有提升的空间,因此整机测试修改响应参数,经过几次测试,整机测试参数修改为:矩阵规模N为896000,求解矩阵的分块大小NB为384,水平方向处理器个数P为5,垂直方向处理器个数Q为8。测试脚本为:
4.2.2 测试结果
整机测试结果如表4所示,当矩阵规模N为896000,求解矩阵的分块大小NB为384,水平方向处理器个数P为5,垂直方向处理器个数Q为8时,整机Linpack平均效率为74.33%,比单机测试有所提高,计算性能表现稳定良好,测试期间,集群整体运行状态正常稳定,电源、风扇及功耗等硬件监控情况稳定无异常。
5 结 论
高性能计算集群已成为支撑基础科学研究、工业仿真设计、气象模拟等领域的重要手段,其计算能力关乎研究的进度和精度。本文以甘肃省计算中心一套高性能计算集群为测试对象,采用Intel MKL提供的高性能计算基准测试程序Intel Optimized LINPACK Benchmark进行单节点和整机Linpack浮点计算能力测试,得到了较好的测试参数和结果,单机Linpack测试效率平均值是71.04%。参考单机测试参数,然后进行优化整机测试参数,整机Linpack平均效率为74.33%,比单机效率有所提高。单机和整机Linpack测试说明集群系统的构建是成功的,多节点间的协同并行处理非常良好。这对其他高性能计算集群的测试有一定的参考价值和指导作用。
参考文献:
[1] 陈志明.科学计算:科技创新的第三种方法 [J].中国科学院院刊,2012,27(2):161-166.
[2] 臧大伟,曹政,孙凝晖.高性能计算的发展 [J].科技导报,2016,34(14):22-28.
[3] 迟学斌.国家高性能计算环境发展报告(2002-2017年) [M].北京:科学出版社,2018.
[4] 罗水华,杨广文,张林波,等.并行集群系统的Linpack性能测试分析 [J].数值计算与计算机应用,2003,24(4):285-292.
[5] 王勇超,张璟,王新卫,等.基于MPICH2的高性能计算集群系统研究 [J].计算机技术与发展,2008,18(9):101-104.
[6] 张云泉.中国高性能计算机发展现状分析与展望 [J].民主与科学,2017(4):26-27.
[7] 王俊,文延华,漆锋滨.计算机浮点功能测试方法 [J].计算机应用与软件,2006(6):68-70.
[8] 王晓英,都志辉.基于HPL测试的集群系统性能分析与优化 [J].计算机科学,2005(11):231-234.
[9] Netlib Repository at UTK and ORNL.Benchmark Programs and Reports:TOP500 Supercomputer Sites [EB/OL].http://www.netlib.org/benchmark/,2019-06-18.
[10] 都志辉,吴博,刘鹏,等.LINPACK与机群系统的LIN-PACK测试 [J].计算机科学,2002(5):8-10+59.
[11] Davies T,Karlsson C,Liu H,et al. High performance linpack benchmark:a fault tolerant implementation without checkpointing [C]//International Conference on Supercomputing. DBLP,2011.
[12] Barrett R F,Chan T H F,DAzevedo E F,et al. Complex version of high performance computing LINPACK benchmark (HPL) [J]. Concurrency and Computation:Practice and Experience,2010,22(5):573-578.
通讯作者:金能智(1983.01-),男,汉族,甘肃永靖人,硕
士,副研究员,研究方向:高性能计算、化学信息学。