|
本帖最后由 youyno 于 2016-10-24 22:00 编辑
VASP的编译对于初学者来说一直是一个比较头疼的问题,到底该用什么库,用了这个库其他的库用不用?等等一系列的问题总是缠绕在编译者的心头。为了解决这一问题,让初学者接触vasp不再困难,在这里通过安装前的准备,环境变量的配置,程序编译,脚本的写法一步步从头教你。同时为了让你的安装不再困难,我已将本文涉及的全部文件打包上传到百度云中,想要成功地按照要求编译出VASP的同行一定要以这个文件夹内的压缩包为准,我不保证其他版本的相关程序能够成功编译,如我用ifort.13用同样的方法就没有办法编译出来,openmpi1.8.5也无法编译成功。下载地址http://pan.baidu.com/s/1pLhINQb
注意本次安装所用的所有压缩包都可以使用tar zvxf 进行解压
系统环境 Centos 6.6 64位
一、VASP安装环境的配置
A、intel编译器和MKL的安装
将l_fcompxe_2011.6.233.tgz和l_fcompxe_2011.6.233.tgz分别解压,
分别进入文件夹执行./install.sh
选择以当前用户安装
其他的选项为默认,在选择license时,以license文件进行验证,在需要输入路径的地方,输入zwt.lic文件的路径,
将两个包都安装成功之后,在~./bashrc文件中加入如下环境变量后执行source ~/.bashrc使之生效
source /export/home/cluser1/intel/composerxe/bin/compilervars.sh intel64
export PATH=/export/home/cluser1/intel/composerxe/bin:$PATH
export LD_LIBRARY_PATH=/export/home/cluser1/intel/composerxe/mkl/lib/intel64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/export/home/cluser1/intel/lib/intel64:$LD_LIBRARY_PATH
注意,/export/home/cluser1是当前用户的根目录,大家根据自己的实际情况修改,下同。
执行命令which ifort看是否打印出安装路径用以判断安装或环境变量设置成功与否
B、openmpi-1.6.5的安装
解压在文件夹内的openmpi压缩包,进入文件夹执行如下命令配置makefile
./configure --prefix=安装目录 CC=icc CXX=icpc F77=ifort FC=ifort
执行命令make -j8调用八核进行编译用以加快编译速度,直接用make单核编译可能超过1小时。
执行命令make install完成安装
在~./bashrc文件中加入如下环境变量后执行source ~/.bashrc使之生效:
export PATH=/export/home/cluser1/openmpi-1.6.5-intel-v12.1.5/bin:$PATH
export LD_LIBRARY_PATH=/export/home/cluser1/openmpi-1.6.5-intel-v12.1.5/lib:$LD_LIBRARY_PATH
export MANPATH=/export/home/cluser1/openmpi-1.6.5-intel-v12.1.5/share/man:$MANPATH执行命令which mpif90看是否打印出安装路径用以判断安装或环境变量设置成功与否
C、fftw-3.3.4的安装
解压文件夹中的fftw-3.3.4压缩包,进入文件夹执行如下命令配置makefile
./configure --prefix=安装目录 --enable-mpi
注意,一定要加--enable-mpi否则在安装好的lib文件夹内无法生成此次编译VASP所必须的libfftw3_mpi.a文件
执行命令make,随后make install安装完成。
在~./bashrc文件中加入如下环境变量后执行source ~/.bashrc使之生效:
export PATH=/export/home/cluser1/fftw/bin:$PATH
export LD_LIBRARY_PATH=/export/home/cluser1/fftw/lib:$LD_LIBRARY_PATH
至此VASP安装前的准备工作已经完成,其实走到这里如果没有出错的话,你的编译就已经成功了80%,因为VASP-5.4.1的版本相比以前有了很大程度的优化
二、VASP的编译
在同一文件夹内解压vasp.5.4.1.tar.gz和vasp.5.lib_.tar_2.gz
得到vasp.5.4.1和vasp.5.lib
进入到vasp.5.4.1中
将下载的文件夹中名为makefile.include的文件拷入,其内容为:
# Precompiler options
#CPP_OPTIONS= -DMPI -DHOST=\"IFC91_ompi\" -DIFC \
-DCACHE_SIZE=4000 -DPGF90 -Davoidalloc \
-DMPI_BLOCK=8000 -DscaLAPACK -Duse_collective \
-DnoAugXCmeta -Duse_bse_te \
-Duse_shmem -Dtbdyn
CPP_OPTIONS= -DMPI -DHOST=\"LinuxIFC\" -DIFC \
-DCACHE_SIZE=8000 -DPGF90 -Davoidalloc \
-DMPI_BLOCK=8000 -DscaLAPACK -Duse_collective \
-DnoAugXCmeta -Duse_bse_te \
-Duse_shmem -Dtbdyn -DRPROMU_DGEMV -DRACCMU_DGEMV
CPP = fpp -f_com=no -free -w0 $*$(FUFFIX) $*$(SUFFIX) $(CPP_OPTIONS)
FC = mpif90
FCL = mpif90 -mkl
FREE = -free -names lowercase
#FFLAGS = -assume byterecl
FFLAGS = -assume byterecl -FR -heap-arrays
#OFLAG = -O2
OFLAG = -O1 -ip
OFLAG_IN = $(OFLAG)
#DEBUG = -O0
DEBUG = -O0 -FR
MKLROOT =/export/home/cluser1/intel/mkl
MKL_PATH = $(MKLROOT)/lib/intel64
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 = -lmkl_blacs_openmpi_lp64
BLACS =-L$(MKL_PATH) -lmkl_blacs_openmpi_lp64
SCALAPACK = $(MKL_PATH)/libmkl_scalapack_lp64.a $(MKL_PATH)/libmkl_scalapack_ilp64.a $(BLACS)
#OBJECTS = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o \
$(MKLROOT)/interfaces/fftw3xf/libfftw3xf_intel.a
OBJECTS = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o /export/home/cluser1/fftw/lib/libfftw3_mpi.a
INCS =-I/export/home/cluser1/fftw/include
LLIBS = $(SCALAPACK) $(LAPACK) $(BLAS)
OBJECTS_O1 += fft3dfurth.o 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
# Normally no need to change this
SRCDIR = ../../src
BINDIR = ../../bin
注意,上述内容是根据我安装程序的目录所设置的,所以有以下几条路径大家要根据自己的实际情况进行修改
MKLROOT =/export/home/cluser1/intel/mkl
OBJECTS = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o /export/home/cluser1/fftw/lib/libfftw3_mpi.a
INCS =-I/export/home/cluser1/fftw/include
如果你根据自己的安装情况这三个路径都找不到,那你也就告别VASP了。
另外,上述文件是我参考其他帖子进行修改得到的,最大的修改部分就是
BLACS =-L$(MKL_PATH) -lmkl_blacs_openmpi_lp64
的原始设置是
BLACS =-L$(MKL_PATH) -lmkl_blacs_intel_lp64 -lmkl_blacs_openmpi_lp64
以原始设置虽然也能够编译出vasp,但是编译后没有办法正常运行的。
在这一切都修改好,准备就绪后,在vasp.5.4.1文件夹中执行命令
make all
大概30分钟左右会完成编译,在bin文件夹中会生成三个可执行文件
vasp_gam /gamma版本的vasp
vasp_std /标准版本的vasp
vasp_ncl /非线性版本的vasp
至此vasp的编译工作全部完成。
注意到和以往版本vasp的编译不同,这里没有进入到vasp.5.lib进行编译,其实这是vasp开发者为了使用者安装方便,将这一步骤已经糅合进make all的步骤之中。
三、vasp脚本的编写
如下是torque集群上运行的脚本vasp.sh
#!/bin/bash
#PBS -q batch
#PBS -N vasp
#PBS -l nodes=1:ppn=4
#PBS -j oe
#PBS -V
#PBS -l walltime=1500:00:00
export
LD_LIBRARY_PATH=/export/home/cluser1/intel/composerxe/mkl/lib/intel64:$LD_LIB
RARY_PATH
source /export/home/cluser1/intel/composerxe/bin/compilervars.sh intel64
export PATH=/export/home/cluser1/intel/composerxe/bin:$PATH
export
LD_LIBRARY_PATH=/export/home/cluser1/intel/composerxe/mkl/lib/intel64:$LD_LIB
RARY_PATH
export
LD_LIBRARY_PATH=/export/home/cluser1/intel/lib/intel64:$LD_LIBRARY_PATH
export PATH=/export/home/cluser1/openmpi-1.6.5-intel-v12.1.5/bin:$PATH
export
LD_LIBRARY_PATH=/export/home/cluser1/openmpi-1.6.5-intel-v12.1.5/lib:$LD_LIBR
ARY_PATH
export
MANPATH=/export/home/cluser1/openmpi-1.6.5-intel-v12.1.5/share/man:$MANPAT
H
cd $PBS_O_WORKDIR
EXEC=/export/home/cluser1/VASP/vasp.5.4.1/bin/vasp_gam
LOG_FILE=vasptest.log
NP=`cat $PBS_NODEFILE | wc -l`
NN=`cat $PBS_NODEFILE | sort | uniq | tee /tmp/nodes.$$ | wc -l`
cat $PBS_NODEFILE > /tmp/nodefile.$$
mpirun -n $NP $EXEC
rm -f /tmp/nodefile.$$
相关路径,请根据实际情况进行修改,这个脚本既可以用于执行命令./vasp.sh&直接在当前机器上提交任务,也可以通过Torque任务管理系统用命令qsub vasp.sh提交。
祝大家好运,一次编译成功!
|
评分 Rate
-
查看全部评分 View all ratings
|