Linpack是线性系统软件包(Linear system package) 的缩写,现在在国际上已经成为最流行的用于测试
高性能计算机系统浮点性能的benchmark。通过利用高性能计算机,用高斯消元法求解N元一次稠密线性代数
方程组的测试,评价高性能计算机的浮点性能。
衡量计算机性能的一个重要指标就是计算峰值,例如浮点计算峰值,它是指计算机每秒钟能完成的浮点计算最
大次数。包括理论浮点峰值和实测浮点峰值:理论浮点峰值是该计算机理论上能达到的每秒钟能完成浮点计算
最大次数,它主要是由CPU的主频决定的,理论浮点峰值=CPU主频×CPU每个时钟周期执行浮点运算的次数×系
统中CPU核心数目实测浮点峰值是指Linpack测试值,也就是说在这台机器上运行Linpack测试程序,通过各
种调优方法得到的最优的测试结果。实际上在实际程序运行过程中,几乎不可能达到实测浮点峰值,更不用说
达到理论浮点峰值了。这两个值只是作为衡量机器性能的一个指标,用来表明机器处理能力的一个标尺和潜能
的度量。文档作者: Carl
下载必要的软件包: MPI,GotoBLAS库,HPL源码
http://www.netlib.org/mpi/index.html
https://www.tacc.utexas.edu/research-development/tacc-software/gotoblas2
http://www.netlib.org/benchmark/hpl/
1、 mpich安装
1.1 解压mpich包
tar zxvf mpich-3.2.tar.gz
1.2 创建安装目录
mkdir –p /install/mpich
1.3 配置mpich的安装参数
进入解压后的mpich目录,执行./configure –prefix=/install/mpich
1.4 在mpich目录下,执行make,编译mpich
1.5 在mpich目录下,执行make install
1.6 将mpich的运行环境加入到系统环境变量中
LD_LIBRARY_PATH=/install/mpich/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
2、GotoBLAS安装
2.1 解压GotoBLAS包之后,在解压后的目录下执行./ quickbuild.64bit进行快速安装,如果安装正常,
在本目录下就会生成libgoto2.a和libgoto2.so两个文件若出现如下:
../kernel/x86_64/gemm_ncopy_4.S:192: Error: undefined symbol RPREFETCHSIZE' in operation ../kernel/x86_64/gemm_ncopy_4.S:193: Error: undefined symbol
RPREFETCHSIZE’ in operation
../kernel/x86_64/gemm_ncopy_4.S:194: Error: undefined symbol RPREFETCHSIZE' in operation ../kernel/x86_64/gemm_ncopy_4.S:195: Error: undefined symbol
RPREFETCHSIZE’ in operation
则执行: gmake clean make BINARY=64 TARGET=NEHALEM
2.2 编译正常的话,会在目录下生成libgoto2.a 和libgoto2.so文件
3、HPL程序的编译
3.1 解压HPL程序包之后,将看到如下目录结构,从setup目录中选择一个和自己实际的测试平台最相似的配
置文件,将其复制到hpl根目录下,可以重新命名以示区别。
3.2 Make配置文件中有大量的注释信息,可以借助grep之类的工具将真正有用的参数筛选出来
[root@hplnode01 hpl]# cat Make.carl grep -v “#”
SHELL = /bin/sh
CD = cd
CP = cp
LN_S = ln -s
MKDIR = mkdir
RM = /bin/rm -f
TOUCH = touch
ARCH = Linux_PII_FBLAS <–系统架构名称
TOPdir = $(HOME)/hpl <–hpl程序包解压后所在的路径
INCdir = $(TOPdir)/include
BINdir = $(TOPdir)/bin/$(ARCH)
LIBdir = $(TOPdir)/lib/$(ARCH)
HPLlib = $(LIBdir)/libhpl.a
MPdir = /usr/local/mpi <–mpi环境所在的路径
MPinc = -I$(MPdir)/include
MPlib = $(MPdir)/lib/libmpich.a
LAdir = $(HOME)/netlib/ARCHIVES/Linux_PII <–GotoBlas库所在的路径
LAinc =
LAlib = $(LAdir)/libf77blas.a $(LAdir)/libatlas.a <–Gotoblas库文件所在的路径
F2CDEFS = -DAdd__ -DF77_INTEGER=int -DStringSunStyle
HPL_INCLUDES = -I$(INCdir) -I$(INCdir)/$(ARCH) $(LAinc) $(MPinc)
HPL_LIBS = $(HPLlib) $(LAlib) $(MPlib)
HPL_OPTS =
HPL_DEFS = $(F2CDEFS) $(HPL_OPTS) $(HPL_INCLUDES)
CC = /usr/bin/gcc
CCNOOPT = $(HPL_DEFS)
CCFLAGS = $(HPL_DEFS) -fomit-frame-pointer -O3 -funroll-loops -W -Wall
LINKER = /usr/bin/g77
LINKFLAGS = $(CCFLAGS)
ARCHIVER = ar
ARFLAGS = r
RANLIB = echo
[root@hplnode01 hpl]#
3.3 以下是我在实验环境中使用的参数
3.4 设置好hpl程序的编译参数之后,通过命令make arch=xxx来指定编译配置文件,开始进行编译,编译
完成后,将在hpl目录的bin/xxx/下生成HPL.dat和xhpl两个文件,其中HPL.dat是hpl测试时参数的配置
文件,xhpl是hpl测试时被执行的mpi程序。
4、HPL测试的执行
4.1 节点执行hpl测试前需要先开启mpd demo,首次启动mpd demo时,请根据提示创建mpd配置文件。
Mpdboot –n 启动的节点数量 –f 可用的节点列表, mpdtrace –l 可以查看demo运行状态
4.2 以下是在单台服务器上以4个进程并行执行xhpl程序的例子
4.3 以下是在多台服务器上以指定的进程数并行执行xhpl程序的例子
4.4 mpirun -np 8 –machinefile 主机列表文件 ./xhpl
4.5 以下是一个比较方便直观的hpl测试效率计算器
http://hpl-calculator.sourceforge.net