VASP6.x编译安装教程
# 1 简介
VASP 全称 Vienna Ab-initio Simulation Package。它是维也纳大学 Hafner 小组开发的进行电子结构计算和量子力学-分子动力学模拟软件包。它是目前材料模拟和计算物质科学研究中最流行的商用软件之一。
官网地址:传送门 (opens new window)。
下载:商业软件,需要购买版权。
# 2 编译环境
VASP是FOTRAN语言编写的程序,需要先编译,然后才能运行可执行程序。
因此,需要安装编译器:
以及MPI编译器(如果需要并行计算):
以及CUDA编译环境(如果需要GPU加速):
安装neb版本需要下载额外的vtstcode:
# 3 编译方法(针对 VASP 6.x 版本)
我们购买VASP后会得到它的源码包,例如vasp.6.3.0.tgz
。在此我们介绍在linux平台下使用 Intel compiler
及 OpenMPI
编译VASP的方法。
# 3.1 加载编译环境
不同的平台,编译器的安装及加载方式不同,在此给出最常见的加载方式:
# TH-eX
module add Intel_compiler/19.0.4
module add MPI/openmpi/4.1.2-mpi-x-icc19.0
module add MKL/19.1.2
1
2
3
4
2
3
4
# 3.2 安装包配置
假设安装包 vasp.6.3.0.tgz
存放在用户根目录下,我们进入根目录,解压缩安装包,并进入解压后的目录:
cd ~
tar zxvf vasp.6.3.0.tgz
cd vasp.6.3.0
1
2
3
2
3
# 3.3 修改makefile文件
我们从arch
文件夹拷贝一个配置文件到当前目录,然后根据当前系统环境进行适当修改。
cp arch/makefile.include.intel_ompi_mkl_omp makefile.include
1
这个 arch 文件,从名字可以看出,它是 intel 编译器的配置文件,使用 ompi(OpenMPI) 编译,使用了 MKL 数学库,并开启了 omp (OpenMP)多线程并行
简要分析makefile.include,说几个我们可能会修改的部分吧:
# 3.3.1 预处理配置参数CPP_OPTIONS
CPP_OPTIONS = -DHOST=\"LinuxIFC\" \
-DMPI -DMPI_BLOCK=8000 -Duse_collective \
-DscaLAPACK \
-DCACHE_SIZE=4000 \
-Davoidalloc \
-Dvasp6 \
-Duse_bse_te \
-Dtbdyn \
-Dfock_dblbuf \
-D_OPENMP
CPP = fpp -f_com=no -free -w0 $*$(FUFFIX) $*$(SUFFIX) $(CPP_OPTIONS)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
说明:
- CPP_OPTIONS:定义了一些选项和宏开关,例如 -DMPI 是开启 MPI 版本支持, -D_OPENMP 是开启 OpenMP 支持等
- CPP: 一个常用的内置变量,定义了进行编译预处理时候的命令,这里面使用的是 fpp 命令进行预处理
# 3.3.2 编译和链接命令参数
FC = mpif90 -qopenmp
FCL = mpif90 -qopenmp # 此行添加了 -qopenmp 参数
FREE = -free -names lowercase
FFLAGS = -assume byterecl -w
OFLAG = -O2
OFLAG_IN = $(OFLAG)
DEBUG = -O0
OBJECTS = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o
OBJECTS_O1 += fftw3d.o fftmpi.o fftmpiw.o
OBJECTS_O2 += fft3dlib.o
# For what used to be vasp.5.lib
CPP_LIB = $(CPP)
FC_LIB = $(FC)
CC_LIB = icc
CFLAGS_LIB = -O
FFLAGS_LIB = -O1
FREE_LIB = $(FREE)
OBJECTS_LIB = linpack_double.o
# For the parser library
CXX_PARS = icpc
LLIBS = -lstdc++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
说明:
- 这部分是用来设定编译时候的编译器及链接参数,最主要的是 FC 变量,表示调用的为 mpif90 编译命令,并且添加了
-qopenmp
编译选项,使编译器对 OpenMP 进行支持,FCL 是链接过程时用到的命令。 - 其他的为一些常用编译参数:
-free
:Fortran编译器选项,启用自由格式源代码。-names lowercase
:Fortran编译器选项,将所有变量名转换为小写。-assume byterecl
:Fortran编译器选项,假设字节可回收,这通常用于确保程序在不同平台上的可移植性。-w
:Fortran编译器选项,关闭所有警告信息。
# 3.3.3 数学库参数
# Intel MKL (FFTW, BLAS, LAPACK, and scaLAPACK)
# (Note: for Intel Parallel Studio's MKL use -mkl instead of -qmkl)
FCL += -mkl # 此行从 -qmkl 替换为了 -mkl
MKLROOT ?= /path/to/your/mkl/installation
LLIBS += -L$(MKLROOT)/lib/intel64 -lmkl_scalapack_lp64 -lmkl_blacs_openmpi_lp64
LLIBS += -lmkl_intel_lp64 -lmkl_core -lmkl_sequential # 此行为新增,添加 MKL 库
INCS =-I$(MKLROOT)/include/fftw
1
2
3
4
5
6
7
2
3
4
5
6
7
说明:
- 这部分是用来定义一些数学库的,我们使用的是 MKL 数学库,并且通过
module add MKL
命令设置了MKLROOT
路径,因此?=
表示如果没定义时则设置为后面的值,我们定义了,所以就会用系统上的了。
# 3.4 编译make
直接执行make即可。
make
1
编译成功后会在bin文件夹下生成三个可执行文件 vasp_std、vasp_ncl 及 vasp_gam。