HPL+Openmpi+GOTOBLAS2
终于成功了!!!
废话:之前mpi安装的有问题,编译完之后不能mpirun真的让人头大。。于是我就卸载了之前安装的mpich和lam4-dev,然后安装了openmpi
本篇参照:这个博客
Openmpi的安装
- 解压
tar -zxvf openmpi-3.1.0.tar.gz
- 系统配置
cd openmpi-3.1.0
- 然后
./configure --prefix=/opt/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)
安装GOTOBLAS2
由于官网的安装包找不到了,于是我在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
便达到了目的。
安装HPL
这里贴一个下载地址: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
就可以成功运行!
后语
这是一个锻炼的过程,安装过程可能各种报错。慢慢来,一个一个调就行!大不了卸载重来,哈哈。