||
ubuntu 14.04 gcc 4.8.4 siesta-4.0
编译各个源文件最好的参考文献就是各个软件的官方说明(manual)。
本人新手,若有描述不正确的地方,欢迎批评指点。
1.编译openmpi 添加环境变量
2.编译blas和lapack
3.编译blacs
(1) 下载MPIBLACS: http://www.netlib.org/blacs/mpiblacs.tgz
下载补丁:http://www.netlib.org/blacs/mpiblacs-patch03.tgz
(2) $ tar -zxvf mpiblacs.tgz
$ tar -zxvf mpiblacs-patch03.tgz
(3) $ cd BLACS
$ cp BMAKES/Bmake.MPI-LINUX ./Bmake.inc
(4) 对 Bmake.inc 修改如下
(参见:http://www.open-mpi.org/faq/?category=mpi-apps#blacs)
# Section 1:
BTOPdir = /home/x_guazh/software/BLACS
COMMLIB = MPI
# Ensure to use MPI for the communication layer
COMMLIB = MPI
# The MPIINCdir macro is used to link in mpif.h and
# must contain the location of Open MPI's mpif.h.
# The MPILIBdir and MPILIB macros are irrelevant
# and should be left empty.
MPIdir = /home/x_guazh/software/openmpi-1.6.5-gnu
MPILIBdir =
MPIINCdir = $(MPIdir)/include
MPILIB =
# Section 2:
SYSINC =
INTFACE = -Df77IsF2C
SENDIS =
BUFF =
TRANSCOMM = -DUseMpi2
WHATMPI =
SYSERRORS =
# Section 3:
# You may need to specify the full path to
# mpif77 / mpicc if they aren't already in
# your path.
F77 = mpif77
F77LOADFLAGS =
CC = mpicc
CCLOADFLAGS =
4.编译scalapack
编译方法见 http://www.open-mpi.org/faq/?category=mpi-apps#scalapack
下载地址 http://www.netlib.org/scalapack/
5.把上面得到的.a文件拷到一个文件夹中,比如home/path/to/lib
librefblas.a liblapack.a
blacsCinit_MPI-LINUX-0.a blacs_MPI-LINUX-0.a blacsF77init_MPI-LINUX-0.a
libscalapack.a
6.编译siesta
siesta编译需要的文件都在Src路径中,但是软件是禁止在Src路径下make的,这是为了避免输出和输入文件的混乱。根据manual,编译的时候,可在与Src同级的任意名称的路径下编译,这样的好处是可以编译不同版本的软件在不同路径下。这时可以使用VPATH关键字编译。(此段描述在manual中有更好的解释)
(1) $ cd home/path/to/siesta-4.0/Obj
$ sh ../Src/obj_setup.sh
脚本会将编译用到的一些文件复制到Obj文件夹内。
(2) $ ../Src/configure --enable-mpi 在Obj文件夹下生成arch.make文件,对其修改如下
FPP=
FPP_OUTPUT=
FC=mpif90
RANLIB=ranlib
FFLAGS=-g -O2
FPPFLAGS= -DMPI -DFC_HAVE_FLUSH -DFC_HAVE_ABORT
LDFLAGS=
PATH_LIB=/home/path/to/lib
BLAS_LIBS=$(PATH_LIB)/librefblas.a
LAPACK_LIBS=$(PATH_LIB)/liblapack.a
BLACS_LIBS=$(PATH_LIB)/blacsCinit_MPI-LINUX-0.a $(PATH_LIB)/blacs_MPI-LINUX-0.a $(PATH_LIB)/blacsF77init_MPI-LINUX-0.a
SCALAPACK_LIBS=$(PATH_LIB)/libscalapack.a
MPI_INTERFACE=libmpi_f90.a
MPI_INCLUDE=.
(3)$ cd MPI 进入MPI文件夹修改makefile。
把 ARCH_MAKE_DEFAULT=../arch.make
修改为绝对路径 ARCH_MAKE_DEFAULT=/home/path/to/siesta-4.0/Obj/arch.make
并添加VPATH关键词,VPATH=/home/path/to/siesta-4.0/Src/MPI 否则make指令搜索不到编译用的源文件
然后 $ make
(4) $ cd .. 回到Obj路径。查看修改makefile。这里面应该已经有VPATH=/home/path/to/siesta-4.0/Src。目的同上。然后 $ make
(5) 测试
(5-1) $ ./siesta 会出现
Siesta Version: siesta-4.0--500
Architecture : x86_64-unknown-linux-gnu--unknown
Compiler flags: mpif90 -g -O2
PP flags : -DMPI -DFC_HAVE_FLUSH -DFC_HAVE_ABORT
PARALLEL version
* Running in serial mode with MPI
>> Start of run: 22-DEC-2016 17:43:15
***********************
* WELCOME TO SIESTA *
***********************
reinit: Reading from standard input
************************** Dump of input data file ****************************
(5-2)结合官方说明书进入到Tests文件夹下进行测试并与Reference中的结果比对。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-4-27 05:26
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社