最近拿到组里购买的版本6.1.1
的VASP(Vienna Ab initio Simulation Package). 由于其具有的一些新的功能,特别是在机器学习力场和电声耦合计算,支持OpenMP和MPI混编有利于提高内存使用效率,同时配合支持OpenACC的GPU加速可以使得对于大规模并行加速明显。
下面列出VASP6版本的有一些重大的更新[1]:
对新版vasp做的测试
其中了解一下VASP的目录分布
markdown vasp.X.X.X (root directory)
|
------------------------------------------------
| | | | | |
arch bin build src testsuite tools
* `root/`
Holds the high-level makefile and several subdirectories.
* `root/src`
Holds the source files of VASP and a low-level makefile.
* `root/arch`
Holds a collection of `makefile.include.*` files.
* `root/build`
The different versions of VASP, i.e., the standard, gamma-only,
non-collinear, and CUDA-GPU versions will be build in separate
subdirectories of this directory.
* `root/bin`
Here make will store the binaries.
* `root/testsuite`
Holds a suite of correctness tests to check your build.
* `root/tools`
Holds several python scripts related to the (optional) use
of HDF5 input/output files.
和之前使用的5.4.4
版本编译情况相似,从arch/
文件中拷贝出适用于自己服务器或者个人电脑的makefile.include
。我们组服务器上的环境让我选择的是makefile.include.linux_intel
,并且拷贝到上一级目录也就是解压后VASP的根目录更名为makefile.include
。
修改makefile.include
文件,以下是我根据自己组里的服务器的环境所修改的[2]
makefile# 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 = mpiifort
FCL = mpiifort -mkl=sequential
FREE = -free -names lowercase
FFLAGS = -assume byterecl -w -xHOST
OFLAG = -O2
OFLAG_IN = $(OFLAG)
DEBUG = -O0
# 自己mkl的根目录
MKLROOT =/opt/intel2019/compilers_and_libraries_2019.5.281/linux/mkl
MKL_PATH = $(MKLROOT)/lib/intel64
BLAS =
LAPACK =
BLACS = -lmkl_blacs_intelmpi_lp64
SCALAPACK = $(MKL_PATH)/libmkl_scalapack_lp64.a $(BLACS)
OBJECTS = fftmpiw.o fftmpi_map.o fft3dlib.o fftw3d.o
INCS =-I$(MKLROOT)/include/fftw
LLIBS = $(SCALAPACK) $(LAPACK) $(BLAS)
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 getshmem.o
# For the parser library
CXX_PARS = icpc
LLIBS += -lstdc++
# Normally no need to change this
SRCDIR = ../../src
BINDIR = ../../bin
#================================================
# GPU Stuff
CPP_GPU = -DCUDA_GPU -DRPROMU_CPROJ_OVERLAP -DUSE_PINNED_MEMORY -DCUFFT_MIN=28 -UscaLAPACK -Ufock_dblbuf
OBJECTS_GPU= fftmpiw.o fftmpi_map.o fft3dlib.o fftw3d_gpu.o fftmpiw_gpu.o
CC = icc
CXX = icpc
CFLAGS = -fPIC -DADD_ -Wall -qopenmp -DMAGMA_WITH_MKL -DMAGMA_SETAFFINITY -DGPUSHMEM=300 -DHAVE_CUBLAS
# 自己的cuda目录位置
CUDA_ROOT ?= /usr/local/cuda
NVCC := $(CUDA_ROOT)/bin/nvcc -ccbin=icc
CUDA_LIB := -L$(CUDA_ROOT)/lib64 -lnvToolsExt -lcudart -lcuda -lcufft -lcublas
GENCODE_ARCH := -gencode=arch=compute_30,code=\"sm_30,compute_30\" \
-gencode=arch=compute_35,code=\"sm_35,compute_35\" \
-gencode=arch=compute_60,code=\"sm_60,compute_60\" \
-gencode=arch=compute_70,code=\"sm_70,compute_70\" \
-gencode=arch=compute_72,code=\"sm_72,compute_72\"
MPI_INC = /opt/intel2019/compilers_and_libraries_2019.5.281/linux/mpi/intel64/include
然后执行make
或者make all
即可编译得到vasp_gam
、vasp_std
、vasp_ncl
和vasp_gpu
、vasp_gpu_ncl
。其中后两个可以通过GPU加速的,且只有在某些情况才能支持[3]。
[3] GPU port of VASP
本文作者:sbyu
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!