今天就来讲讲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步走 下载正版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。
|