全部产品
云市场

HPL

更新时间:2019-03-08 13:04:57

简介

HPL(the High-Performance Linpack Benchmark)是国际上最流行的用于测试高性能计算机系统浮点性能的benchmark。通过对高性能计算机采用高斯消元法求解一元N次稠密线性代数方程组的测试,评价高性能计算机的浮点性能。浮点计算峰值是指计算机每秒钟能完成的浮点计算最大次数。包括理论浮点峰值和实测浮点峰值。理论浮点峰值是该计算机理论上能达到的每秒钟能完成浮点计算最大次数,它主要是由CPU的主频决定的。

  1. 理论浮点峰值 CPU主频 × CPU每个时钟周期执行浮点运算的次数 × 系统中CPU

准备工作

若您尚未拥有E-HPC集群,请先创建E-HPC集群

运行以下示例需要在创建集群时或者软件管理界面上选择安装linpack软件包和intel-mpi通信库。勾选linpack勾选intel mpi

输入参数说明

输入文件HPL.dat包含了HPL的运行参数,下图是在单台scch5实例上运行HPL的推荐配置。

  1. HPLinpack benchmark input file
  2. Innovative Computing Laboratory, University of Tennessee
  3. HPL.out output file name (if any)
  4. 6 device out (6=stdout,7=stderr,file)
  5. 1 # of problems sizes (N)
  6. 143360 256000 1000 Ns
  7. 1 # of NBs
  8. 384 192 256 NBs
  9. 1 PMAP process mapping (0=Row-,1=Column-major)
  10. 1 # of process grids (P x Q)
  11. 1 2 Ps
  12. 1 2 Qs
  13. 16.0 threshold
  14. 1 # of panel fact
  15. 2 1 0 PFACTs (0=left, 1=Crout, 2=Right)
  16. 1 # of recursive stopping criterium
  17. 2 NBMINs (>= 1)
  18. 1 # of panels in recursion
  19. 2 NDIVs
  20. 1 # of recursive panel fact.
  21. 1 0 2 RFACTs (0=left, 1=Crout, 2=Right)
  22. 1 # of broadcast
  23. 0 BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)
  24. 1 # of lookahead depth
  25. 0 DEPTHs (>=0)
  26. 0 SWAP (0=bin-exch,1=long,2=mix)
  27. 1 swapping threshold
  28. 1 L1 in (0=transposed,1=no-transposed) form
  29. 1 U in (0=transposed,1=no-transposed) form
  30. 0 Equilibration (0=no,1=yes)
  31. 8 memory alignment in double (> 0)

测试过程中需要根据节点硬件配置而做出调整的运行参数主要有:

  • 第5、6行:代表求解的矩阵数量与规模。矩阵规模N越大,有效计算所占的比例也越大,系统浮点处理性能也就越高;但与此同时,矩阵规模N的增加会导致内存消耗量的增加,一旦系统实际内存空间不足,使用缓存、性能会大幅度降低。矩阵占用系统总内存的80%左右为最佳,即N x N x 8 = 系统总内存 x 80% (其中总内存换算以字节为单位)。
  • 第7、8行:代表求解矩阵过程中矩阵分块的大小。分块大小对性能有很大的影响,NB的选择和软硬件许多因素密切相关。NB值的选择主要是通过实际测试得出最优值,但还是有一些规律可循:NB不能太大或太小,一般在384以下;NB × 8一定是Cache line的倍数等。例如,L2 cache为1024K, NB就设置为192。另外,NB大小的选择还跟通信方式、矩阵规模、网络、处理器速度等有关系。一般通过单节点或单CPU测试可以得到几个较好的NB值,但当系统规模增加、问题规模变大,有些NB取值所得性能会下降。所以最好在小规模测试时选择3个左右性能不错的NB,再通过大规模测试检验这些选择。
  • 第10~12行:代表二维处理器网格(P × Q)。P × Q = 系统CPU数 = 进程数。一般来说一个进程对于一个CPU可以得到最佳性能。对于Intel Xeon来说,关闭超线程可以提高HPL性能。P≤Q;一般来说,P的值尽量取得小一点,因为列向通信量(通信次数和通信数据量)要远大于横向通信。P = 2n,即P最好选择2的幂。HPL中,L分解的列向通信采用二元交换法(Binary Exchange),当列向处理器个数P为2的幂时,性能最优。例如,当系统进程数为4的时候,P × Q选择为1 × 4的效果要比选择2 × 2好一些。 在集群测试中,P × Q = 系统CPU总核数。

运行HPL测试

  • E-HPC控制台创建HPL.dat输入文件

返回E-HPC管理控制台,点选左侧栏的“作业”标签,进入作业管理界面。依次选择“创建作业”->“新建文件”->“使用文件模板”->“HPL.dat”,根据节点硬件配置调整HPL输入参数,得到HPL输入文件如下。

HPL.dat

  • E-HPC控制台创建HPL.pbs作业脚本

作业管理界面中,依次选择“创建作业”->“新建文件”->“使用文件模板”->“pbs demo”,对pbs demo脚本进行修改,得到HPL作业脚本HPL.pbs如下。

  1. #!/bin/sh
  2. #PBS -j oe
  3. export MODULEPATH=/opt/ehpcmodulefiles/
  4. module load linpack/2018
  5. module load intel-mpi/2018
  6. echo "run at the beginning"
  7. mpirun -n 1 -host <node> /opt/linpack/2018/xhpl_intel64_static > hpl-ouput #测试单节点的浮点性能
  8. mpirun -n <N> -ppn 1 -host <node0>,...,<nodeN> /opt/linpack/2018/xhpl_intel64_static > hpl-ouput #测试多节点的浮点性能
  • E-HPC控制台提交HPL测试作业

确定下图左侧作业基本参数后,点击右上角“确认”提交作业。作业个性化配置、作业导入、作业导出以及作业状态查看,请参见作业管理

作业配置

  • E-HPC控制台查询作业状态

点击作业列表中HPL作业右侧的 “详情” 按钮,查看作业详细信息。

作业详细信息

  • E-HPC控制台查看结果文件

返回E-HPC管理控制台,点选集群右侧“更多”选项,选择“执行命令”,进入集群命令运行界面。

执行命令

集群命令运行界面点击“批量执行”,选择集群登录/管控节点执行命令,查看HPL作业结果文件。

查看结果

从结果文件中获取测得的HPL浮点运算效率数据,格式如下。

  1. T/V N NB P Q Time Gflops
  2. --------------------------------------------------------------------------------
  3. WC00C2R2 143360 384 1 1 XXXX XXXXXXX