废话:之前mpi安装的有问题,编译完之后不能mpirun真的让人头大。。于是我就卸载了之前安装的mpich和lam4-dev,然后安装了openmpi
本篇参照:这个博客
※:/opt/openmpi是安装路径,打开之后应该有bin etc include lib share这几个文件夹
编译 make安装make install配置环境变量vim /etc/profile添加: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/openmpi/lib export PATH=/opt/openmpi/bin:$PATH export INCLUDE=/opt/openmpi/include:$INCLUDE运行以下命令使得修改生效:
source /etc/profile(或者source.bashrc)
由于官网的安装包找不到了,于是我在github上找到了一个mirror
git clone到本地进到cd gotoblas2文件夹中然后执行make BINARY=64 TARGET=NEHALEM 如果编译错误需make clean再make 这里有个bug!!!我最后显示的有些问题,但也编译成功生成了libgoto2_nehalemp-r1.13.a显示生成libgoto2_nehalemp-r1.13.a便达到了目的。这里贴一个下载地址:http://www.netlib.org/benchmark/hpl/
解压下载的安装包tar -zxvf hpl-2.3.tar.gz
进入cd hpl-2.3文件
根据机器情况复制Makefile模板cd setup然后cp Make.Linux_PII_CBLAS ../Make.test
这里把setup文件下的模板复制到上一层文件夹中,并重新命名为Make.test
vim Make.test配置文件
这里直接贴上我的配置
# SHELL = /bin/sh # CD = cd CP = cp LN_S = ln -s MKDIR = mkdir RM = /bin/rm -f TOUCH = touch # # ---------------------------------------------------------------------- # - Platform identifier ------------------------------------------------ # ---------------------------------------------------------------------- # ARCH = test # # ---------------------------------------------------------------------- # - HPL Directory Structure / HPL library ------------------------------ # ---------------------------------------------------------------------- # TOPdir = /home/challow/nfs/hpl-2.3 # 这里的hpl是你下载的目录 INCdir = $(TOPdir)/include BINdir = $(TOPdir)/bin/$(ARCH) LIBdir = $(TOPdir)/lib/$(ARCH) # HPLlib = $(LIBdir)/libhpl.a # # ---------------------------------------------------------------------- # - Message Passing library (MPI) -------------------------------------- # ---------------------------------------------------------------------- # MPdir = /opt/openmpi # 如果参照上面的openmpi就安装在这里 MPinc = -I$(MPdir)/include MPlib = $(MPdir)/lib/libmpi.so #!!!!这个东东 # # ---------------------------------------------------------------------- # - Linear Algebra library (BLAS or VSIPL) ----------------------------- # ---------------------------------------------------------------------- LAdir = /home/challow/blas/gotoblas2 # gotoblas2下载的路径 LAinc = LAlib = $(LAdir)/libgoto2_nehalemp-r1.13.a # 直接引用中间的包 # # ---------------------------------------------------------------------- # - F77 / C interface -------------------------------------------------- F2CDEFS = # # ---------------------------------------------------------------------- # - HPL includes / libraries / specifics ------------------------------- # ---------------------------------------------------------------------- # HPL_INCLUDES = -I$(INCdir) -I$(INCdir)/$(ARCH) $(LAinc) $(MPinc) HPL_LIBS = $(HPLlib) $(LAlib) $(MPlib) # # - Compile time options ----------------------------------------------- # HPL_OPTS = -DHPL_CALL_CBLAS # # ---------------------------------------------------------------------- # HPL_DEFS = $(F2CDEFS) $(HPL_OPTS) $(HPL_INCLUDES) # # ---------------------------------------------------------------------- # - Compilers / linkers - Optimization flags --------------------------- # ---------------------------------------------------------------------- # CC = /opt/openmpi/bin/mpicc # 这里还是根据openmpi安装的路径 CCNOOPT = $(HPL_DEFS) CCFLAGS = $(HPL_DEFS) -fomit-frame-pointer -O3 -funroll-loops # # LINKER = /opt/openmpi/bin/mpif77 # 这里也可以是mpicc LINKFLAGS = $(CCFLAGS) # ARCHIVER = ar ARFLAGS = r RANLIB = echo # # ----------------------------------------------------------------------※:上面的操作都是基于openmpi的,如果安装其他版本的MPI道理一样,不过在MPlib = $(MPdir)/lib/libmpi.so
做相应的更改!xxxx/libmpi.a或者xxxx/libmpichxx.a等等文件。
然后直接make arch=test即可!编译完会在bin下面生成test文件夹,里面有HPL.dat xhpl两个文件。HPL.dat是运行的参数,这里可以自行修改。使用命令mpirun -np 4 ./xhpl就可以成功运行!
这是一个锻炼的过程,安装过程可能各种报错。慢慢来,一个一个调就行!大不了卸载重来,哈哈。