vasp的简单编译

这里提供了两套编译VASP的方法,分别是gcc + openmpi + lapack + blas + scalapack + fftw和intelmpi + mkl为例来说明vasp的简单编译,编译以vasp5.4.4为例

方法一:gcc+openmpi+lapack+blas+scalapack+fftw来编译 vasp

在正式编译vasp之前,我们解压vasp.5.4.4.tar.gz,在arch文件夹下,我们可以找到一个makefile.include.linux_gnu,这个文件告诉我们编译vasp需要用到的数学库和mpi。那么我们先编译这些数学库和openmpi

openmpi

首先是openmpi的编译:(这里我以当前最新版的openmpi-3.1.4为例说明)

创建一个可以用来放置openmpi安装位置的文件夹,比如在家目录下创建一个文件夹(mkdir ~/soft/openmpi/3.1.4/gfortran)用来放置openmpi的可执行程序和相应的库文件。

解压openmpi-3.1.4.tar.gz: tar zxvf openmpi-3.1.4.tar.gz

进入解压后的openmpi文件夹:cd openmpi-3.1.4

接着Configure:./configure –prefix=~/soft/openmpi/3.1.4/gfortran FC=gfortran

开始编译和安装:make && make install

这样我们就把openmpi安装到了~/soft/openmpi/3.1.4/gfortran下。

设置openmpi的环境:

在~/.bashrc(vi ~/.bashrc)下写上以下内容:

##############################

#########openmpi-3.1.4#########

##############################

export OPENMPI=~/soft/openmpi/3.1.4/gfortran

PATH=$OPENMPI/bin:$PATH

LD_LIBRARY_PATH=$OPENMPI/lib:$LD_LIBRARY_PATH

INCLUDE=$OPENMPI/include:$INCLUDE

CPATH=$OPENMPI/include:$CPATH

MANPATH=$OPENMPI/share/man:$MANPATH

更新环境source ~/.bashrc

数学库lapack+blas+scalapack+fftw的编译

在安装数学库之前,我们首先创建一个文件夹用于放置数学库的文件mkdir ~/lib/gfortran

fftw(https://www.fftw.org/)

这里使用fftw-3.3.8。

编译fftw需要创建一个类似前面安装openmpi一样的一个安装文件夹,比如在家目录下创建一个文件夹(mkdir ~/soft/fftw/3.3.8)用来放置fftw的可执行程序和相应的库文件。

首先老规矩解压:tar zxvf fftw-3.3.8.tar.gz

进去fftw-3.3.8:cd fftw-3.3.8

然后configure:./configure --prefix=~/soft/fftw/3.3.8 --enable-mpi --enable-openmp --enable-threads --enable-shared MPICC=mpicc CC=gcc F77=gfortran

(具体的参数解释可以使用./configure --help查看)

开始编译和安装:make && make install

这样我们就把fftw安装到了~/soft/fftw/3.3.8下。

设置fftw-3.3.8的环境

##############################

###########fftw-3.3.8###########

##############################

export LD_LIBRARY_PATH="~/soft/fftw/3.3.8/lib:$LD_LIBRARY_PATH"

更新环境source ~/.bashrc

Lapack (http://www.netlib.org/lapack/)

vasp官网上介绍对vasp6的安装可以用lapack3.6以上的库,但是需要在makefile.include里面加上CPP_OPTIONS += -DLAPACK36 (参考网站:https://www.vasp.at/wiki/index.php/Installing_VASP.6.X.X)

这里我们是编译vasp5.4.4,选择lapack-3.5.0

解压lapack-3.5.0:tar zxvf lapack-3.5.0.tar.gz

进入lapack文件夹cd lapack-3.5.0

生成并修改make.inc文件 cp make.inc.example make.inc

vi make.inc将倒数第四行BLASLIB = ../../librefblas.a修改为BLASLIB = ~/lib/gfortran/librefblas.a

然后编译make blaslib

在BLAS/SRC/下生成librefblas.a,将这个库文件拷贝到~/lib/gfortran下

接着make生成liblapack.a和libtmglib.a,将这两个库文件也拷贝到~/lib/gfortran下。

这样lapack和blas编译完成

Scalapack (http://www.netlib.org/scalapack/)

Scalapack库没有版本要求,我们就以当前最新版的scalapack-2.1.0为例

首先解压:tar zxvf scalapack-2.1.0.tar.gz

进入scalapack-2.1.0文件夹:cd scalapack-2.1.0

生成SLmake.inc文件:cp SLmake.inc.example SLmake.inc

修改SLmake.inc的最后两行到三行:

BLASLIB = -lblas

LAPACKLIB = -llapack

修改为:

BLASLIB = ~/lib/gfortran/librefblas.a

LAPACKLIB = ~/lib/gfortran/liblapack.a

然后编译:make生成库文件libscalapack.a,将这个库文件拷贝到~/lib/gfortran下。

vasp 编译

至此vasp编译的前期准备工作已经做完了。接下来开始编译vasp5.4.4

前面已经解压过vasp5.4.4的安装包了

进去vasp.5.4.4安装包:cd vasp.5.4.4

拷贝生成makefile.include:cp arch/makefile.include.linux_gnu makefile.include

修改makefile.include

将makefile.include里面的第24行到34行修改为

LIBDIR = ~/lib/gfortran

BLAS = $(LIBDIR)/librefblas.a

LAPACK = $(LIBDIR)/libtmglib.a$(LIBDIR)/liblapack.a

BLACS =

SCALAPACK = $(LIBDIR)/libscalapack.a$(BLACS)

LLIBS =$(SCALAPACK) $(LAPACK) $(BLAS)

FFTW ?=~/soft/fftw/3.3.8

LLIBS +=-L$(FFTW)/lib -lfftw3

INCS =-I$(FFTW)/include

这样就创建了vasp的编译文件,接下来就是需要漫长的编译等待:make all,顺利编译完成可以在bin下看到三个可执行文件vasp_gam, vasp_ncl, vasp_std

方法2:

intel 全家桶编译 vasp

以上是比较麻烦的做法。下面我们以intel parallel studio XE(2021年以后改为oneAPI BASE Toolkit+HPC Toolkit)为例,由于intel集成了全部的数学库,我们不需要安装多余的库,只需要配置好环境并且编译fftw3xf就可以了

intel 全家桶

intel parallel studio XE是最常见的并行编译器,几乎所有服务器自带,而且编译比较简单,这里就不介绍intel parallel studio 的编译,直接从设置intel parallel studio的环境开始,以下是怎么设置intel parallel studio的环境配置

vi ~/.bashrc

将下面的内容写入:

##############################

###########intel2019###########

##############################

source /opt/intel/compilers_and_libraries_2019.5.281/linux/bin/compilervars.sh intel64

source /opt/intel/impi/2019.5.281/intel64/bin/mpivars.sh intel64

source /opt/intel/mkl/bin/mklvars.sh intel64

export LD_LIBRARY_PATH= /opt/intel/2019.update5/mkl/lib/intel64:$LD_LIBRARY_PATH

更新环境source ~/.bashrc

编译 libfftw3xf_intel.a

首先查看自己的服务器上是否已经编译好:ls /opt/intel/mkl/interfaces/fftw3xf 查看是否有libfftw3xf_intel.a文件。假如没有在自己家目录下创建一个文件夹mkdir -p ~/intel/fftw3xf

cp –r /opt/intel/2019.update5/mkl/interfaces/fftw3xf~/intel/fftw3xf

cd ~/intel/fftw3xf

make intel64

顺利的话,生成libfftw3xf_intel.a文件。

vasp 编译

然后进入vasp.5.4.4解压包

拷贝生成makefile.include:cp arch/makefile.include.linux_intel makefile.include

修改makefile.include第19~20行为

FFLAGS = -assume byterecl -w -heap-arrays 64

OFLAG = -O2 -xCORE-AVX2

修改26行为

LAPACK = $(MKL_PATH)/libmkl_intel_lp64.a

在修改第30行,并在后面加上

OBJECTS = fftmpiw.o fftmpi_map.o fft3dlib.o fftw3d.o

$(MKLROOT)/interfaces/fftw3xf/libfftw3xf_intel.a

或者自己编译的libfftw3xf_intel.a

OBJECTS = fftmpiw.o fftmpi_map.o fft3dlib.o fftw3d.o

~/intel/fftw3xf/libfftw3xf_intel.a

这样就创建了vasp的编译文件,接下来就是需要漫长的编译等待:make all,顺利编译完成可以在bin下看到三个可执行文件vasp_gam, vasp_ncl, vasp_std

展开阅读全文

页面更新:2024-04-29

标签:简单   老规矩   编译器   最新版   以下内容   倒数   文件夹   全家   漫长   顺利   数学   环境   文件   程序   方法

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top