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

计算化学公社

 找回密码
 现在注册!
查看: 692|回复: 5

[VASP] 正确使用超算中心,5分钟搞定vasp5.4.4编译

[复制链接]

19

帖子

0

威望

233

eV
积分
252

Level 3 能力者

发表于 2018-10-16 13:30:53 | 显示全部楼层 |阅读模式
今天就来讲讲VASP的编译
首先直接上视频https://www.bilibili.com/video/av33956717/
欢迎加入理论计算化学研习社(QQ群:905699144),线上课程用到的资料都会在群里共享。

曾经,第一性原理编译是个世界性难题,无数刚入计算科学的朋友都倒在了编译程序的路上。
好在随着计算机系统管理的发展和程序的发展,编译VASP变得越来越简单。直到vasp5.4版本以后,编译vasp已经基本是傻瓜式的了,只要把intelmkl 和mpi库加载的路径改一下,很快就能编译好。所以,我讲编译vasp也变得简单的多,希望初学者不要倒在编译程序的门口。

网路充斥着非常多的vasp编译教程,由于老版本和新版差别比较大,使用不同的库和参数编译出来有可能性能差异也比较大。我这里建议的时针对2018年10月最新的vasp5.4.4,和最新intel2018的编译方法。也请之后学习此教程的朋友们注意新最版的vasp可能和我现在讲的方法不太一样。

问:编译VASP倒是在干什么?
答:把vasp.at上的vasp代码变成可执行文件。

问:vasp编译用什么版本?
答:一律用5.4.4

问:在每个机器上的编译方法一样吗?
答:取决于系统环境。如果您用的天河2号,或者中科院超算云,或者并行科技的机时,那么恭喜,您的VASP安装过程将会非常简单,makefile.include不用做任何修改就能编译出性能优秀的VASP原版执行文件,整个操作的过程只要大约5分钟。因为我用的就是超算云和并行科技的机时,所以今天我就演示在中科院超算云上的安装过程。

问:如果想要给VASP添加其他功能,是否要重新编译?
答:是的,但是如果一开始就把自己需要的功能就加进去,就可以一劳永逸了,这里我们编译的时候把constr_cell_relax.F,vaspsol,ssnbo和VTST都加进去,暂时我们用到的就这三个功能。


编译原版VASP5.4.4步骤:3步走
(1)登陆https://www.vasp.at/
下载正版VASP5.4.4和patch.5.4.4.16052018文件。Patch文件修补现有bug的文件,最好在编译之前运行。

(2)把vasp.5.4.4.tar.gz和patch.5.4.4.16052018这两个文件上传到~/apps/文件夹下。
(3)登陆服务器
cd~/apps
tar –zxvfvasp.5.4.4.tar.gz
gunzippatch.5.4.4.16052018.gz
cp  patch.5.4.4.16052018 ./vasp.5.4.4
cd./vasp.5.4.4
patch-p0 < patch.5.4.4.16052018
cparch/makefile.include.linux_intel ./makefile.include
moduleava  #(查看intel mkl和mpi库,使用超算中心上最新版本的intel mkl和mpi库)
moduleload intel/18.0.2-fast
moduleload mpi/intel/18.0.2-fast
echo$MKLROOT #(查看intelmkl库)
makeall
冲杯咖啡,稍等一刻钟,搞定

ls./bin #如果显示vasp_gam  vasp_ncl  vasp_std则编译成功

VASP原版几点注意事项:
(1)这里我们没有调用MPI和fftw库,是因为我们都是用的intel自带的MPI和fftw库。
(2)intel版本必须在2015(含)以上,否则会出现奇怪的错误,版本越高越好。
(3)如果使用intel2018的库可以把OFLAG设置成O3 同时针对机器CPU和vasp代码优化,再添加浮点稳定参数可使vasp效率进一步提升至少10%。这里为了稳定和操作简单化,我们就不调整这个参数了。这个内容会在线下课程里
(4) makefile.include里的参数我就不一一介绍了, 直接用默认的就好。
(5)我们编译使用的是intel动态库,在提交的使用同样需要加载一样的动态库,操作十分简单:moduleload intel/18.0.2-fast,module load mpi/intel/18.0.2-fast
(6)如果不使用动态库,需要自己手动在makefile.include里设置$MKLROOT和intel mpi的路径,
比如:MKLROOT = /public1/soft/intel/2015/composer_xe_2015.6.233/mkl

同时在提交任务的时候需要加载同样的库路径,这样就稍微有点麻烦。直接用动态库编译最好。

测试:

就用我们第四节课使用的例子来测试我们刚编译好的VASP。
slurm提交脚本:

#!/bin/bash
#SBATCH -N 1
#SBATCH -n 20
#SBATCH -p pg2_64_pool
#SBATCH -J VASP
#SBATCH -t 12:00:00

module load mpi/intel/18.0.2

cd $SLURM_SUBMIT_DIR

srun -n 20/public1/home/pg2738/apps/vasp.5.4.4/bin/vasp_std > LOG

测试:

另外我们还要准备赝势库,这个我们在第四节课已经详细讲过了。


准备好INCAR,POTCAR,KPOINTS,POSCAR就可以运行了。

以后有机会我们再讲怎么编译
VTST,
SSNBO,
VASPsol,
OPTCELL,

Wannier90。

评分

参与人数 2eV +10 收起 理由
Lanthanide + 5
obaica + 5

查看全部评分

68

帖子

5

威望

442

eV
积分
610

Level 4 (黑子)

发表于 2018-10-16 14:35:15 | 显示全部楼层
可否告知一下浮点稳定参数?谢谢

26

帖子

0

威望

226

eV
积分
252

Level 3 能力者

发表于 2018-10-16 15:21:03 | 显示全部楼层
挺好的,谢谢。
但是编译步骤里有很明显格式错误,很多空格都漏掉了……

cd  ~/apps
tar –zxvfvasp.5.4.4.tar.gz
gunzip patch.5.4.4.16052018.gz
cp  patch.5.4.4.16052018 ./vasp.5.4.4
cd ./vasp.5.4.4
patch -p0 < patch.5.4.4.16052018
cp arch/makefile.include.linux_intel ./makefile.include
module ava  #(查看intel mkl和mpi库,使用超算中心上最新版本的intel mkl和mpi库)
module load intel/18.0.2-fast
module load mpi/intel/18.0.2-fast
echo $MKLROOT #(查看intelmkl库)
make all

68

帖子

5

威望

442

eV
积分
610

Level 4 (黑子)

发表于 2018-10-16 15:30:43 | 显示全部楼层
乐平 发表于 2018-10-16 15:21
挺好的,谢谢。
但是编译步骤里有很明显格式错误,很多空格都漏掉了……

要这么说的话还得先unload原来的编译器和库,否则会报错

351

帖子

2

威望

1862

eV
积分
2253

Level 5 (御坂)

发表于 2018-10-16 16:40:34 | 显示全部楼层
非常不错的教程,期待后续的安装教程

106

帖子

0

威望

486

eV
积分
592

Level 4 (黑子)

发表于 2018-10-16 20:26:35 | 显示全部楼层
放心。 这玩意没有什么指导意义。

因为,一般的机器上,没有人帮你把需要的东西配置为可用的模块。
没有做此配置,moduleava当然无法使用了。

其实最简单的,应该采用GNU那一套,基本上,yum install XXX
然后直接编译,不会报错的。
vasp wiki写的很清楚的。
您需要登录后才可以回帖 登录 | 现在注册!

本版积分规则

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

GMT+8, 2018-11-17 05:15 , Processed in 0.109908 second(s), 25 queries .

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