配置VASP和一些重要工具(vaspkit、VTST)
Last Updated: 2026-02-02
编译VASP
【写在前面:一定要检查自己的make、cmake、gcc、g++、gfortran等编译所需要的最基本的程序包有没有安装好,否则无法编译VASP。】
编译的简要步骤为:将arch文件夹里你希望选择的makefile.include选项的文件复制到软件包主目录下并去掉注释性后缀(即更名为makefile.include),然后仔细检查里面的各种参数(必要时修改),最后执行 make DEPS=1 -jN all 即可(N指编译所用核数;此处使用“-j N”并行时“DEPS=1”不能漏写)。
–2026-04-07补充–
下面针对典型套餐的简要编译说明现在在我看来均已不是最优解;个人目前最为推荐的针对最新版VASP的编译搭配是 GNU编译器(GCC)+Intel MKL。arch里只提供了GCC + OpenMPI + OpenMP + MKL的套餐,其一在于绑定了OpenMP支持(但对VASP没有什么使用价值),其二在于只兼容了OpenMPI(Intel MKL针对OpenMPI和MPICH/Intel MPI链接的BLAS库不同)。这里给一个我自己电脑上用GCC + MPICH + 不绑定OpenMP + MKL + HDF5(额外可选支持,你若不需要可以全部注释掉)的makefile.include:
# Default precompiler options
CPP_OPTIONS = -DHOST=\"LinuxGNU\" \
-DMPI -DMPI_BLOCK=8000 -Duse_collective \
-DscaLAPACK \
-DCACHE_SIZE=4000 \
-Davoidalloc \
-Dvasp6 \
-Dtbdyn \
-Dfock_dblbuf
CPP = gcc -E -C -w $*$(FUFFIX) >$*$(SUFFIX) $(CPP_OPTIONS)
FC = mpif90
FCL = mpif90
FREE = -ffree-form -ffree-line-length-none
FFLAGS = -w -ffpe-summary=none
OFLAG = -O3 -march=native -mtune=native
OFLAG_IN = $(OFLAG)
DEBUG = -O0
# For what used to be vasp.5.lib
CPP_LIB = $(CPP)
FC_LIB = $(FC)
CC_LIB = gcc
CFLAGS_LIB = -O
FFLAGS_LIB = -O1
FREE_LIB = $(FREE)
OBJECTS_LIB = linpack_double.o
# For the parser library
CXX_PARS = g++
LLIBS = -lstdc++
##
## Customize as of this point! Of course you may change the preceding
## part of this file as well if you like, but it should rarely be
## necessary ...
##
# When compiling on the target machine itself, change this to the
# relevant target when cross-compiling for another architecture
VASP_TARGET_CPU ?= -march=native
FFLAGS += $(VASP_TARGET_CPU)
# For gcc-10 and higher (comment out for older versions)
FFLAGS += -fallow-argument-mismatch
# Intel MKL for FFTW, BLAS, LAPACK, and scaLAPACK
#MKLROOT ?= /path/to/your/mkl/installation
LLIBS_MKL = -L$(MKLROOT)/lib/intel64 -Wl,--no-as-needed -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -lm -ldl
INCS = -I$(MKLROOT)/include/fftw
LLIBS += $(LLIBS_MKL)
# HDF5-support (optional but strongly recommended, and mandatory for some features)
CPP_OPTIONS+= -DVASP_HDF5
#HDF5_ROOT ?= /path/to/your/hdf5/installation
LLIBS += -L$(HDF5_ROOT)/lib -lhdf5_fortran
INCS += -I$(HDF5_ROOT)/include
# For the VASP-2-Wannier90 interface (optional)
#CPP_OPTIONS += -DVASP2WANNIER90
#WANNIER90_ROOT ?= /path/to/your/wannier90/installation
#LLIBS += -L$(WANNIER90_ROOT)/lib -lwannier
# For the fftlib library (hardly any benefit in combination with MKL's FFTs)
#CPP_OPTIONS+= -Dsysv
#FCL += fftlib.o
#CXX_FFTLIB = g++ -std=c++11 -DFFTLIB_USE_MKL -DFFTLIB_THREADSAFE
#INCS_FFTLIB = -I./include -I$(MKLROOT)/include/fftw
#LIBS += fftlib
#LLIBS += -ldl
# For machine learning library VASPml (experimental)
#CPP_OPTIONS += -Dlibvaspml
#CPP_OPTIONS += -DVASPML_USE_MKL
#CXX_ML = mpic++
#CXXFLAGS_ML = -O3 -std=c++17 -Wall -Wextra
#INCLUDE_ML =
–END–
下面讲讲对于三个典型套餐(Intel全家桶、GNU标准套餐、AMD全家桶)的大致状况。
对于Intel处理器,很多教程都推荐使用Intel oneAPI + MKL,这种方法也是配置起来最简便的。对于这种方法,网上有不少配置编译VASP的教程,相差不大。唯一需要注意的是可能需要根据你所安装的Intel OneAPI版本修改“makefile.include”里面的部分内容(以v2025.0为例,修改“icc”为“icx”,“icpc”为“icpx”,“mpiifort”为“mpiifx”),以及清空MKLROOT后面的示例路径(或在整行前加#)来让编译文件读取系统默认的真实路径。另外,建议将其中的OFLAG参数里加入-xHOST,这样编译器会使得编译出的程序能够利用当前机子CPU能支持的最高档次的指令集以加速计算,可以省去一些不必要的麻烦。
根据官网的这个链接,也可以使用GCC+OpenMPI在个人计算机上进行编译。这种方法编译出来的VASP受硬件约束可能较小,但操作要稍麻烦一些,因为需要额外安装一些相关的库,并额外进行一些“makefile.include”文件的编辑工作。对于这类情况,可以参考前面的官网指南或者这里的教程来配置编译VASP。此时,上面提到的“-xhost”应当改为加“-march=native”。
对于AMD处理器,AMD也专门提供了针对其优化的AOCC和AOCL。使用AOCC+AOCL以及依靠它们编译的OpenMPI编译VASP的教程见此。
VASP开发者强烈建议加上HDF5的支持,此时需要注意使用的HDF5的编译环境,应与VASP的编译环境相同(即使用相同的编译器,需要在预配置HDF5时手动指定)。
VASP的DFT-D4功能通过向外链接程序包实现。如果想用DFT-D4,需要在“makefile.include”中自行加上链接到DFT-D4程序包的配置选项(见DFT-D4官网)。需要注意的是,DFT-D4程序包只支持OpenMP并行而不支持MPI并行,因此必须用含omp尾缀的makefile.include文件,且纯MPI并行中DFT-D4环节的耗时会比较显著(表现为SCF迭代完成后到显示该轮SCF最终能量前会“卡”一段时间),加之DFT-D4相比DFT-D3(BJ)的实际改进比较有限,建议在需要用色散校正的情况下优先考虑VASP自带形式的DFT-D3(BJ)。
配置vaspkit
Vaspkit是一个很方便的用作VASP预-后处理的独立程序包,由国内师生开发,对初学者强烈推荐(尤其在另一优秀的同类程序包p4vasp早已停止开发且无法在现行Linux分发中配置和使用的背景下;p4vasp的Windows版二进制可执行文件姑且在这里提供给大家,点此即可下载)。
如果需要配置vaspkit,只需从SourceForge上下载源码并按“how_to_install”文件的说明或官网说明安装即可,非常简单。
注:一定要把主文件夹“.vaspkit”文件里面PBE、LDA等(具体看你自己安装的VASP带了什么赝势库)的路径改成自己计算机里面的实际路径;为方便调用,建议将安装目录的bin文件夹写入环境变量。
配置VTST
如果你想用VASP进行反应动力学(注意不要与常说的分子动力学模拟混淆)和过渡态的计算,建议将VTST源码配置进VASP中。步骤如下:
确保VASP已经顺利编译并能通过测试,以防万一配置VTST后重新编译出现问题时难以确定问题所在。
仔细阅读并按照VTST官网的配置说明进行必要的文件修改和覆盖操作(为以防万一,建议提前备份好原有src目录下的文件)。
回到编译时的目录,输入指令
make veryclean清除之前的编译,然后重新编译。
注:
1. 在修改文件时,一定要细致注意空格和制表符留空的区别,否则在Linux下会造成文件读取方面的问题!
2. 最后一步很多教程没有特别说明“make”一步是否需要清除以前的编译,个人亲自实践表明,如果不运行“make veryclean”而直接启动编译,很快就会出现报错信息而失败中断。究其原因,主要是当你之前编译过VASP后,会生成一系列的目标文件(通常以.o结尾,比如main.o、vasp.o等)。如果不执行make veryclean,这些旧的目标文件会残留在编译目录下,在后续重新编译时,编译器可能会尝试基于这些旧目标文件进行部分编译工作,而这些旧目标文件是基于之前未配置VTST或者未进行当前相关修改的状态生成的。这就可能导致新旧配置以及修改前后的代码在函数定义、数据结构等方面不兼容,出现参数不匹配等编译错误。