计算化学公社

 找回密码 Forget password
 注册 Register
Views: 197495|回复 Reply: 125
打印 Print 上一主题 Last thread 下一主题 Next thread

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

  [复制链接 Copy URL]

216

帖子

3

威望

4470

eV
积分
4746

Level 6 (一方通行)

本帖最后由 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

参与人数
Participants 23
威望 +1 eV +83 收起 理由
Reason
秦王绕柱走 + 3 谢谢!
chenxiang + 2 谢谢
wILlD + 4 赞!
wziw + 3 谢谢
夙雪夜归 + 3 好物!
MADAOLay + 3 谢谢
洁如玉 + 3 谢谢分享
阿锋001 + 3 谢谢
zyniso + 5 GJ!
yjr + 5 谢谢
zhanfei + 5 什么时候有静态编译版发布就好了
csuxzj2017 + 3 好物!
obaica + 5
小龙斯坦 + 5 好物!
chust + 3 帮了我大忙, 谢谢!
ggdh + 5 好物!
元江1994 + 3
lt19930703 + 4
Jack + 1 赞!
believeht + 5 赞!

查看全部评分 View all ratings

Monte Carlo

125

帖子

0

威望

1198

eV
积分
1323

Level 4 (黑子)

125#
发表于 Post on 2022-10-27 12:50:54 | 只看该作者 Only view this author
svdn 发表于 2018-4-27 11:14
**** 作者被禁止或删除 内容自动屏蔽 ****

你好,我也遇到这个问题了,请问你是怎么解决的?

1

帖子

0

威望

11

eV
积分
12

Level 1 能力者

124#
发表于 Post on 2022-10-10 09:36:02 | 只看该作者 Only view this author
[vasp@localhost 1]$ ./vasp.sh&
[1] 3594
[vasp@localhost 1]$ bash: ./vasp.sh: 权限不够

[1]+  Exit 126                ./vasp.sh
脚本编译好了,出现这个怎么回事呀

1

帖子

0

威望

135

eV
积分
136

Level 2 能力者

123#
发表于 Post on 2022-1-17 19:35:19 | 只看该作者 Only view this author
nextnest 发表于 2017-5-17 15:51
已经解决,mpi和fftw都在默认目录下编译就行。

默认目录是哪里,不是要自己设置吗?我也遇到了这个问题,还没解决。。求教

14

帖子

0

威望

161

eV
积分
175

Level 3 能力者

122#
发表于 Post on 2021-9-16 08:35:12 | 只看该作者 Only view this author
abin 发表于 2021-9-15 18:26
看看这个视频.
BV1tt4y1C7M9

好的谢谢老师

2302

帖子

1

威望

5481

eV
积分
7803

Level 6 (一方通行)

121#
发表于 Post on 2021-9-15 18:26:32 | 只看该作者 Only view this author
努力的小青年 发表于 2021-9-15 17:30
老师,我是初学者,想问一下“分别进入文件夹执行./install.sh”这是在哪执行呢

看看这个视频.
BV1tt4y1C7M9

B站视频编号.
High-Performance Computing for You
为您专属定制的高性能计算解决方案

更多讯息,请访问:
https://labitc.top
http://tophpc.top:8080
电邮: ask@hpc4you.top

14

帖子

0

威望

161

eV
积分
175

Level 3 能力者

120#
发表于 Post on 2021-9-15 17:30:18 | 只看该作者 Only view this author
老师,我是初学者,想问一下“分别进入文件夹执行./install.sh”这是在哪执行呢

6

帖子

0

威望

65

eV
积分
71

Level 2 能力者

119#
发表于 Post on 2021-7-26 11:45:07 | 只看该作者 Only view this author
之前用2019编译器,计算的时候特别吃内存,但是换个低版本编译器就好了

15

帖子

0

威望

761

eV
积分
776

Level 4 (黑子)

118#
发表于 Post on 2019-3-18 23:18:46 | 只看该作者 Only view this author
老师您好,首先很感谢您分享的教程,这是我在编译过程中的两个问题,希望您可以帮忙解答。
1.以前习惯用mpirun指令提交,但是编译出来的不能用这个指令了,用教程里面的脚本没有问题,这个是编译方法的问题吗,还是由于环境变量的问题?
2.这个有什么办法解决吗?

1

帖子

0

威望

17

eV
积分
18

Level 1 能力者

117#
发表于 Post on 2019-1-15 14:44:57 | 只看该作者 Only view this author
svdn 发表于 2018-4-27 11:14
你好,我使用的ubuntu18.04,通过apt下载 libstdc++6,glibc-doc,libgcc-6-dev-ppc64-cross,以及gcc, ...

你好,我也遇到了你这样的问题,请问你是怎么解决这个问题的?谢谢!

3

帖子

0

威望

41

eV
积分
44

Level 2 能力者

116#
发表于 Post on 2018-12-18 21:45:59 | 只看该作者 Only view this author
jiangning198511 发表于 2018-12-18 17:04
我用intel2017编译后就没有报错了
你可以试试

好的 谢谢 麻烦你了~~

689

帖子

2

威望

4106

eV
积分
4835

Level 6 (一方通行)

115#
发表于 Post on 2018-12-18 17:04:29 | 只看该作者 Only view this author
Dawn_every 发表于 2018-12-18 16:44
你好 打扰了 我的安装过程中 也出现了和你相同的 chi_base.F 的三个报错,想问一下你最后是怎么解决的;
...

我用intel2017编译后就没有报错了
你可以试试

3

帖子

0

威望

41

eV
积分
44

Level 2 能力者

114#
发表于 Post on 2018-12-18 16:44:03 | 只看该作者 Only view this author
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 ...

你好 打扰了 我的安装过程中 也出现了和你相同的 chi_base.F 的三个报错,想问一下你最后是怎么解决的;
目前baidu和骨狗都未找到此问题的解决方案 麻烦你了;
之前尝试一个帖子是说 将chi_base.F 里的 use mpi字符串 改为 use mympi 但又有新的问题产生,因不知修改此参数的意义,遂又修改回去,make后依旧报和你相同的错误,想问你一下你是怎么解决的,谢谢了~~

2

帖子

0

威望

13

eV
积分
15

Level 1 能力者

113#
发表于 Post on 2018-12-16 06:31:40 | 只看该作者 Only view this author
这个最厉害了,感谢楼主的教程,已编译成功!

8

帖子

0

威望

159

eV
积分
167

Level 3 能力者

112#
发表于 Post on 2018-12-13 01:43:30 | 只看该作者 Only view this author
./configure --prefix=安装目录 CC=icc CXX=icpc F77=ifort FC=ifort
./configure --prefix=安装目录 --enable-mpi
may I ask what is the "anzhuangmulu"? I used the root directory, and everything seems fine, but I cannot see the vasp_gam vasp_std or vasp_ncl. Thanks!

8

帖子

0

威望

87

eV
积分
95

Level 2 能力者

111#
发表于 Post on 2018-10-24 15:54:36 | 只看该作者 Only view this author
楼主好,我是菜鸟,系统用的是CentOS-7-x86_64-DVD-1804.iso,64位。不知道能不能用你发的这个vasp?

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-27 08:36 , Processed in 1.191573 second(s), 30 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list