vasp编译
初学VASP(七)VASP程序的编译

初学VASP(七) VASP程序的编译下面以编译VASP4.4.5版本为例,编译更新的版本VASP4.5.5、VASP4.6和VASP5.0(即将发布)的步骤与此相同。
1、所需文件和程序VASP源代码:vasp.4.4.5.tar.gz和vasp.4.lib.tar.gz数学库:LAPACK和BLAS (/,或mkl(配合intel的fotran编译器用),或ATLAS (/或Lib GOTO (/users/flame/goto/Fortran编译器:PGI fortran 至少4.0以上版本(/,或Intel的 ifc (8.0以上版本是ifort,/software/products/compilers/flin/,前者可以从网站上下载到15天的试用版本,后者可以从网站下载到免费的版本。
2、下面采用PGI fortan编译器pgf90、ATLAS数学库对VASP4.4.5进行编译这里假定已经安装好了fortran编译器,所有文件都放在/home/xxxx/VASP_SRC目录下,机器的操作系统是Linux: Redhat9.0。
a) 从/下载atlas3.6.0_Linux_P4SSE2.tar.gz,并用如下命令解压:tar xzvf atlas3.6.0_Linux_P4SSE2.tar.gz解压后得到一个目录Linux_P4SSE2,在此目录下有个lib子目录,该lib子目录中的文件为libatlas.a, libcblas.a, libf77blas.a, liblapack.a, 这些就是编译vasp时所需要的数学库文件之一。
b) 用如下命令解压vasp.4.4.5.tar.gz和vasp.4.lib.tar.gz:tar xzvf vasp.4.4.5.tar.gztar xzvf vasp.4.lib.tar.gz解压后分别得到目录vasp.4.4和vasp.4.lib,目录vasp.4.4中文件是vasp的主要源代码,vasp.4.lib是编译vasp时需要的一些特定的数学库程序,在这两个目录中都有编译时所用的makefile文件,针对机器和fortran编译器,选择相应的makefile。
初学VASP(七)VASP程序的编译

初学VASP(七) VASP程序的编译下面以编译VASP4.4.5版本为例,编译更新的版本VASP4.5.5、VASP4.6和VASP5.0(即将发布)的步骤与此相同。
1、所需文件和程序VASP源代码:vasp.4.4.5.tar.gz和vasp.4.lib.tar.gz数学库:LAPACK和BLAS (/,或mkl(配合intel的fotran编译器用),或ATLAS (/或Lib GOTO (/users/flame/goto/Fortran编译器:PGI fortran 至少4.0以上版本(/,或Intel的 ifc (8.0以上版本是ifort,/software/products/compilers/flin/,前者可以从网站上下载到15天的试用版本,后者可以从网站下载到免费的版本。
2、下面采用PGI fortan编译器pgf90、ATLAS数学库对VASP4.4.5进行编译这里假定已经安装好了fortran编译器,所有文件都放在/home/xxxx/VASP_SRC目录下,机器的操作系统是Linux: Redhat9.0。
a) 从/下载atlas3.6.0_Linux_P4SSE2.tar.gz,并用如下命令解压:tar xzvf atlas3.6.0_Linux_P4SSE2.tar.gz解压后得到一个目录Linux_P4SSE2,在此目录下有个lib子目录,该lib子目录中的文件为libatlas.a, libcblas.a, libf77blas.a, liblapack.a, 这些就是编译vasp时所需要的数学库文件之一。
b) 用如下命令解压vasp.4.4.5.tar.gz和vasp.4.lib.tar.gz:tar xzvf vasp.4.4.5.tar.gztar xzvf vasp.4.lib.tar.gz解压后分别得到目录vasp.4.4和vasp.4.lib,目录vasp.4.4中文件是vasp的主要源代码,vasp.4.lib是编译vasp时需要的一些特定的数学库程序,在这两个目录中都有编译时所用的makefile文件,针对机器和fortran编译器,选择相应的makefile。
VASP5.4编译过程说明

V ASP5.4编译1.编译器安装:parallel_studio_xe_2011_sp1_update2_intel64.tgz解压安装即可,./install.sh:安装中使用的激活码为L3FN-2VRGKX7K安装完设置环境变量:For csh/tcsh:$ source install-dir/bin/compilervars.csh intel64For bash:$ source install-dir/bin/compilervars.sh intel64测试是否成功:which icc/opt/intel/composer_xe_2011_sp1.9.293/bin/intel64/iccwhich ifort/opt/intel/composer_xe_2011_sp1.9.293/bin/intel64/ifort2.安装openmpi:openmpi-1.4.5.tar.gz解压,然后输入./configure CC=icc CXX=icpc F77=ifort FC=ifort 指定编译器之后依次执行make,make install安装完成后,加入如下三个环境变量:export PATH=/usr/local/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/lib/openmpi:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH具体路径找自己的,其中少了第三个路径的话可以编译文件,但是运行编译后的文件会说找不到库函数。
建议安装完成之后进入解压文件夹(不是安装目录)下的example文件夹中测试程序,输入make之后会自动编译,完成之后输入mpirun –np 8 hello_f90,如果安装正确,会出现:Hello, world, I am 0 of 8Hello, world, I am 1 of 8Hello, world, I am 2 of 8Hello, world, I am 3 of 8Hello, world, I am 4 of 8Hello, world, I am 5 of 8Hello, world, I am 6 of 8Hello, world, I am 7 of 88是服务器的cpu数量。
VASP5.4编译过程说明

VASP5.4编译过程说明V ASP5.4编译1.编译器安装:parallel_studio_xe_2011_sp1_update2_intel64.tgz解压安装即可,./install.sh:安装中使用的激活码为L3FN-2VRGKX7K安装完设置环境变量:For csh/tcsh:$ source install-dir/bin/compilervars.csh intel64For bash:$ source install-dir/bin/compilervars.sh intel64测试是否成功:which icc/opt/intel/composer_xe_2011_sp1.9.293/bin/intel64/iccwhich ifort/opt/intel/composer_xe_2011_sp1.9.293/bin/intel64/ifort2.安装openmpi:openmpi-1.4.5.tar.gz解压,然后输入./configure CC=icc CXX=icpc F77=ifort FC=ifort 指定编译器之后依次执行make,make install安装完成后,加入如下三个环境变量:export PATH=/usr/local/bin:$PATHexportLD_LIBRARY_PATH=/usr/local/lib/openmpi:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH 具体路径找自己的,其中少了第三个路径的话可以编译文件,但是运行编译后的文件会说找不到库函数。
建议安装完成之后进入解压文件夹(不是安装目录)下的example文件夹中测试程序,输入make之后会自动编译,完成之后输入mpirun –np 8 hello_f90,如果安装正确,会出现:Hello, world, I am 0 of 8Hello, world, I am 1 of 8Hello, world, I am 2 of 8Hello, world, I am 3 of 8Hello, world, I am 4 of 8Hello, world, I am 5 of 8Hello, world, I am 6 of 8Hello, world, I am 7 of 88是服务器的cpu数量。
vasp简易说明

vasp简易说明3, Xming用gnuplot是gnu文件里面要加pause -14,INCAR 字符太长,vasp_lib里面要改drdatab.F文件,255改大,重新编译5 声子谱:phononp –d –dim=”3 3 1”6 vasp编译gama版本的:在第二个CPP加上-DwNGZhalf就行。
7 ISMEAR=-5,电荷密度和DOS之类的电子结构和总能准,但是算力不准,所以对于算声子谱,最好不用-5。
对于金属,声子谱一般用DFPT会更准。
对于半导体和绝缘体,不能用ISEMAR>0的,只能是-5或者0.对于金属,ISMEAR=1,sigma=0.28 DFPT不能用NPAR phonopy -d --dim="2 2 2" -c POSCAR-unitcellmv SPOSCAR POSCAR静态计算:IBRION=8,IALGO=38对于金属ISMEAR=1,sigma=0.2phonopy --fc vasprun.xmlband.conf里面要添加:FORCE_CONSTANTS = READphonopy -p -c POSCAR-unitcell band.conf一般来说,对于金属,或者窄能隙半导体,如果用位移法,则需要很大的胞才能算准,但是用DFPT则可以小包算准。
对于金属,PBE 可能更好点。
9, 如果体系较大,EDIFF达到停止计算,很可能是K点取太多,内存不够。
10, bandplot --gnuplot band.yaml >> phon.dat,用origin做声子谱11,画 CBM和VBM的partial charge,读入静态的WAVECAR,进行处理,此时要设置INCAR,LPARD = .TRUE. 开关IBAND = 480 481 VBM CBMNBMOD = 1 默认KPUSE = 1 第几个K点LSEPB = .TRUE. vasp查LSEPK = .TRUE.12,算极化:铁电相和顺电相都要算,每一个相算三次。
VASP5.4.4编译

VASP5.4.4编译之前根据sobereva⽼师的视频写过名为的随笔,笔者亲⾃实践过,编译的也没问题,测试作业也正常,但是后来发现这样编译的vasp仍有问题,运⾏内存会不断增长,⼤概半⼩时后,mem到达了最⼤值,然后使⽤swap继续增长,mem和swap全⽤光了之后,作业直接断掉。
于是乎笔者使⽤较新的编译器(parallel_studio_xe_2020_update4_cluster_edition)试了⼀下,并参考了的makefile.include 以及使⽤了fftw,这样编译出来的vasp⽬前没出现问题。
parallel_studio_xe的安装同,然后将. /opt/intel/parallel_studio_xe_2020.4.912/psxevars.sh加⼊ /etc/profile 后重启终端,出现了Intel(R) Parallel Studio XE 2020 Update 4for Linux*Copyright 2009-2020 Intel Corporation.然后which icc ifort icpc mpiifort发现都能找的到,开始编译fftw,此处为 fftw-3.3.9./configure -prefix=/opt/fftw339 CC=icc F77=ifort MPICC=mpiicc -enable-mpimakemake install最后进⾏vasp编译,在此列出我的makefile.include供参考# Precompiler optionsCPP_OPTIONS= -DHOST=\"LinuxIFC\"\-DMPI -DMPI_BLOCK=8000 \-Duse_collective \-DscaLAPACK \-DCACHE_SIZE=4000 \-Davoidalloc \-Duse_bse_te \-Dtbdyn \-Duse_shmem\-DlibbeefCPP = fpp -f_com=no -free -w0 $*$(FUFFIX) $*$(SUFFIX) $(CPP_OPTIONS)FC = mpiifortFCL = mpiifort -mklFREE = -free -names lowercaseFFLAGS = -assume byterecl -w -heap-arrays 64OFLAG = -O2 -xhostOFLAG_IN = $(OFLAG)DEBUG = -O0MKL_PATH = /opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/BLAS =-L$(MKL_PATH) -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lmkl_blacs_intelmpi_lp64 -lmkl_scalapack_lp64LAPACK =BLACS =SCALAPACK =OBJECTS = fftmpiw.o fftmpi_map.o fft3dlib.o fftw3d.o /opt/fftw339/lib/libfftw3_mpi.aINCS =-I/opt/fftw339/includeBEEF = -L/home/zhu/software/beef/lib -lbeefLLIBS = $(SCALAPACK) $(LAPACK) $(BLAS) $(BEEF)OBJECTS_O1 += fftw3d.o fftmpi.o fftmpiw.oOBJECTS_O2 += fft3dlib.o# For what used to be vasp.5.libCPP_LIB = $(CPP)FC_LIB = $(FC)CC_LIB = iccCFLAGS_LIB = -OFFLAGS_LIB = -O1FREE_LIB = $(FREE)OBJECTS_LIB= linpack_double.o getshmem.o# For the parser libraryCXX_PARS = icpcLIBS += parserLLIBS += -Lparser -lparser -lstdc++# Normally no need to change thisSRCDIR = ../../srcBINDIR = ../../bin#================================================# GPU StuffCPP_GPU = -DCUDA_GPU -DRPROMU_CPROJ_OVERLAP -DUSE_PINNED_MEMORY -DCUFFT_MIN=28 -UscaLAPACK OBJECTS_GPU = fftmpiw.o fftmpi_map.o fft3dlib.o fftw3d_gpu.o fftmpiw_gpu.oCC = iccCXX = icpcCFLAGS = -fPIC -DADD_ -Wall -openmp -DMAGMA_WITH_MKL -DMAGMA_SETAFFINITY -DGPUSHMEM=300 -DHAVE_CUBLAS CUDA_ROOT ?= /usr/local/cuda/NVCC := $(CUDA_ROOT)/bin/nvcc -ccbin=iccCUDA_LIB := -L$(CUDA_ROOT)/lib64 -lnvToolsExt -lcudart -lcuda -lcufft -lcublasGENCODE_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\"MPI_INC = $(I_MPI_ROOT)/include64/PS:笔者控制变量,将PSXE2020换成PSXE2019,还是会出现之前的问题,并没有测试使⽤fftw与否的影响。
vasp.5.2编译过程

Vasp.5.2编译⒈正常安装ifort编辑器(如vasp.4.6安装过程)修改环境变量# .bashrc# User specific aliases and functions# Source global definitionsif [ -f /etc/bashrc ]; then. /etc/bashrc#IFORT=/home/usr1/intel/PATH="/home/usr1/intel/fce/9.0/bin":${PATH}PATH="/home/usr1/intel/idbe/9.0/bin":${PATH}export PATHMANPATH="/home/usr1/intel/fce/9.0/man":${MANPATH}MANPATH="/home/usr1/intel/idbe/9.0/man":${MANPATH}export MANPATHLD_LIBRARY_PATH="/home/usr1/intel/fce/9.0/lib":${LD_LIBRARY_PATH}export LD_LIBRARY_PATH#INTEL_LICENSE_FILE="/home/usr1/intel/licenses":$INTEL_LICENSE_FILEexport INTEL_LICENSE_FILE#fi⒉安装mkl⑴过程如vasp.4.6的过程⑵编译mkl的FFTW函数库:进入到opt/intel/mkl/xxxx/interfaces/fftw3xf(默认安装)的路径,在root权限下在终端键入make libem64t compiler=intel。
加入环境变量# .bashrc# User specific aliases and functions# Source global definitionsif [ -f /etc/bashrc ]; then. /etc/bashrcLD_LIBRARY_PATH="/opt/intel/mkl/10.0.1.014/lib/em64t":${LD_LIBRARY_PATH}INCLUDE="/opt/intel/mkl/10.0.1.014/include":${INCLUDE}export INCLUDE#fi⒊安装openmpi⑴解压文件,在终端中进入openmpi-xxxx(代表版本)的目录。
VASP编译

1、解压文件:
[root@yanshanwenbin* opt] tar jxvf Filename.tar.bz2
2.进入openmpi解压文件夹
[root@yanshanwe opt]: cd openmpi-1.6.5
3.安装前的配置问题。需要配置一个安装路径以及编译的程序。
export PATH=/opt/intel/impi/4.1.1.036/include64:$PATH
#source /etc/profile.d/paths.sh
!!!!!!到此VASP需要的文件安装完成##########
四.VASP编译
1.VASP.5.l的都是最新版本
在下载过程中提供邮箱获取序列号,从2011版ifort编译器开始已经自带MKL数学库,因此不需要在另外安装MKL数学库
一.ifort安装
1.下载ifort编译器(Intel非商业版)l_fcompxe_2013.4.183.tgz
export LD_LIBRARY_PATH=/opt/intel/composer_xe_2013.4.183/mkl/lib/intel64/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/opt/intel/composer_xe_2013.4.183/compiler/lib/intel64/:$LD_LIBRARY_PATH
############makefile####################################
.SUFFIXES: .inc .f .F
#-----------------------------------------------------------------------
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1)准备
1.
sudo apt-get install g++
sudo apt-get install build-essential
sudo apt-get install gcc-multilib
sudo apt-get install libstdc++5
sudo apt-get install openjdk-6-jre-headless
sudo apt-get install ia32-libs
sudo apt-get install lib32stdc++6
sudo apt-get install libc6-dev-i386
sudo apt-get install g++-multilib
sudo apt-get install gfrotran
1 2 3 tar -2. xzvf xxx #xxx 指压缩包的名称 cd 解压后目录 ./install.sh
##########安装过程很简单,安装提示就行########
安装完成后,修改环境变量
1 vi ~/.bashrc
在末尾添加
source /opt/intel/bin/compilervars.sh intel64 (64位版本)
source /opt/intel/bin/compilervars.sh ia32 (32位版本)
1 source ~/.bashrc
4. 编译mpi
首先下载mpich2的安装文件
1 2 3 4 5 6 tar mpich2压缩包
cd 文件夹
./configure --prefix=安装目录 f77=ifort f90=ifort fc=ifort
make
make install
vi ~/.bashrc
笔者安装目录在/opt/mpich2,也可以放在其他文件夹中,注意执行make install 用户需要有写入权限
在文件最后写入如下代码
1 2 3 4 #mpi2 start
PATH=/usr/local/mpich2-1.2.1p1/bin:$PATH
export PATH
#mpi2 end
再source 一下
1 source ~/.bashrc
5.编译fftw
1 2 3 4 5 tar 安装文件
cd 文件夹
./configure --prefix=安装目录 F77=ifort F90=ifort GCC=ifort
make
make install all
6.编译vasp
准备 vasp.5.2.tar.gz vasp.5.lib.tar.gz
首先编译的是vasp.lib
1 2 3 4 5 tar xzvf vasp.5.2.tar.gz
tar xzvf vasp.5.lib.tar.gz
cd vasp.5.lib
cp makefile.linux_ifc_P4 makefile
vi makefile
修改19行的 ifc –>ifort
1 make
如果出现 error { gcc:error trying to wxec ‘f951′ :execvp : No such file or directory }
这是gcc 的一个BUG ,解决方法是安装gfortran
1 sudo apt-get install gfortran
然后再重新编译
接着编译vasp
1 2 3 4 cd ../
cd vasp.5.2
cp makefile.linux_ifc_P4 makefile
vi makefile
主要有如下几个改动
1 2 3 4 5 6 7 8 9 10 11 12 1row:53 FC=ifc-->FC=ifort
row:129 BLAS= /opt/libs/libgoto/libgoto.so-->#BLAS= /opt/libs/libgoto/libgoto.so
row:132 LAPACK= ../vasp.5.lib/lapack_double.o-->#LAPACK= ../vasp.5.lib/lapack_double.o row:135后添加新行
MKLINCLUDE=/opt/intel/mkl/include/
MKLPATH=/opt/intel/mkl/lib/intel64/
BLASLAPACK=-L/opt/intel/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -l iomp5 -lpthread
#LIB = -L../vasp.5.lib -ldmy \
../vasp.5.lib/linpack_double.o $(LAPACK) \
$(BLAS)
LIB = -I$(MKLINCLUDE) -L$(MKLPATH) \
-L../vasp.5.lib -ldmy \
$(BLASLAPACK) \
../vasp.5.lib/linpack_double.o
3
1 4 1 5 1 6 1 7 1 8 #158 ff3d后加入库的目录(根据安装ff3d的位置来)FFT3D = fft3dfurth.o fft3dlib.o /usr/local/lib/libfftw3.a
然后make,如果没有编译错误那应该是编译成功了,会产生一个vasp的可执行文件。
1 cp vasp /usr/local/bin/vasp。