https://download.csdn.net/download/weixin_53030387/89070049?spm=1001.2014.3001.5501
一、Linpack测试说明
Linpack是线性系统软件包(Linear system package) 的缩写,现在在国际上已经成为最流行的用于测试高性能计算机系统浮点性能的benchmark。通过利用高性能计算机,用高斯消元法求解N元一次稠密线性代数方程组的测试,评价高性能计算机的浮点性能。衡量计算机性能的一个重要指标就是计算峰值,例如浮点计算峰值,它是指计算机每秒钟能完成的浮点计算最大次数。包括理论浮点峰值和实测浮点峰值:理论浮点峰值是该计算机理论上能达到的每秒钟能完成浮点计算最大次数,它主要是由CPU的主频决定的,理论浮点峰值=CPU主频×CPU每个时钟周期执行浮点运算的次数×系统中CPU核心数目实测浮点峰值是Linpack测试值,也就是说在这台机器上运行Linpack测试程序,通过各种调优方法得到的最优的测试结果。实际上在实际程序运行过程中,几乎不可能达到实测浮点峰值,更不用说达到理论浮点峰值了。这两个值只是作为衡量机器性能的一个指标,用来表明机器处理能力的一个标尺和潜能的度量。
二、安装前准备
安装前需要先下载:gcc、gcc-c++、gcc-gfortran、cmake、python3
# yum install gcc
# yum install gcc-c++
# yum install gcc-gfortran
# yum install cmake
# yum install python3
# yum install zlib*
三、MPICH(并行计算)安装
常用的MPI并行环境有:MPICH、LAM-MPI、openmpi等,这里我们使用MPICH。
可从http://www.mcs.anl.gov/research/projects/mpich2/downloads/index.php?s=downloads下载源码,下载完后解压源码安装。
在root下新建linpack目录,将mpich-4.1.tar.gz安装包放入/root/linpack目录
# mkdir /root/linpack
# tar xzvf mpich-4.1.tar.gz
创建安装目录
# mkdir -p /install/mpich
# cd mpich-4.1
配置mpich的安装参数
# ./configure --prefix=/install/mpich
编译安装
# make && make install
将mpich的运行环境加入到系统环境变量中
# vi /etc/profile 添加环境变量,添加以下三行
export PATH=/install/mpich/bin:$PATH
export INCLUDE=/install/mpich/include:$INCLUDE
export LD_LIBRARY_PATH=/install/mpich/lib:$LD_LIBRARY_PATH
# source /etc/profile
# which mpicc && which mpiexec
执行结果返回 /install/mpich/bin/mpicc && /install/mpich/bin/mpiexec即可
四、GOTOBLAS2 数学库安装
采用的BLAS库的性能对最终测得的Linpack性能有密切的关系,常用的BLAS库有GOTO、Atlas、ACML、ESSL、MKL等,经验是GOTO库性能最优,因此我们采用GOTO库。
将GotoBLAS2-1.13.tar.gz安装包放入/root/linpack目录,解压
# tar -zxvf GotoBLAS2-1.13.tar.gz
# cd GotoBLAS2/
# make CC=gcc BINARY=64 TARGET=NEHALEM
如出现错误:
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:101:../libgoto2_nehalemp-r1.13.so] 错误 1
make: *** [Makefile:49:shared] 错误 2 # vim f_check
则需要修改f_check文件298行如下:
# vim f_check
print MAKEFILE "FEXTRALIB=$linker_L -lgfortran -lm -lquadmath -lm $linker_a\n";
清理文件
# make clean
继续编译
# make CC=gcc BINARY=64 TARGET=NEHALEM ( 根据自己计算机的编译器和cpu设置,Intel 的 NEHALEM 架构, AMD 的 OPTERON架构)
出现GotoBLAS build complete.则安装成功。
五、HPL软件安装
可在http://www.netlib.org/benchmark/hpl/下载最新版本
将hpl-2.3.tar.gz安装包放入/root/linpack目录,解压
# tar -zxvf hpl-2.3.tar.gz
# cd hpl-2.3/
进入hpl文件夹从setup文件夹选择一个和自己实际平台最相似的配置文件(可以查看 CPU 型号是 Intel 的 NEHALEM 架构还是 AMD 的 OPTERON 架构cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq),这里选择的是Make.Linux_PII_FBLAS,将其拷贝到hpl目录下进行修改,并重命名以示区别。
# cp setup/Make.Linux_PII_FBLAS /root/linpack/hpl-2.3/Make.test
Make配置文件中有大量的注释信息,借助grep工具将真正有用的参数筛选出来,并修改成如下:
# cat Make.test | grep -v "#"
# vi Make.test 修改参数成如下
ARCH :系统架构名称
TOPdir :hpl程序包解压后所在的路径
HPLlib :libhpl.a文件所在位置,一般都在hpl程序目录下
MPdir :mpi环境所在的路径
LAdir :GotoBlas库所在路径
LAlib :GotoBlas库文件所在路径
LINKEY :gfortran编译器所在位置
#vim Make.test
第86行的MPlib = $(MPdir)/lib/libmpich.a 改成 MPlib = $(MPdir)/lib/libmpich.so
第171行 CCFLAGS的那一行,在最后添加上-pthread
进行编译:
# make arch=test
无报错则编译成功,编译完成后,将在/root/linpack/hpl-2.3/bin/test下生成HPL.dat和xhpl两个文件,其中HPL.dat是hpl测试时参数的配置文件,xhpl是hpl测试时被执行的mpi程序。 HPL.dat文件是Linpack测试的优化配置文件,这个对测试的结果十分重要,
# cd /root/linpack/hpl-2.3/bin/test
最后执行:
# mpirun -np 4 ./xhpl
然后就会看到测试开始了,但得到的数据会比较差,此时就需要根据自己平台的情况进行测试优化。
测试结果如下:
六、测试优化
HPL.dat 参数分析
第1、2行为注释说明行,不需要作修改
第3行说明如果输出文件的话,文件的名字
第4行说明输出结果文件的形式,为“6”时,测试结果输出至标准输出(stdout),为“7”时,测试结果输出至标准错误输出(stderr),为其它值时,测试结果输出至第3行所指定的文件中
第5行说明求解问题(矩阵)的个数,也就是第6行要设置的参数的个数
第6行要设置矩阵的阶,参数值要与第5行的数值相等。网上资料显示N的值为N×N×8=系统总内存×80%最优
第7行说明求解问题(矩阵)时采用的分块方式的种数,也就是第8行要设置的参数的个数。
第8行说明每一种分块的大小。为提高数据的局部性,从而提高整体性能,HPL采用分块矩阵的算法。NB值的选择主要是通过实际测试得到最优值。
第9行是选择处理器阵列是按列的排列方式还是按行的排列方式。
第10-12行说明二维处理器网格(P×Q)。二维处理器网格(P×Q)的要遵循以下几个要求:P×Q=进程数。这是HPL的硬性规定。
其他值采取默认即可。
linpack结果效率计算
理论峰值=主频率*核心数*每周期浮点运算次数
效率=实际峰值/理论峰值*100%