vasp安装

博客分类: knowledge

vasp安装

记录VASP的编译过程,方便自己使用。

在linux中安装vasp6.3.2 intel并行版本 (包括py4vasp)

安装intel-oneapi以及hpc

这里直接通过包管理安装.

注意, 需要有root权限

以下为基于Debian系的apt的安装方法. 由于CentOS已经放弃支持, 建议使用Ubuntu作为linux发行版, 比较简单.

可以通过以下网址查看官方安装教程intel oneapi base toolkit installation guide

  1. 安装依赖
sudo apt update
sudo apt install -y gpg-agent wget
  1. 添加秘钥, 设置存储库
wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null
  1. 添加存储库
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
  1. 更新源
sudo apt update
  1. 下载安装intel oneapi base toolkit
sudo apt install intel-basekit
  1. 下载安装intel HPC toolkit

可以通过以下网址查看官方安装教程intel oneapi HPC toolkit installation guide

这里存储库已经设置过了, 可以跳过前面的步骤, 直接apt就可以了

 sudo apt install intel-hpckit
  1. 设置环境变量

    intel oneapi的默认安装位置在/opt/intel/oneapi

source /opt/intel/oneapi/setvars.sh

注意: 以上设置的环境变量是临时的, 想让他永久生效, 将上面这句话加入到自己的环境里.

vim ~/.bashrc
# 把source /opt/intel/oneapi/setvars.sh加入到文件中, 退出vim
source ~/.bashrc

(可选)安装hdf5

hdf5不是编译vasp必须的, 但是要使用py4vasp必须使用这个库. 建议编译两版, 一般不含hdf5库, 一版含hdf5库.

  1. 下载

    Release HDF5 Release 1.14.4.3 · HDFGroup/hdf5 (github.com)

    在以上网址下载hdf5-X.Y.Z-T.tar.gz

  2. 解压

上传文件至服务器

tar -zvxf hdf5*.tar.gz
  1. 安装
cd hdf5*
sudo mkdir /opt/local/hdf5
sudo mkdir /opt/local/hdf5/1.14.4.3 #按照自己的版本设置
CC=icx FC=ifx CXX=icpx ./configure --prefix=/opt/local/hdf5/1.14.4.3 --enable-fortran --enable-cxx
 # 我的习惯安装在/opt, 并且前面加上版本号方便多版本共存和切换
 # 这里用之前安装的intel套件进行编译
make -j40 #根据计算机线程数改变数值
make check -j40
make install -j40
make check-install -j40

注意: 如果make过程中出现错误, 先执行

make clean

再重新尝试.

编译过程中出现权限问题, 给自己加上/opt/local/hdf5/1.14.4.3文件夹的权限, 或者切换到root用户进行编译.

编译VASP

  1. 切换到root用户
sudo su root
  1. 设置环境变量

    此时变成了root用户,需要重新设置环境变量, 这里最好临时设置.

source /opt/intel/oneapi/setvars.sh
  1. 设置makefile

    (假设已经进入vasp源码的根目录)

cp ./arch/makefile.include.intel ./makefile.include
vim makefile.include

注意: 新版本oneapi已经移除了icc等套件, 所以需要在makefile.include中进行如下修改:

  • icc -> icx
  • icpc -> icpx
  • mpiifort -> mpiifx

MKLROOT ?= /path/to/your/mkl/installation修改为之前安装的位置

MKLROOT    ?= /opt/intel/oneapi/mkl

(可选, 在编译hdf5版本时需要)将

# HDF5-support (optional but strongly recommended)
#CPP_OPTIONS+= -DVASP_HDF5
#HDF5_ROOT  ?= /path/to/your/hdf5/installation
#LLIBS      += -L$(HDF5_ROOT)/lib -lhdf5_fortran
#INCS       += -I$(HDF5_ROOT)/include

修改为

# HDF5-support (optional but strongly recommended)
CPP_OPTIONS+= -DVASP_HDF5
HDF5_ROOT  ?= /opt/local/hdf5/1.14.4.3
LLIBS      += -L$(HDF5_ROOT)/lib -lhdf5_fortran
INCS       += -I$(HDF5_ROOT)/include

最后文件长这样

# Default precompiler options
CPP_OPTIONS = -DHOST=\"LinuxIFC\" \
              -DMPI -DMPI_BLOCK=8000 -Duse_collective \
              -DscaLAPACK \
              -DCACHE_SIZE=4000 \
              -Davoidalloc \
              -Dvasp6 \
              -Duse_bse_te \
              -Dtbdyn \
              -Dfock_dblbuf

CPP         = fpp -f_com=no -free -w0  $*$(FUFFIX) $*$(SUFFIX) $(CPP_OPTIONS)

FC          = mpiifx
FCL         = mpiifx

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      = icx
CFLAGS_LIB  = -O
FFLAGS_LIB  = -O1
FREE_LIB    = $(FREE)

OBJECTS_LIB = linpack_double.o

# For the parser library
CXX_PARS    = icpx
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 ?= -xHOST
FFLAGS     += $(VASP_TARGET_CPU)

# Intel MKL (FFTW, BLAS, LAPACK, and scaLAPACK)
# (Note: for Intel Parallel Studio's MKL use -mkl instead of -qmkl)
FCL        += -qmkl=sequential
MKLROOT    ?= /opt/intel/oneapi/mkl
LLIBS      += -L$(MKLROOT)/lib/intel64 -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64
INCS        =-I$(MKLROOT)/include/fftw

# HDF5-support (optional but strongly recommended)
CPP_OPTIONS+= -DVASP_HDF5
HDF5_ROOT  ?= /opt/local/hdf5/1.14.4.3
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

注意: 编译非hdf5版本时把HDF5那几行注释掉

  1. 编译
make all

注意: 这里不要加-j,会出错

注意: 编译出错时先执行make veryclean清理之前的编译中间文件

  1. (可选)版本管理

注意: 以下操作是个人习惯, 也可以不做.

对于非hdf5版本

cd bin
cp vasp_gam /opt/bin/vasp/vasp_gam
cp vasp_std /opt/bin/vasp/vasp_std
cp vasp_ncl /opt/bin/vasp/vasp_ncl

对于hdf5版本

cd bin
cp vasp_gam /opt/bin/vasp/vasp_gam_h5
cp vasp_std /opt/bin/vasp/vasp_std_h5
cp vasp_ncl /opt/bin/vasp/vasp_ncl_h5

这样就能同时使用两个版本的vasp

  1. 设置路径

vasp可执行文件所在位置加入.bashrc

echo 'export PATH=/opt/bin/vasp/:$PATH' >> ~/.bashrc
source ~/.bashrc

(可选)把hdf5要使用的链接库加入.bashrc

echo 'export LD_LIBRARY_PATH=/opt/local/hdf5/1.14.4.3/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

对于有经验的人, 直接修改.bashrc文件就行了

(可选)安装py4vasp

  1. 安装conda

图省事直接装anaconda

[Download Anaconda Distribution Anaconda](https://www.anaconda.com/download)

旁边要注册, 直接skip registration

下载对应版本, 应该是一个sh文件. 上传到服务器上, 然后

bash *.sh

等待安装完毕.

注意: 具体的安装过程这里就不做了, 下次自己在安装时再写详细攻略~

  1. 新建环境
conda create -n vasp python=3.11 #pyrhon版本大于等于3.9比较好

等命令执行完

conda activate vasp
  1. 安装
pip install py4vasp
conda install -c conda-forge mdtraj
pip install py4vasp
  1. 测试
python -c "import py4vasp; print(py4vasp.__version__)"

如果正确输出版本则说明安装成功