VASP安装详解
(2014-07-31 22:30:00)
标签:
vasp第一性原理dft |
经过一个多星期的痛苦,终于将vasp编译通过了,期间经历的波折自不必说,在此总结一下VASP安装的详细过程,一来为将要或者还在为编译vasp痛苦的同志提供少许经验,二来为自己留个底,以后再编译的时候就简单了。
系统:64位ubuntu12.04
编译器:intel fortran和intel c++
数学库:intel MKL
并行软件:openmpi
傅里叶变换软件:fftw
1. 安装ubuntu12.04 详见
2. 打开终端输入:
sudo apt-get install build-essential
3. 安装编译器
(1) 从intel官网上申请下载非商业版本的编译器
https://software.intel.com/en-us/non-commercial-software-development
需要用邮箱申请一下,收到邮件后下载就行了
我现在用的版本是
l_ccompxe_2013_sp1.3.174.tgz和l_fcompxe_2013_sp1.3.174.tgz
(2) 解压缩
tar zxvf l_fcompxe_2013_sp1.3.174.tgz
tar zxvf l_ccompxe_2013_sp1.3.174.tgz
(3) 进入l_fcompxe_2013_sp1.3.174文件夹,输入
./install.sh
接下来按提示一步一步的来就行了
(4) 进入l_ccompxe_2013_sp1.3.174文件夹,输入
./install.sh
接下来按提示一步一步的来就行了
(5) 设置环境变量
在主文件夹下.bashrc中加入(用ctrl+h快捷键使得隐藏的文件显示出来):
#intel compiler
source /opt/intel/composerxe/bin/compilervars.sh intel64
export PATH=/opt/intel/composer_xe_2013_sp1.3.174/bin/intel64/:$PATH
#intel mkl
export LD_LIBRARY_PATH=/opt/intel/composer_xe_2013_sp1.3.174/mkl/lib/intel64/:$LD_LIBRARY_PATH
(6) 测试
终端中输入which ifort和which icc看能否给出路径
4. 安装openmpi
(1) 解压缩openmpi-1.8.1.gz
tar zxvf openmpi-1.8.1.gz
(2) 进入openmpi-1.8.1文件夹,输入
./configure CC=icc CXX=icpc F77=ifort FC=ifort --prefix=/home/zx/programs/openmpi
make
make install
(3) 设置环境变量
在主文件夹下.bashrc中加入:
#openmpi
if [ -f /opt/intel/composerxe/bin/compilervars.sh ]
fi
5. 安装fftw
(1) 解压缩fftw-3.3.4.gz
tar zxvf fftw-3.3.4.gz
(2) 打开fftw-3.3.4文件夹,在终端中输入:
./configure --prefix=/home/zx/programs/fftw GCC=ifort F77=ifort --enable-mpi
make
make install
6. 安装VASP库
(1) 解压缩vasp.5.lib.tar.gz
tar zxvf vasp.5.lib.tar.gz
(2) 进入vasp.5.lib文件夹
打开makefile.linux_ifc_P4,将FC=ifc修改为FC=ifort
(3) 在终端中输入
make -f makefile.linux_ifc_P4
得到libdmy.a
7. VASP并行编译
(1) 解压缩vasp.5.2.12.tar.gz
tar zxvf vasp.5.2.12.tar.gz
(2) 进入vasp.5.2文件夹,修改makefile.linux_ifc_P4(文章最后是我的makefile.linux_ifc_P4,修改的地方用红色标出了)
(3) 修改完后在终端输入make -f makefile.linux_ifc_P4即可以得到vasp的可执行文件
(4) 把vasp可执行文件考到计算的文件夹中,输入
mpirun -n 8 ./vasp
即可以算了,如果出现段错误,可以在.bashrc中加入ulimit -s unlimited
下面是我的makefile.linux_ifc_P4
# all CPP processed fortran files have the extension .f90
SUFFIX=.f90
#-----------------------------------------------------------------------
# fortran compiler and linker
#-----------------------------------------------------------------------
FC=ifort
# fortran linker
FCL=$(FC)
#-----------------------------------------------------------------------
# whereis CPP ?? (I need CPP, can't use gcc with proper options)
# that's the location of gcc for SUSE 5.3
#
#
#
# that's probably the right line for some Red Hat distribution:
#
#
#
#
CPP_ =
#-----------------------------------------------------------------------
# possible options for CPP:
# NGXhalf
# wNGXhalf
# avoidalloc
# PGF90
# CACHE_SIZE
# RPROMU_DGEMV
# RACCMU_DGEMV
# tbdyn
#-----------------------------------------------------------------------
CPP
#
#-----------------------------------------------------------------------
# general fortran flags
# byterecl is strictly required for ifc, since otherwise
# the WAVECAR file becomes huge
#-----------------------------------------------------------------------
FFLAGS =
#-----------------------------------------------------------------------
# optimization
# we have tested whether higher optimisation improves performance
# -axK
#
#
# -xW
# -axW
# -tpp6 P3 optimization
# -tpp7 P4 optimization
#-----------------------------------------------------------------------
# ifc.9.1, ifc.10.1 recommended
OFLAG=-O2 -ip -ftz
OFLAG_HIGH = $(OFLAG)
OBJ_HIGH =
OBJ_NOOPT =
DEBUG
INLINE = $(OFLAG)
#-----------------------------------------------------------------------
# the following lines specify the position of BLAS
# VASP works fastest with the libgoto library
# so that's what we recommend
#-----------------------------------------------------------------------
# mkl.10.0
# set -DRPROMU_DGEMV
#BLAS=-L/opt/intel/mkl100/lib/em64t -lmkl -lpthread
BLAS=-L/opt/intel/composer_xe_2013_sp1.3.174/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential -lpthread
# even faster for VASP Kazushige Goto's BLAS
# http://www.cs.utexas.edu/users/kgoto/signup_first.html
# parallel goto version requires sometimes -libverbs
#BLAS=
# LAPACK, simplest use vasp.5.lib/lapack_double
#LAPACK= ../vasp.5.lib/lapack_double.o
# use the mkl Intel lapack
LAPACK=-L/opt/intel/composer_xe_2013_sp1.3.174/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential -lpthread
#-----------------------------------------------------------------------
LIB
# options for linking, nothing is required (usually)
LINK
#-----------------------------------------------------------------------
# fft libraries:
# VASP.5.2 can use fftw.3.1.X (http://www.fftw.org)
# since this version is faster on P4 machines, we recommend to use it
#-----------------------------------------------------------------------
#FFT3D
# alternatively: fftw.3.1.X is slighly faster and should be used if available
FFT3D
#=======================================================================
# MPI section, uncomment the following lines until
#
# presently we recommend OPENMPI, since it seems to offer better
# performance than lam or mpich
#
# !!! Please do not send me any queries on how to install MPI, I will
# certainly not answer them !!!!
#=======================================================================
#-----------------------------------------------------------------------
# fortran linker for mpi
#-----------------------------------------------------------------------
FC=mpif90
FCL=$(FC)
#-----------------------------------------------------------------------
# additional options for CPP in parallel version (see also above):
# NGZhalf
# wNGZhalf
# scaLAPACK
# avoidalloc
# PGF90
# CACHE_SIZE
# RPROMU_DGEMV
# RACCMU_DGEMV
# tbdyn
#-----------------------------------------------------------------------
#-----------------------------------------------------------------------
CPP
##
#-----------------------------------------------------------------------
# location of SCALAPACK
# if you do not use SCALAPACK simply leave that section commented out
#-----------------------------------------------------------------------
BLACS=$(HOME)/archives/SCALAPACK/BLACS/
SCA_=$(HOME)/archives/SCALAPACK/SCALAPACK
SCA= $(SCA_)/libscalapack.a
SCA=
#-----------------------------------------------------------------------
# libraries for mpi
#-----------------------------------------------------------------------
LIB
# FFT: fftmpi.o with fft3dlib of Juergen Furthmueller
#FFT3D
# alternatively: fftw.3.1.X is slighly faster and should be used if available
FFT3D
#-----------------------------------------------------------------------
# general rules and compile lines
#-----------------------------------------------------------------------
BASIC=
SOURCE=
vasp: $(SOURCE) $(FFT3D) $(INC) main.o
makeparam: $(SOURCE) $(FFT3D) makeparam.o main.F $(INC)
zgemmtest: zgemmtest.o base.o random.o $(INC)
dgemmtest: dgemmtest.o base.o random.o $(INC)
ffttest: base.o smart_allocate.o mpi.o mgrid.o random.o ffttest.o $(FFT3D) $(INC)
kpoints: $(SOURCE) $(FFT3D) makekpoints.o main.F $(INC)
clean:
main.o: main$(SUFFIX)
xcgrad.o: xcgrad$(SUFFIX)
xcspin.o: xcspin$(SUFFIX)
makeparam.o: makeparam$(SUFFIX)
makeparam$(SUFFIX): makeparam.F main.F
#
# MIND: I do not have a full dependency list for the include
# and MODULES: here are only the minimal basic dependencies
# if one strucuture is changed then touch_dep must be called
# with the corresponding name of the structure
#
base.o: base.inc base.F
mgrid.o: mgrid.inc mgrid.F
constant.o: constant.inc constant.F
lattice.o: lattice.inc lattice.F
setex.o: setexm.inc setex.F
pseudo.o: pseudo.inc pseudo.F
poscar.o: poscar.inc poscar.F
mkpoints.o: mkpoints.inc mkpoints.F
wave.o: wave.F
nonl.o: nonl.inc nonl.F
nonlr.o: nonlr.inc nonlr.F
$(OBJ_HIGH):
$(OBJ_NOOPT):
fft3dlib_f77.o: fft3dlib_f77.F
.F.o:
.F$(SUFFIX):
$(SUFFIX).o:
# special rules
#-----------------------------------------------------------------------
# these special rules are cummulative (that is once failed
#
# -tpp5|6|7 P, PII-PIII, PIV
# -xW use SIMD (does not pay of on PII, since fft3d uses double prec)
# all other options do no affect the code performance since -O1 is used
fft3dlib.o : fft3dlib.F
fft3dfurth.o : fft3dfurth.F
fftw3d.o : fftw3d.F
wave_high.o : wave_high.F
radial.o : radial.F
symlib.o : symlib.F
symmetry.o : symmetry.F
wave_mpi.o : wave_mpi.F
wave.o : wave.F
dynbr.o : dynbr.F
asa.o : asa.F
broyden.o : broyden.F
us.o : us.F
LDApU.o : LDApU.F