请选择 进入手机版 | 继续访问电脑版

计算化学公社

 找回密码
 现在注册!
查看: 26226|回复: 109

[VASP] 教你从头编译vasp-5.4.1

  [复制链接]

166

帖子

3

威望

2463

eV
积分
2689

Level 5 (御坂)

发表于 2016-10-16 16:20:26 | 显示全部楼层 |阅读模式
本帖最后由 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提交。


祝大家好运,一次编译成功!







评分

参与人数 14威望 +1 eV +54 收起 理由
yjr + 5 谢谢
zhanfei + 5 什么时候有静态编译版发布就好了
csuxzj2017 + 3 好物!
obaica + 5
小龙斯坦 + 5 好物!
chust + 3 帮了我大忙, 谢谢!
ggdh + 5 好物!
元江1994 + 3
lt19930703 + 4
Jack + 1 赞!
believeht + 5 赞!
小书童 + 5 谢谢
sobereva + 1
captain + 5 谢谢

查看全部评分

Monte Carlo

283

帖子

2

威望

2742

eV
积分
3065

Level 5 (御坂)

发表于 2016-10-16 18:05:43 | 显示全部楼层
果真是需要intel 2011

290

帖子

0

威望

2856

eV
积分
3146

Level 5 (御坂)

发表于 2016-10-16 18:12:04 | 显示全部楼层
大赞啊,我编译5.2的时候用的是 Intel 2013各种问题

41

帖子

0

威望

1138

eV
积分
1179

Level 4 (黑子)

发表于 2016-10-16 23:39:35 | 显示全部楼层
非常感谢!我还是新手,回帖比较水。

166

帖子

3

威望

2463

eV
积分
2689

Level 5 (御坂)

 楼主| 发表于 2016-10-17 09:18:03 | 显示全部楼层
ruanyang 发表于 2016-10-16 18:12
大赞啊,我编译5.2的时候用的是 Intel 2013各种问题

这种坑我已将跳进去太多次
Monte Carlo

347

帖子

2

威望

1714

eV
积分
2101

Level 5 (御坂)

发表于 2016-10-17 09:53:07 | 显示全部楼层
mpif90 -free -names lowercase -assume byterecl -FR -heap-arrays -O1 -ip -I/fftw/3.3.4/include -c chi_base.f90
chi_base.F(2745): error #7013: This module file was not generated by any release of this compiler.   [MPI]
    USE mpi
--------^
chi_base.F(2760): error #6457: This derived type name has not been declared.   [C_PTR]
    TYPE(c_ptr) :: address
---------^
chi_base.F(2845): error #6404: This name does not have a type, and must have an explicit type.   [ADDRESS]
       call attachshmem(CHI%SHMID, address)
-----------------------------------^
compilation aborted for chi_base.f90 (code 1)
make[2]: *** [chi_base.o] Error 1

安装过程中出现了这个错误,楼主知道如何解决吗?

166

帖子

3

威望

2463

eV
积分
2689

Level 5 (御坂)

 楼主| 发表于 2016-10-17 15:24:12 | 显示全部楼层
jiangning198511 发表于 2016-10-17 09:53
mpif90 -free -names lowercase -assume byterecl -FR -heap-arrays -O1 -ip -I/fftw/3.3.4/include -c chi ...

不知道!
Monte Carlo

72

帖子

0

威望

934

eV
积分
1006

Level 4 (黑子)

发表于 2016-10-19 17:07:06 | 显示全部楼层
话说 楼主 有最新的 PAW 势文件不?

166

帖子

3

威望

2463

eV
积分
2689

Level 5 (御坂)

 楼主| 发表于 2016-10-19 19:21:20 | 显示全部楼层
chrinide 发表于 2016-10-19 17:07
话说 楼主 有最新的 PAW 势文件不?

没有,自己去找,我只装不用
Monte Carlo

22

帖子

0

威望

1312

eV
积分
1334

Level 4 (黑子)

发表于 2016-10-21 15:10:04 | 显示全部楼层
感谢楼主

174

帖子

3

威望

1360

eV
积分
1594

Level 5 (御坂)

发表于 2016-11-13 14:49:33 | 显示全部楼层
vasp编译很坑爹,不知道作者怎么想的。

166

帖子

3

威望

2463

eV
积分
2689

Level 5 (御坂)

 楼主| 发表于 2016-11-13 17:48:26 | 显示全部楼层
Warm_Cloud 发表于 2016-11-13 14:49
vasp编译很坑爹,不知道作者怎么想的。

是很坑爹,师弟,宿舍停电了!
Monte Carlo

404

帖子

0

威望

749

eV
积分
1153

Level 4 (黑子)

发表于 2016-11-22 16:54:09 | 显示全部楼层
请问,第二步安装openmpi,frefix=路径后面的CC=icc CXX=icpc F77=ifort FC=ifort是什么意思啊?

166

帖子

3

威望

2463

eV
积分
2689

Level 5 (御坂)

 楼主| 发表于 2016-11-22 21:12:30 | 显示全部楼层
小书童 发表于 2016-11-22 16:54
请问,第二步安装openmpi,frefix=路径后面的CC=icc CXX=icpc F77=ifort FC=ifort是什么意思啊?

用刚刚安装的intel编译器编译openmpi防止之后使用它的时候出现兼容性问题
Monte Carlo

404

帖子

0

威望

749

eV
积分
1153

Level 4 (黑子)

发表于 2016-11-22 21:37:06 | 显示全部楼层
youyno 发表于 2016-11-22 21:12
用刚刚安装的intel编译器编译openmpi防止之后使用它的时候出现兼容性问题

恩恩,谢谢!
您需要登录后才可以回帖 登录 | 现在注册!

本版积分规则

手机版|北京科音自然科学研究中心|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949-1号 )

GMT+8, 2018-9-23 21:13 , Processed in 0.229906 second(s), 25 queries .

快速回复 返回顶部 返回列表