安装运行步骤
-
下载安装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需要根据自己的环境信息进行修改,主要有以下几个配置项:
- MPdir、MPinc、MPlib这几个和MPI相关的配置项可以注释掉
- HPL_LIBS后面加上blas、cblas库的连接信息:
-L/home/huangxinxin/hpcc/lib/ -lcblas -lblas
- CC配置项将gcc替换成mpicc:
CC = /usr/local/bin/mpicc
- LINKER配置项将g77替换成mpif77,如:
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的结果文件