暂无优化,可以根据自己电脑情况进行优化。
开头参照此为博主的: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下载
下载完后同样先解压缩
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
如有冒犯,请联系我