24小时热门版块排行榜    

查看: 5613  |  回复: 16
【奖励】 本帖被评价10次,作者gyty增加金币 8
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

gyty

木虫 (初入文坛)


[资源] 关于 VASP 的编译经验分享

(本文首发于 中国科学院大学 凝聚态理论与计算材料物理实验室论坛,转载请注明出处!
http://tcmp2.ucas.ac.cn/bbs/-/message_boards/view_message/34944

关于 VASP 的编译,最近有一些心得体会,写出来抛砖引玉,与大家共享:

1) 首先是编译环境的配置:

VASP 并行版本的编译(串行版本的不常用)需要如下工具:
    Intel Fortran Compiler : ifort
    并行编译器:mpif90 或者 mpiifort
    数学库:一般常用Intel MKL,如果有其他的当然也可以


关于 Fortran 编译器,我们一般Intel架构的机器好像只能使用ifort来编译,如果使用GNU开发的gfortran编译,就是一个大大的杯具。从Intel 官网上可以下载Fortran编译器:
http://software.intel.com/en-us/ ... -evaluation-options
安装Fortran 编译器的时候好像会自动把MKL安装上,很是省事。当然,编译器和数学库的安装是需要许可证的,这个事情 … 大家都是盗版砖家,神通广大,深藏不露,这里我就不罗嗦了!其实Intel会有提供30天的试用版本,可以尝试。

关于并行编译器,可以使用 openmpi mpich IntelMPI 等等,安装的事情我不想多说了,DEB系列的系统直接apt-get install,其他系列的我不是很了解。当然可以从源代码编译安装,或者比如Intel的并行开发运行环境,从官网或者其他途径下载安装包,安装起来应该不是特别复杂。

需要注意的是,使用哪种MPI编译,就要使用对应的mpirun来并行运行,它们互相之间好像是不兼容,记得好好设置 PATH LD_LIBRARY_PATH 两个变量。VASP 运行时是一扑成吊丝,还是一飞成高富帅,它们有关键性的作用。

2) 关于 VASP 的编译

1. 在 vasp.x.lib 中执行 make,可能需要先把 makefile.linux_ifc_P4 复制为 makefile ,并将其中的 FC=ifc 改为 FC=ifort。
这一步应该是非常easy的!

2. 接下来的才是重头戏,切换工作目录到 vasp.x.x ,就是VASP源代码,在这里,首先要好好地修改 makefile:

同样,我们从 makefile.linux_ifc_P4 开始,把它复制为 makefile ,然后用纯文本编辑器,比如VIM,打开。其中几个比较关键的变量给出设置模板如下:

FC=mpiifort -heap-arrays
MKLPATH=/share/apps/Intel.Fortran.Compiler.2013.1.117/mkl
FFLAGS = -I$(MKLPATH)/include/fftw -FR -lowercase -assume byterecl
BLAS= -L$(MKLPATH)/lib/intel64 -lmkl_sequential -lmkl_core -lmkl_intel_lp64
LAPACK= -L$(MKLPATH)/lib/intel64 -lmkl_sequential -lmkl_core -lmkl_intel_lp64
SCA= -L$(MKLPATH)/lib/intel64 -lmkl_scalapack_lp64.a -lmkl_blacs_intelmpi_lp64.a
或者
SCA= -L$(MKLPATH)/lib/intel64 -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64

另外,关于FFT函数库,有两种选择,对于以前的Intel数学库,好像只支持
    FFT3D = fftmpi.o fftmpi_map.o fft3dfurth.o fft3dlib.o
而2013年新的数学库支持一个更快的FFT函数库,这时可以采用如下设置:
    FFT3D = fftmpi.o fftmpi_map.o fftw3d.o fft3dlib.o
可能需要针对 fftw3d.o 设置特殊的编译规则:

fftw3d.o : fftw3d.F
$(CPP)
$(FC) -I$(MKLPATH)/include/fftw -FR -lowercase -O1 $(INCS) -c $*$(SUFFIX)


或者干脆直接设置 INCS = -I$(MKLPATH)/include/fftw

关于 makefile 中变量的设置,就说这么多。这里面的事情,参考着上面给出的示例,自己捉摸一下应该没有太大的问题,都懂的,说太多就没意思了,点到为止。

好吧,再唠叨几句:

如果不是使用 mpiifort 来编译的话,比如是 mpif90,记得将其调用的 fortran 编译器设置为 ifort 。有两种方式:一是重新编译并行编译器,在编译选项中指定其调用的Fortran编译器,这种方式可能有点麻烦;二是采用比较取巧的方法,由于mpif90默认调用gfortran作为Fortran编译器,那我们做一个符号链接就可以了:gfortran -> ifort。另外需要注意的是,可能同时得修改 BLAS LAPACK 和 SCA 变量中的部分链接库名字,详情请参考 makefile ,因为其中默认是使用 mpif90 编译器。

到这里,关于makefile的修改应该就差不多了,保存退出后执行 make ,如果人品足够好,一般等上十分钟二十分钟的就可以得到编译好的可执行 vasp 二进制文件。这里有一个小技巧:直接执行make编译是顺序进行的,如果使用 make -j N ,则可以同时并发N个编译,速度会快上很多(N倍?)。但是由于makefile中没有针对并发编译做特殊的处理,所以这样操作很容易出错。当然,出来混,拼的就是人品!如果出错退出了,不用捉急,一般是由于编译过程的冲突导致的,再执行make顺序编译过这一段,接下来再并发编译,照样是可以的。

最后,编译过程中遇到问题的时候,不要难过,搞个两三天才编译通过是很正常的事情,要淡定,要多上网搜,要多看VASP the GUIDE中的第三节:The installation of VASP,其中有很详细的解释。另外,VASP the GUIDE中有一些关于优化执行效率的讨论,很有参考价值,要深入学习,领会精神!

祝编译顺利,VASP开发小组与我们同在!

2013-06-15 秦光照
回复此楼

» 收录本帖的淘帖专辑推荐

VASP @个人收集@ VASP资料 Vasp 安装

» 猜你喜欢

» 本主题相关商家推荐: (我也要在这里推广)

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magicmonk

至尊木虫 (著名写手)


引用回帖:
9楼: Originally posted by gyty at 2014-08-26 17:25:43
ln 在 PATH 里的优先路径
...

额……还是不懂啊,是在Makefile的哪个位置加上这个吗?
10楼2014-08-26 17:44:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 17 个回答

love5264

木虫 (正式写手)


★★★★★ 五星级,优秀推荐

谢谢经验分享,试试看
2楼2013-06-15 17:01:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gyty

木虫 (初入文坛)


引用回帖:
5楼: Originally posted by qzz502 at 2013-06-18 18:48:48
膜拜!!

呀呀!
6楼2013-06-18 22:42:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magicmonk

至尊木虫 (著名写手)


★★★★★ 五星级,优秀推荐

不明白“符号链接就可以了:gfortran -> ifort”具体在哪里操作?
8楼2014-08-26 14:38:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
☆ 无星级 ★ 一星级 ★★★ 三星级 ★★★★★ 五星级
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 为什么资助数各大高校都创新高,自己申请怎么就这么难 +13 Kittylucky 2026-08-27 14/700 2026-09-01 11:06 by feng6531
[基金申请] 在坚冰还盖着北海的时候,我看到了怒放的梅花。 (金币+10) +8 ziyangfang 2026-08-25 11/550 2026-09-01 09:51 by zzuzxg
[基金申请] 面上函评意见出来了,像什么等级? 20+3 Tsingking1 2026-08-27 14/700 2026-09-01 08:29 by 尼古拉斯小虫
[基金申请] 投票:  有多少人是今天查系统知道结果的? +17 爱看书的可乐 2026-08-26 19/950 2026-08-31 21:30 by xiangy672
[基金申请] 基金未中,这种答复是模板吗? +6 zhaosm1982 2026-08-27 7/350 2026-08-31 21:18 by qdxxmc
[基金申请] 面上意见出来了 +12 黄鸟于飞Chao 2026-08-29 23/1150 2026-08-31 18:57 by 黄鸟于飞Chao
[基金申请] 能否申诉? +7 echo8914667 2026-08-30 8/400 2026-08-31 17:00 by yihongxu
[基金申请] 中青基了要发朋友圈吗? +7 349506619 2026-08-28 7/350 2026-08-31 13:39 by 冼亮淀粉酶
[基金申请] 基金不中,共勉 +12 eulota 2026-08-26 12/600 2026-08-31 08:42 by ZJTJZ
[基金申请] 系统查不到 +11 董八千 2026-08-26 11/550 2026-08-28 18:06 by Leogzhya
[基金申请] 怎么查啊 +6 huang1991js 2026-08-26 6/300 2026-08-28 08:42 by winsaint
[基金申请] 看板上这么多中的,有点像50人群里49个人都是骗子的那种感觉…… +5 a089 2026-08-26 6/300 2026-08-27 14:05 by jonewore
[基金申请] 为什么 国际(地区)合作与交流项目 没有放榜? 10+3 majunge000 2026-08-26 11/550 2026-08-27 08:42 by 北京莱茵编辑
[基金申请] 2026年8月25日国自然放榜前突然收到列入评审专家邮件,有关系吗? +25 木水思豆 2026-08-25 28/1400 2026-08-26 14:53 by draco1987
[基金申请] 出来了 +9 trojank 2026-08-26 9/450 2026-08-26 14:25 by 宝贝虫子
[基金申请] 国际合作可查了,中了面上 (EPI+1)(金币+50) +18 Ldrop2023 2026-08-26 18/900 2026-08-26 11:15 by cmrandy
[基金申请] 系统进不去 +4 yanglien 2026-08-26 5/250 2026-08-26 11:10 by wenfengw83
[基金申请] 国合可查了 +3 paperzjh 2026-08-26 3/150 2026-08-26 10:41 by LemmonTr
[基金申请] 今天务委会开完了,明天出结果吗 +19 angus9576 2026-08-25 23/1150 2026-08-26 10:03 by zp519
[基金申请] 牛来!米来!面来! +8 beefly 2026-08-26 8/400 2026-08-26 08:37 by xuzhipiao
信息提示
请填处理意见