下载安装mpich
或者其他MPI实现应该也行,参考网上相关教程,已安装则可以忽略这一步。
下载安装blas
wget http://www.netlib.org/blas/blas.tgz
tar zxvf blas.tgz
cd BLAS-3.8.0/
# sudo apt-get install gfortran 如果没有fortran编译器需要先安装一下gfortran
gfortran -c -O3 *.f # 编译所有的 .f 文件,生成 .o文件
ar rv libblas.a *.o # 链接所有的 .o文件,生成 .a 文件
cp libblas.a /home/huangxinxin/hpcc/lib/ # 将.a文件拷到相关目录下
下载安装cblas
wget http://www.netlib.org/blas/blast-forum/cblas.tgz
tar zxvf cblas.tgz
cd CBLAS/
cp Makefile.LINUX Makefile.in # Linux环境下使用Makefile.LINUX
cp /home/huangxinxin/hpcc/lib/libblas.a testing/ # 将上个步骤编出来的libblas.a拷到testing目录下
make
cp lib/cblas_LINUX.a /home/huangxinxin/hpcc/lib/libcblas.a # 将编出来的库文件拷到相关目录下
hpcc源码下载
wget http://icl.cs.utk.edu/projectsfiles/hpcc/download/hpcc-1.5.0.tar.gz
tar zxvf hpcc-1.5.0.tar.gz
cd hpcc-1.5.0
Make文件编写
cp hpl/setup/Make.Linux_PII_CBLAS hpl/Make.Linux
Make.Linux需要根据自己的环境信息进行修改,主要有以下几个配置项:
-L/home/huangxinxin/hpcc/lib/ -lcblas -lblas
CC = /usr/local/bin/mpicc
LINKER = /usr/local/bin/mpif77
以下为Make文件的一个Demo:
SHELL = /bin/sh
CD = cd
CP = cp
LN_S = ln -s
MKDIR = mkdir
RM = /bin/rm -f
TOUCH = touch
ARCH = $(arch)
TOPdir = ../../..
INCdir = $(TOPdir)/include
BINdir = $(TOPdir)/bin/$(ARCH)
LIBdir = $(TOPdir)/lib/$(ARCH)
HPLlib = $(LIBdir)/libhpl.a
F2CDEFS =
HPL_INCLUDES = -I$(INCdir) -I$(INCdir)/$(ARCH) $(LAinc) $(MPinc)
HPL_LIBS = $(HPLlib) $(LAlib) $(MPlib) -lm -lcblas -lblas
HPL_OPTS = -DHPL_CALL_CBLAS
HPL_DEFS = $(F2CDEFS) $(HPL_OPTS) $(HPL_INCLUDES)
CC = /usr/local/bin/mpicc
CCNOOPT = $(HPL_DEFS)
CCFLAGS = $(HPL_DEFS) -fomit-frame-pointer -O3 -funroll-loops
LINKER = /usr/local/bin/mpif77
LINKFLAGS = $(CCFLAGS)
ARCHIVER = ar
ARFLAGS = r
RANLIB = echo
编译hpcc
make arch=Linux # arch的值为hpl目录下Make.Linux的后缀,make操作需要在顶层目录执行,即hpcc-1.5.0,执行完在该目录会生成一个名为hpcc的可执行文件
运行hpcc
cp _hpccinf.txt hpccinf.txt # hpccinf.txt中包含了许多运行时的配置项,可以自己研究一下
mpirun -np 2 ./hpcc # 运行结束后会在当前目录生成一个hpccoutf.txt的结果文件