Ubuntu18.04编译VASP5.4.4+VTST的详细步骤

本文直接使用较新版本的 Intel® Parallel Studio XE 工具集进行编译,无需辅助的 fftw 和 openmpi

本文主要参考 【VASP】给真·小白看的VASP本地编译自学指南 Ver 2.1VASP+VTST编译安装

所用安装包为 parallel_studio_xe_2019_update1_cluster_edition.tgz , vasp.5.4.4.tar.gz , vtstcode.tgz 和 vtstscripts.tgz

编译环境准备

前期准备

更新软件并安装一些必备库

1
2
3
4
5
6
7
sudo apt-get update # 更新软件包的源地址
sudo apt-get upgrade # 升级已安装的所有软件包
sudo apt-get install build-essential
sudo apt-get install libstdc++5
sudo apt-get install openjdk-8-jre
sudo apt-get install g++
sudo apt-get install gcc

安装Intel编译环境

解压安装包

1
tar –xvzf parallel_studio_xe_2019_update1_cluster_edition.tgz

进入安装包目录进行安装

1
./install.sh

空格+回车,按照默认操作进行,安装完成程序自动退出

设置环境变量

在主文件夹 home 中按ctrl+h,显示隐藏文件夹,打开 .bashrc ,在其末尾添加(注意安装后的 intel 目录,有的是 /opt/intel )

1
2
source /home/cyh/intel/bin/compilervars.sh intel64 # 启用intel编译器
source /home/cyh/intel/mkl/bin/mklvars.sh intel64 # 启用mkl编译器

退出并保存 .bashrc 。再使其生效

1
source ~/.bashrc

检查是否编译成功

1
2
3
4
which ifort
which icc
which mpi
echo $MKLROOT

显示路径即编译成功

编译Intel fftw3

进入 intel 目录中的 fftw3xf 文件夹内 /home/cyh/intel/mkl/interfaces/fftw3xf

1
make libintel64

生成 libfftw3.intel.a

编译 VASP+VTST

解压 VASP 安装包

1
tar –xvzf vasp.5.4.4.tar.gz

将解压后的 vasp.5.4.4 文件夹移动到 home 文件夹中

解压 vtstcode 安装包

1
tar –xvzf vtstcode.tar.gz

生成 vtstcode-178 文件夹

设置 VTST

将 vtstcode-178 文件夹目录下所有文件复制到 /home/vasp.5.4.4/src/ 中(替换 chain.F )

打开并修改 src 文件夹中的 main.F ,将

1
2
CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, &
LATT_CUR%A,LATT_CUR%B,IO%IU6)

替换为

1
2
CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, &
TSIF,LATT_CUR%A,LATT_CUR%B,IO%IU6)

打开并修改 src 文件夹中的 .objects ,在 chain.o (第一个,约第70行)前添加以下内容

1
2
bfgs.o dynmat.o instanton.o lbfgs.o sd.o cg.o dimer.o bbm.o \
fire.o lanczos.o neb.o qm.o opt.o \

注意 \ 后不要有空格

获取 makefile 文件

进入 /home/vasp.5.4.4/arch ,复制 makefile.include.linux_intel 到上一级目录 /home/vasp.5.4.4 中,并重命名为 makefile.include

修改 makefile 文件

添加 MKLROOT 路径

获取 MKLROOT 路径

1
echo $MKLROOT

将所得路径添加到 MKL_PATH 前

1
2
MKLROOT    = /home/cyh/intel/compilers_and_libraries_2019.0.117/linux/mkl
MKL_PATH = $(MKLROOT)/lib/intel64
修改数学库配置

将 MKL_PATH 后的

1
2
3
4
BLAS       =
LAPACK =
BLACS = -lmkl_blacs_intelmpi_lp64
SCALAPACK = $(MKL_PATH)/libmkl_scalapack_lp64.a $(BLACS)

修改为

1
2
3
4
BLAS       = -L$(MKL_PATH) -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread
LAPACK = -L$(MKL_PATH) -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread
BLACS = -L$(MKL_PATH) -lmkl_blacs_intelmpi_lp64
SCALAPACK = $(MKL_PATH)/libmkl_scalapack_lp64.a $(BLACS)
修改 OBJECTS

进入 intel 目录中的 fftw3xf 文件夹内,将之前生成的 libfftw3.intel.a 路径添加到 OBJECTS 中

1
2
3
4
OBJECTS    = fftmpiw.o fftmpi_map.o fft3dlib.o fftw3d.o\
/home/cyh/intel/mkl/interfaces/fftw3xf/libfftw3xf_intel.a

INCS =-I$(MKLROOT)/include/fftw

保存并退出 makefile.include

获取管理员权限

在 /home/vasp.5.4.4 中打开终端

1
su

确认环境变量

1
2
source /home/cyh/intel/bin/compilervars.sh intel64
source /home/cyh/intel/mkl/bin/mklvars.sh intel64

进行编译

1
2
make veryclean
make all

编译完成后在 /home/vasp.5.4.4/bin 中生成 vasp_gam, vasp_ncl 和 vasp_std

添加 vtstscripts

解压 vtstscripts 安装包

1
tar –xvzf vtstscripts.tgz

将生成的 vtstscripts-940 文件夹移动到 /home/vasp.5.4.4/ 中

添加环境变量

打开 .bashrc ,在其末尾添加

1
2
export PATH=/home/cyh/vasp.5.4.4/bin:$PATH
export PATH=/home/cyh/vasp.5.4.4/vtstscripts-940:$PATH

退出并保存 .bashrc 。再使其生效

1
source ~/.bashrc