开发者社区> 问答> 正文

如何使用HPC BenchMark?

弹性高性能计算E-HPC如何使用HPC BenchMark?

展开
收起
小天使爱美 2020-03-23 17:56:09 1013 0
1 条回答
写回答
取消 提交回答
  • 简介 HPL(the High-Performance Linpack Benchmark)是国际上最流行的用于测试高性能计算机系统浮点性能的benchmark。通过对高性能计算机采用高斯消元法求解一元N次稠密线性代数方程组的测试,评价高性能计算机的浮点性能。浮点计算峰值是指计算机每秒钟能完成的浮点计算最大次数。包括理论浮点峰值和实测浮点峰值。理论浮点峰值是该计算机理论上能达到的每秒钟能完成浮点计算最大次数,它主要是由CPU的主频决定的。

    理论浮点峰值 = CPU主频 × CPU每个时钟周期执行浮点运算的次数 × 系统中CPU数 准备工作 若您尚未拥有E-HPC集群,请先创建E-HPC集群

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

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

    HPLinpack benchmark input file Innovative Computing Laboratory, University of Tennessee HPL.out output file name (if any) 6 device out (6=stdout,7=stderr,file) 1 # of problems sizes (N) 143360 256000 1000 Ns
    1 # of NBs 384 192 256 NBs 1 PMAP process mapping (0=Row-,1=Column-major) 1 # of process grids (P x Q) 1 2 Ps
    1 2 Qs
    16.0 threshold 1 # of panel fact 2 1 0 PFACTs (0=left, 1=Crout, 2=Right) 1 # of recursive stopping criterium 2 NBMINs (>= 1) 1 # of panels in recursion 2 NDIVs 1 # of recursive panel fact. 1 0 2 RFACTs (0=left, 1=Crout, 2=Right) 1 # of broadcast 0 BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM) 1 # of lookahead depth 0 DEPTHs (>=0) 0 SWAP (0=bin-exch,1=long,2=mix) 1 swapping threshold 1 L1 in (0=transposed,1=no-transposed) form 1 U in (0=transposed,1=no-transposed) form 0 Equilibration (0=no,1=yes) 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如下。

    #!/bin/sh #PBS -j oe export MODULEPATH=/opt/ehpcmodulefiles/ module load linpack/2018 module load intel-mpi/2018 echo "run at the beginning" mpirun -n 1 -host /opt/linpack/2018/xhpl_intel64_static > hpl-ouput #测试单节点的浮点性能 mpirun -n -ppn 1 -host ,..., /opt/linpack/2018/xhpl_intel64_static > hpl-ouput #测试多节点的浮点性能 E-HPC控制台提交HPL测试作业 确定下图左侧作业基本参数后,点击右上角“确认”提交作业。作业个性化配置、作业导入、作业导出以及作业状态查看,请参见作业管理。

    作业配置

    E-HPC控制台查询作业状态 点击作业列表中HPL作业右侧的 “详情” 按钮,查看作业详细信息。

    作业详细信息

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

    执行命令

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

    查看结果

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

    T/V N NB P Q Time Gflops

    WC00C2R2 143360 384 1 1 XXXX XXXXXXX

    简介 IMB (Intel MPI Benchmarks) 用于评估HPC集群在不同消息粒度下节点间点对点、全局通信的效率。

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

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

    IMB测试方法说明 $ /opt/intel-mpi-benchmarks/2019/IMB-MPI1 -h #查看IMB支持的通信模式及参数说明 $ cd /home/ /<work_dir> #非root用户下执行 $ /opt/intel/impi/2018.3.222/bin64/mpirun -genv I_MPI_DEBUG 5 -np 2 -ppn 1 -host , /opt/intel-mpi-benchmarks/2019/IMB-MPI1 pingpong #测试两节点间pingpong通信模式效率,获取通信延迟和带宽 $ /opt/intel/impi/2018.3.222/bin64/mpirun -genv I_MPI_DEBUG 5 -np <N*2> -ppn 2 -host ,..., /opt/intel-mpi-benchmarks/2019/IMB-MPI1 -npmin 2 -msglog 19:21 allreduce #测试N节点间allreduce通信模式效率,每个节点开启两个进程,获取不同消息粒度下的通信时间 $ /opt/intel/impi/2018.3.222/bin64/mpirun -genv I_MPI_DEBUG 5 -np -ppn 1 -host ,..., /opt/intel-mpi-benchmarks/2019/IMB-MPI1 -npmin 1 -msglog 15:17 alltoall #测试N节点间alltoall通信模式效率,每个节点开启一个进程,获取不同消息粒度下的通信时间 ############关键参数说明############# -genv I_MPI_DEBUG 打印mpi debug信息 -np 指定mpi总进程数 -ppn 指定每个节点的进程数 -host 指定任务节点列表 -npmin 指定至少运行的进程数 -msglog 指定消息片粒度范围 运行IMB测试 E-HPC控制台创建IMB.pbs作业脚本 在作业管理界面中,依次选择“创建作业”->“新建文件”->“使用文件模板”->“pbs demo”,对pbs demo脚本进行修改,得到IMB作业脚本IMB.pbs如下。

    #!/bin/sh #PBS -j oe #PBS -l select=2:ncpus= :mpiprocs=1 #N为节点CPU核数,实际测试中根据节点配置进行设置 export MODULEPATH=/opt/ehpcmodulefiles/ module load intel-mpi/2018 module load intel-mpi-benchmarks/2019 echo "run at the beginning" /opt/intel/impi/2018.3.222/bin64/mpirun -genv I_MPI_DEBUG 5 -np 2 -ppn 1 -host compute0,compute1 /opt/intel-mpi-benchmarks/2019/IMB-MPI1 pingpong > IMB-pingpong E-HPC控制台提交IMB测试作业 确定下图左侧作业基本参数后,点击右上角“确认”提交作业。作业个性化配置、作业导入、作业导出以及作业状态查看,请参见作业管理。

    作业提交

    E-HPC控制台查看结果文件 从E-HPC管理控制台,点选集群右侧“更多”选项,选择“执行命令”,进入集群命令运行界面。点击“批量执行”,选择集群登录/管控节点执行命令,查看IMB作业结果文件。

    作业结果

    简介 STREAM测试是内存测试中业界公认的内存带宽性能测试基准工具,是衡量服务器内存性能指标的通用工具。STREAM具有良好的空间局部性,是对 TLB 友好、Cache友好的一款测试,支持Copy、Scale、Add、Triad四种操作。

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

    运行以下示例需要在创建集群时或者软件管理界面上选择安装STREAM软件包 勾选stream

    运行STREAM测试 E-HPC控制台编译STREAM 为了避免数据Cache重用对测试结果准确度产生较大影响,需确保STREAM开辟的数组大小远大于L3 Cache的容量且小于内存的容量。因此在实际测试中要根据测试节点配置对STREAM进行重新编译。由E-HPC管理控制台进入集群命令运行界面,登录节点执行如下操作。

    编译stream

    $ cd /opt/stream/2018/; gcc stream.c -O3 -fopenmp -DSTREAM_ARRAY_SIZE=102410241024 -DNTIMES=20 -mcmodel=medium -o stream.1g.20 #-DSTREAM_ARRAY_SIZE用于指定STREAM一次搬运的数据量,-DTIMES用于指定迭代次数 E-HPC控制台创建STREAM.pbs作业脚本 在作业管理界面中,依次选择“创建作业”->“新建文件”->“使用文件模板”->“pbs demo”,对pbs demo脚本进行修改,得到STREAM作业脚本STREAM.pbs如下。

    #!/bin/sh #PBS -j oe #PBS -l select=1:ncpus= #N为节点CPU核数,实际测试中根据节点配置进行设置 export MODULEPATH=/opt/ehpcmodulefiles/ module load stream/2018 echo "run at the beginning" OMP_NUM_THREADS=1 /opt/stream/stream.1g.20 > stream-1-thread.log OMP_NUM_THREADS=2 /opt/stream/stream.1g.20 > stream-2-thread.log OMP_NUM_THREADS=4 /opt/stream/stream.1g.20 > stream-4-thread.log OMP_NUM_THREADS=8 /opt/stream/stream.1g.20 > stream-8-thread.log ... OMP_NUM_THREADS= /opt/stream/stream.1g.20 > stream- -thread.log E-HPC控制台提交STREAM测试作业 确定下图左侧作业基本参数后,点击右上角“确认”提交作业。作业个性化配置、作业导入、作业导出以及作业状态查看,请参见作业管理。

    提交作业

    E-HPC控制台查看结果文件 从E-HPC管理控制台,点选集群右侧“更多”选项,选择“执行命令”,进入集群命令运行界面。点击“批量执行”,选择集群登录/管控节点执行命令,查看STREAM作业结果文件。

    stream结果 简介 STREAM测试是内存测试中业界公认的内存带宽性能测试基准工具,是衡量服务器内存性能指标的通用工具。STREAM具有良好的空间局部性,是对 TLB 友好、Cache友好的一款测试,支持Copy、Scale、Add、Triad四种操作。

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

    运行以下示例需要在创建集群时或者软件管理界面上选择安装STREAM软件包 勾选stream

    运行STREAM测试 E-HPC控制台编译STREAM 为了避免数据Cache重用对测试结果准确度产生较大影响,需确保STREAM开辟的数组大小远大于L3 Cache的容量且小于内存的容量。因此在实际测试中要根据测试节点配置对STREAM进行重新编译。由E-HPC管理控制台进入集群命令运行界面,登录节点执行如下操作。

    编译stream

    $ cd /opt/stream/2018/; gcc stream.c -O3 -fopenmp -DSTREAM_ARRAY_SIZE=102410241024 -DNTIMES=20 -mcmodel=medium -o stream.1g.20 #-DSTREAM_ARRAY_SIZE用于指定STREAM一次搬运的数据量,-DTIMES用于指定迭代次数 E-HPC控制台创建STREAM.pbs作业脚本 在作业管理界面中,依次选择“创建作业”->“新建文件”->“使用文件模板”->“pbs demo”,对pbs demo脚本进行修改,得到STREAM作业脚本STREAM.pbs如下。

    #!/bin/sh #PBS -j oe #PBS -l select=1:ncpus= #N为节点CPU核数,实际测试中根据节点配置进行设置 export MODULEPATH=/opt/ehpcmodulefiles/ module load stream/2018 echo "run at the beginning" OMP_NUM_THREADS=1 /opt/stream/stream.1g.20 > stream-1-thread.log OMP_NUM_THREADS=2 /opt/stream/stream.1g.20 > stream-2-thread.log OMP_NUM_THREADS=4 /opt/stream/stream.1g.20 > stream-4-thread.log OMP_NUM_THREADS=8 /opt/stream/stream.1g.20 > stream-8-thread.log ... OMP_NUM_THREADS= /opt/stream/stream.1g.20 > stream- -thread.log E-HPC控制台提交STREAM测试作业 确定下图左侧作业基本参数后,点击右上角“确认”提交作业。作业个性化配置、作业导入、作业导出以及作业状态查看,请参见作业管理。

    提交作业

    E-HPC控制台查看结果文件 从E-HPC管理控制台,点选集群右侧“更多”选项,选择“执行命令”,进入集群命令运行界面。点击“批量执行”,选择集群登录/管控节点执行命令,查看STREAM作业结果文件。

    stream结果

    2020-03-23 18:05:57
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PPython高性能计算库--Numba 立即下载
阿里云 Kubernetes+Kubeflow – 加速深度学习实验的利器 立即下载
端到端GPU性能优化 在深度学习场景下的应用实践 立即下载