24小时热门版块排行榜    

查看: 5567  |  回复: 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的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

朝阳4506

铜虫 (初入文坛)


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

师兄,看到了你的帖子
15楼2015-03-10 22:22:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

love5264

木虫 (正式写手)


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

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

haizhiwuyu

铁杆木虫 (著名写手)


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

谢谢经验分享
3楼2013-06-17 00:49:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qzz502

木虫 (小有名气)


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

膜拜!!
5楼2013-06-18 18:48:48
已阅   回复此楼   关注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的回帖

gyty

木虫 (初入文坛)


引用回帖:
8楼: Originally posted by magicmonk at 2014-08-26 14:38:01
不明白“符号链接就可以了:gfortran -> ifort”具体在哪里操作?

ln 在 PATH 里的优先路径

[ 发自小木虫客户端 ]
9楼2014-08-26 17:25:43
已阅   回复此楼   关注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的回帖

gyty

木虫 (初入文坛)


引用回帖:
10楼: Originally posted by magicmonk at 2014-08-26 17:44:07
额……还是不懂啊,是在Makefile的哪个位置加上这个吗?...

这是 linux 的基础操作,你自己百度吧

[ 发自小木虫客户端 ]
11楼2014-08-27 00:42:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magicmonk

至尊木虫 (著名写手)


引用回帖:
11楼: Originally posted by gyty at 2014-08-27 00:42:14
这是 linux 的基础操作,你自己百度吧
...

楼主,我比较笨,您可以说清楚点吗,是环境变量里吗?
12楼2014-08-27 09:19:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gyty

木虫 (初入文坛)


引用回帖:
12楼: Originally posted by magicmonk at 2014-08-27 09:19:23
楼主,我比较笨,您可以说清楚点吗,是环境变量里吗?...

对,是环境变量,我用了 $HOME/bin

[ 发自小木虫客户端 ]
13楼2014-08-27 14:48:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

计算化学新人

铜虫 (小有名气)


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

请问你的编译器压缩包及序列号还在吗?我的从intel下载下来后没有序列号,用不了
16楼2015-03-18 15:30:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Ireson

银虫 (正式写手)


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

厉害
17楼2015-10-07 16:45:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
简单回复
youzhizhe4楼
2013-06-17 18:52   回复  
五星好评  谢谢分享。
blueybz7楼
2013-06-21 15:01   回复  
五星好评  
2014-09-28 21:59   回复  
五星好评  
相关版块跳转 我要订阅楼主 gyty 的主题更新
☆ 无星级 ★ 一星级 ★★★ 三星级 ★★★★★ 五星级
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 范进中举一文的中心思想 +5 炎黄贵胄 2026-08-22 6/300 2026-08-24 06:34 by sincosx
[基金申请] 建议基金发布提前给出明确的时间点 +11 kulium 2026-08-21 14/700 2026-08-24 02:12 by 流流伤
[基金申请] 2026国自然函评费到账 +16 羊腰板 2026-08-21 17/850 2026-08-23 23:02 by tianxiaochun
[基金申请] 让我中一个面上吧! +12 大萍1987 2026-08-20 15/750 2026-08-23 20:44 by 大萍1987
[基金申请] 2026年的国家社科基金项目通讯评审的新规则与新动向、新挑战 +4 process2012 2026-08-23 5/250 2026-08-23 19:58 by jurkat.1640
[基金申请] 今天放榜吗? +15 布布和一二 2026-08-19 16/800 2026-08-23 09:55 by 张春生
[基金申请] 93BebMhtakh前后11位开头都是大写 +7 且听虎啸 2026-08-17 8/400 2026-08-22 21:55 by 医学老男孩
[基金申请] 只有每年这种时候来逛逛小木虫 +24 yaoyewhu2008 2026-08-20 26/1300 2026-08-22 17:43 by kammury
[基金申请] filecode,4个jtjc了 +13 ziyangfang 2026-08-19 16/800 2026-08-22 17:08 by WH3796
[基金申请] 时间戳今天,20号变了 +5 archvillain 2026-08-20 5/250 2026-08-22 06:12 by hui_daxiao
[基金申请] 放榜前的不淡定 40+4 snowwithsea 2026-08-19 14/700 2026-08-21 23:51 by cratir
[基金申请] 科研孤儿太难了 +17 我4大白菜 2026-08-20 18/900 2026-08-21 20:57 by zhangev
[基金申请] 看来今天不会放榜了? +8 chengyan1220 2026-08-21 11/550 2026-08-21 17:52 by dcqxinyang
[基金申请] 时间戳又变了 +13 wuchongjun 2026-08-20 19/950 2026-08-21 17:21 by 紫杉醇
[基金申请] 应该是下周三26日公布了吧? +4 哈哈蛤? 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
[论文投稿] 投稿咨询 +5 wwm09 2026-08-17 7/350 2026-08-21 10:11 by 期刊论文帮手
[基金申请] 估计是周四 +3 archvillain 2026-08-18 3/150 2026-08-21 01:48 by jnhyjjm
[基金申请] 朋友圈看到的 +6 wangzilk 2026-08-18 8/400 2026-08-19 10:55 by Haru815
[基金申请] 明天放榜? +5 Shxjjxjkx 2026-08-18 5/250 2026-08-18 18:14 by -大大大大大-
[基金申请] 今天维护系统维护 祝所有人 高中 +8 gjjjzhong 2026-08-18 9/450 2026-08-18 13:01 by 家与远方
信息提示
请填处理意见