LinPack测试工具使用说明——初步理解

一、LinPack简介

1、概念:LinPack全称为线性系统软件包。用于测试高性能计算机系统浮点性能的benchmark

2、完成的任务:通过利用高性能计算机,用高斯消元法求解N元一次稠密性线性方程组的测试(如Ax+By=C)

测试分为三类:

LinPack100:计算100阶

LinPack1000:计算1000阶

HPL:高度并行计算基准测试,可以通过调整数组大小N等各参数进行优化

二、mpi接口

 mpi简介

全称为消息传递接口(Message passing interface),
是一个跨语言的通讯协议,也是高性能计算领域开发并行应用的标准API。

超算的高性能使用方式即是通过编程,使得作业具有多节点协作的能力,
而多个节点之间的协作是通过MPI来实现的。通过调用MPI并行库实现
的方法来实现并行化,只需要安装MPI库,那么就可以用原来的编译器
来进行编译运行。高性能、大规模性和可移植性。有多种实现版本,
如 MPICH,OpenMPI以及CHIMP等
​

三、linpack配置文件及其参数意义

1、有以下配置文件

        HPL.dat—— linpack测试中各个参数的配置

        run.sh—— 运行文件

        sellargepage.sh——内存大页设置

        linkpack.log—— 结果记录文档

2、HPL.dat 参数分析

HPL.out     output file name (if any)

6               device out (6=stdout,7=stderr,file)

"device out"为"6"时,测试结果输出至标准输出(stdout);

"device out"为"7"时,测试结果输出至标准错误输出(stderr);

"device out"为其它值时,测试结果输出至第三行所指定的文件中。

1            # of problems sizes (N)   #矩阵的数量,如1即一个矩阵。

105728 91392 73248 51744 44800        Ns

问题规模大小Ns值,Ns×Ns×8=系统总内存(Byte)×80%计算出的Ns一般为最大规模。

1            # of NBs

测试块的个数。

112 120 128  NBs

系数矩阵被分成NBs*NBs的循环块被分配到各个进程当中去处理,NBs大小作为计算粒度,  在很大程度上影响了计算性能的优劣;NBs最佳的取值在[32 ,256],取值大小由计算规模及平台来决定;NBs*8=Cache line的倍数。

0            PMAP process mapping (0=Row-,1=Column-major)

处理器阵列形式。0为按行,1为按列;按行的排列方式适用于节点数较少、每个节点内CPU数较多的大规模系统;按列的排列方式适用于节点数较多、每个节点内CPU数较少的系统;在机群系统下,按列排列方式较好。

1               # of process grids (P x Q)

2 2 1 4      Ps

8 2 4 1      Qs

Ps × Qs为二维处理器网格,Ps向通信量有关,Qs向通信量有关;Ps*Qs=系统CPU数=进程数;Qs/4≤P≤Qs时,性能较优。因为列向通信量(通信次数和通信数据量)要远大于横向通信;  Ps为2的幂。

16.0         threshold

说明测试的精度。用于检测线性方程组求解结果是否正确;若误差在这个值以内就是正确,否则错误。所以没有必要修改此值。

1            # of panel fact

1 1 2        PFACTs (0=left, 1=Crout, 2=Right)

1            # of recursive stopping criterium

4 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)

指明L分解的方式。在消元过程中,zHPL采用每次完成NB列的消元,然后更新后面的矩阵。  NB的消元就是L的分解;每次L的分解只在一列处理器中完成。对每一个小矩阵作消元时,都有3种算法:L、R、C,分别代表Left、Right和Crout;NDIVs选择2比较理想,NBMINs 4或8都不错;RFACTs和PFACTs,对性能的影响不大。

1            # of broadcast

0            BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)

HPL中提供了6种广播方式。前4种适合于快速网络;后两种采用将数据切割后传送的方式,主要适合于速度较慢的网络。机群系统一般采用千兆以太网甚至光纤等高速网络,所以一般不采用后两种方式。一般来说,在小规模系统中,选择0或1;对于大规模系统,选择3。

1            # of lookahead depth

1            DEPTHs (>=0)

说明横向通信的通信深度。这依赖于机器的配置和问题规模的大小。

0            SWAP (0=bin-exch,1=long,2=mix)

256        swapping threshold

说明U的广播算法。U的广播为列向广播,HPL提供了3种U的广播算法:SWAP="0",采用二元交换(Binary Exchange)法;SWAP="1",采用Long法;SWAP="2",采用二则混合法。

1            L1 in (0=transposed,1=no-transposed) form

1            U  in (0=transposed,1=no-transposed) form

分别说明L和U的数据存放格式。若选择"transposed",则采用按列存放,否则按行存放。

0            Equilibration (0=no,1=yes)……主要在回代中使用,一般使用其默认值

8            memory alignment in double (> 0)

……主要为内存地址对齐而设置,用于在内存分配中对齐地址。出于安全考虑,可以选择8

 编译运行后若为 -n 8:8

说明需要修改核心数,使其与HPL.dat中的Ps*Qs的值相同

3、内存大页设置

运行步骤:

        vim HPL.dat,修改参数值

        vim run.sh,修改核心数

        ./run.sh,运行

        运行结束后,输入cat linpack.log查看结果然后计算效率

4、 linkpack.log—— 结果记录文档

        结果分析

(1)linpack结果效率计算

理论峰值=主频率*核心数*每周期浮点运算次数

效率=实际峰值/理论峰值*100%

举例计算上图效率:

理论峰值=2.4GHz*2(核心数)*16(每周期浮点运算次数)=76.8GFlops

效率=51.80/76.8*100%=67.4%

(2)占用内存空间

因为设置了内存大页,所以通过输入free -h命令查看的内存大小不会发生变化。

所以通过top命令查看

占用内存空间=单个进程使用的虚拟内存量*进程数

eg: 11.8G * 8 = 94.4G

【并行计算】Linpack的安装与调试(一):安装编译器和并行环境 | 百里飞洋

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值