24小时热门版块排行榜    

CyRhmU.jpeg
查看: 4749  |  回复: 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的回帖

gyty

木虫 (初入文坛)


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

呀呀!
6楼2013-06-18 22:42:06
已阅   回复此楼   关注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的回帖

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的回帖

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的回帖
相关版块跳转 我要订阅楼主 gyty 的主题更新
☆ 无星级 ★ 一星级 ★★★ 三星级 ★★★★★ 五星级
普通表情 高级回复(可上传附件)
信息提示
请填处理意见