hityu028的个人博客分享 http://blog.sciencenet.cn/u/hityu028

博文

ubuntu+gfortan+openmpi+编译并行siesta-4.0

已有 5245 次阅读 2016-12-22 17:56 |个人分类:siesta|系统分类:科研笔记

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中的结果比对。





https://blog.sciencenet.cn/blog-3126508-1022598.html


下一篇:origin内置格式代码和指代代码
收藏 IP: 202.118.237.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-27 05:26

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部