Linpack的安装与测试(Mpi+Goto+hpl)

暂无优化,可以根据自己电脑情况进行优化。

开头参照此为博主的:https://blog.51cto.com/sclijq/1060178

中间的一个错误参照此位:https://blog.csdn.net/qq_43327857/article/details/85500973

在安装HPL之前,系统中必须具备以下三个条件: 1)   编译器 系统必须安装了支持C语言和Fortran 77语言的编译器。推荐采用在Linux操作系统中自带的GNU编译器。

sudo apt-get install gcc ///安装GCC编译器(支持C编译)

sudo apt-get install build-essential(安装g++)/g++

sudo apt-get install gfortran //mpich 即Fortran 2)   并行环境 并行环境是指MPI。在以太网环境下,一般采用MPICH,当然也可以是其它版本的MPI,如LAM-MPI。在Myrinet网下,采用MPICH-GM。若是其它网络环境就采用相应的MPI。 3)   BLAS库 BLAS库及基本线性代数库,采用BLAS库的性能对最终测得的Linpack性能有密切的关系。常用的BLAS库有GOTO、Atlas、ACML、ESSL、MKL等,我的测试经验是GOTO库性能最优。

MPI安装

下载地址 Index of /static/downloads

MPICH | High-Performance Portable MPI

我准备将其安装到根目录下的mpisoft文件夹当中,以便日后方便管理

解压 tar -zvxf mpich-3.2.tar.gz ~/mpisoft/

进入到解压后的目录中:

wangha@wangha:~/mpisoft/mpich-3.2

./configure --prefix=/home/wangha/mpi/mpich-3.2/mpich-install 2>&1 | tee c.txt /home/wangha/mpi/mpich-3.2/自己安装目录,也就是进入刚才解压缩的文件的目录

或./configure

如果运行通过,系统界面最后一行会出现 “configuration complete!”的语句,接着下面的

make //时间有点长

make install

安装结束

配置环境变量

添加下面这行到/etc/profile文件的最后然后重新起动系统使环境变量永久生效。sudo vi /etc/profile

 export MPI_ROOT=/opt/mpisoft/mpich4/mpich-install #这一步修改你自己的安装地址/opt/mpi/mpich4/

export PATH=$MPI_ROOT/bin:$PATH

export MANPATH=$MPI_ROOT/man:$MANPATH

激活环境变量source /etc/profile

若是普通用户则修改用户目录下的:~/.bash_profile文件

运行以下命令使修改生效:

 source /etc/profile  (或者source .bashrc)  

查看位置信息 which mpicc

查看版本号 mpichversion

mpi卸载

卸载源代码编译的的软件:

cd 源代码目录

make clean

./configure

(make)

make uninstall

rm -rf 目录

GotoBLAS2下载

.so .a 库文件

gotoblas2 - Texas Advanced Computing Center

解压:一定要在Linux下解压

我准备将其安装到根目录下的mathdepository文件夹当中,以便日后方便管理

wangha@wangha:~/mathdepository$ tar -zvxf GotoBLAS2-1.13.tar.gz

进入解压好的文件夹中:wangha@wangha:~/mathdepository$ cd GotoBLAS2/

编译:make CC=gcc BINARY=64 TARGET=NEHALEM

make CC=gcc BINARY=64 TARGET=NEHALEM

TARGET是intel的NEHALEM架构还是AMD的OPTERON

BINARY 是多少位的电脑

出现invalid operands (UND and ABS sections) for `*'错误

出现错误

collect2: error: ld returned 1 exit status

make[1]: *** [Makefile:101:../libgoto2_nehalemp-r1.13.so] 错误 1

make[1]: 离开目录“/home/wangha/mathdepository/GotoBLAS2/exports”

make: *** [Makefile:49:shared] 错误 2

解决办法:

打开文件

vi f_check

在文件末尾将第298行改为如下

print MAKEFILE "FEXTRALIB=$linker_L -lgfortran -lm -lquadmath -lm $linker_a\n";

重新编译

make clean

make CC=gcc BINARY=64 TARGET=NEHALEM (根据自己计算机的编译器和cpu设置)

成功!!!GotoBLAS build complete.

hpl下载

HPL - A Portable Implementation of the High-PerformanceLinpack Benchmark for Distributed-Memory Computers

下载完后同样先解压缩

wangha@wangha:~/hplxia$ ls

hpl-2.3 hpl-2.3.tar.gz

从hpl-2.3/setup目录下拷贝Make.Linux_PII_FBLAS文件到hpl-2.3/目录下,并将文件更名为Make.test

$cd hpl-2.3

$cp setup/Make.Linux_PII_FBLAS Make.test

修改Make.test的文件 红的都换

wangha@wangha:~/hplxia/hpl-2.3$ vi Make.test

ARCH = test # Make.<arch>文件的后缀,即<arch> TOPdir = $(HOME)/hpl # HPL所在的路径 INCdir = $(TOPdir)/include BINdir = $(TOPdir)/bin/$(ARCH) LIBdir = $(TOPdir)/lib/$(ARCH) HPLlib = $(LIBdir)/libhpl.a MPdir = /usr/local/mpich-1.2.6 # MPI所在的路径 MPinc = -I$(MPdir)/include MPlib = $(MPdir)/lib/libmpich.a LAdir = <libgoto—path> # GOTO所在的路径 LAinc = LAlib = $(LAdir)/libgoto_opt64p-r0.96.so $(LAdir)/xerbla.o # GOTO库 F2CDEFS = -DAdd__ -DF77_INTEGER=int -DStringSunStyle CC = /use/bin/gcc # C编译器 CCNOOPT = $(HPL_DEFS) CCFLAGS = $(HPL_DEFS) -fomit-frame-pointer -O3 -funroll-loops -W -Wall LINKER = /use/bin/gfortran # Fortran77编译器 LINKFLAGS = $(CCFLAGS)

以下是我的Make.test gcc跟gfortran如果是默认安装的话,路径应该一样。

SHELL = /bin/sh CD = cd CP = cp LN_S = ln -s MKDIR = mkdir RM = /bin/rm -f TOUCH = touch ARCH = test TOPdir = /home/wangha/hplxia/hpl-2.3 INCdir = $(TOPdir)/include BINdir = $(TOPdir)/bin/$(ARCH) LIBdir = $(TOPdir)/lib/$(ARCH) HPLlib = $(LIBdir)/libhpl.a MPdir = /home/wangha/mpisoft/mpich-3.2 MPinc = -I$(MPdir)/include MPlib = $(MPdir)/mpich-install/lib/libmpich.so LAdir = /home/wangha/mathdepository/GotoBLAS2 LAinc = LAlib = $(LAdir)/libgoto2.so $(LAdir)/libgoto2.a 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/gfortran LINKFLAGS = $(CCFLAGS) ARCHIVER = ar ARFLAGS = r RANLIB = echo

修改完在当前目录执行 make arch=test 进行安装

出现错误

/home/wangha/hplxia/hpl-2.3/include/hpl_pmisc.h:54:10: fatal error: mpi.h: 没有那个文件或目录

54 | #include "mpi.h"

| ^~~~~~~

compilation terminated.

make[2]: *** [Makefile:79:HPL_dlacpy.o] 错误 1

make[2]: 离开目录“/home/wangha/hplxia/hpl-2.3/src/auxil/test”

make[1]: *** [Make.top:54:build_src] 错误 2

make[1]: 离开目录“/home/wangha/hplxia/hpl-2.3”

make: *** [Makefile:72:build] 错误 2

直接在文件中导入mp.h的绝对路径

make arch=test clean

make arch=test

出现错误:

./xhpl: error while loading shared libraries: libmpi.so.12: cannot open shared object file: No such file or directory

修改 将该目录放进配置文件

(base) root@wangha:/# sudo vi /etc/ld.so.conf

(base) root@wangha:/# sudo ldconfig

有可能报错

Need at least 4 processes for these tests,此时根据要求指定运行线程数大于4即可。或者是修改文件HPL.dat,将Ps和Qs的积(Ps*Qs)减小即可。即下面的错误

wangha@wangha:~/hplxia/hpl-2.3/bin/test$ mpirun -n 4 ./xhpl

HPL ERROR from process # 0, on line 419 of function HPL_pdinfo:

Need at least 4 processes for these tests

HPL ERROR from process # 0, on line 419 of function HPL_pdinfo:

Need at least 4 processes for these tests

mpirun detected that one or more processes exited with non-zero status, thus causing the job to be terminated. The first process to do so was: Process name: [[64874,1],2] Exit code: 1

修改HPL.dat文件

二维处理器网格(P×Q)的要遵循以下几个要求:P×Q=进程数。这是HPL的硬性规定;P×Q=系统CPU数=进程数。一般来说一个进程对于一个CPU可以得到最佳性能。对于Intel Xeon来说,关闭超线程可以提高HPL性能;P≤Q,这是一个测试经验值,一般来说,P的值尽量取得小一点,因为列向通信量(通信次数和通信数据量)要远大于横向通信.等等这些,需要测试者多摸索。

根据电脑配置进行适当修改:以下是我的

wangha@wangha:~$ cat /proc/cpuinfo | grep name | cut -f2 -d: |uniq -c

8 Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz

wangha@wangha:~$ free -h

总计 已用 空闲 共享 缓冲/缓存 可用

内存: 7.6Gi 2.6Gi 1.7Gi 220Mi 3.4Gi 4.5Gi

交换: 9.5Gi 1.0Mi 9.5Gi

如有冒犯,请联系我

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值