计算化学公社

 找回密码 Forget password
 注册 Register
Views: 19454|回复 Reply: 2
打印 Print 上一主题 Last thread 下一主题 Next thread

[VASP] vasp 5.4.4在linux下使用gnu编译器编译

[复制链接 Copy URL]

1187

帖子

5

威望

2859

eV
积分
4146

Level 6 (一方通行)

跳转到指定楼层 Go to specific reply
楼主
本帖最后由 snljty 于 2019-12-9 09:12 编辑

我的操作系统是ubuntu 18.04,
当时因为某种原因,没,装intel的编译器,事后发现还是intel的方便啊,另外原生的lapack库似乎也没怎么优化,应该会影响一些效率。
Anyway,折腾了一下还是编译出来了。

首先保证已经安装gcc和gfortran并且可执行文件都在$PATH里。

快速傅里叶变换库用fftw 3.3.5。
ftp://ftp.fftw.org/pub/fftw/fftw-3.3.5.tar.gz
编译要注意的一个是./configure的时候要加上--enable-shared编译动态共享库,另外要编译双精度浮点数的版本(这个应该是默认选项)。--prefix=选项指定自己要编译到的目录,后面同。
编译后将编译出目录的bin目录加入$PATH,lib目录加入$LD_LIBRARY_PATH,就是在~.bashrc里面加上export $PATH=$PATH:新加入的路径,然后source ~/.bashrc或者重开一个terminal。

MPI并行使用的是openmpi-2.1.0,
新版的openmpi-4.0.0编译的时候会报错,我没解决掉,后来试了一下2.1.0是可以的。
选择自己的路径编译openmpi,把编译出来的bin目录加入$PATH

mpich2的1.5等版本总有无法解决的问题,后来看到建议换openmpi的比较多,就用openmpi成功编译了。

lapack去netlib找,我用的3.7.0版本。不过3.6.0以后的版本编译vasp的时候有个小bug,后来发现vasp官网上其实更新过解决方法。
http://www.netlib.org/lapack/lapack-3.7.0.tgz
使用3.6.0和更高版本时,由于lapack库不再提供dgegv函数,要在vasp源文件里面做一些修改,在vasp目录/src/symbol.inc里面加入下面几行(!后面是注释,可加可不加)
! routines replaced in LAPACK >=3.6
#ifdef LAPACK36
#define DGEGV DGGEV
#endif
然后在vasp目录/makefile.include文件中,加入
CPP_OPTIONS += -DLAPACK36
lapack也要编译成shared版本,详见http://icl.cs.utk.edu/lapack-forum/viewtopic.php?t=908,步骤比较长就不粘贴了。
lapack通常就编译在解压后的文件同一层路径里,将含有liblapack.so等文件的目录加入$LD_LIBRARY_PATH

然后编译并行的线性代数库ScaLAPACK,下载地址http://www.netlib.org/scalapack/scalapack-2.0.0.tgz
这个编译的时候摇调用mpif90和mpicc,所以要先编译openmpi并加入$PATH。
编译完成后,同样lib目录加入$LD_LIBRARY_PATH

使用GPU加速的话,还要编译CUDA,没有的话也可以用。
英伟达官网可以下载。

现在终于可以编译vasp了。解压下载的vasp以后,要修改里面的makefile.include中一些内容
有些更改是不必要的,毕竟已经加入了PATH或者LD_LIBRARY_PATH,但是为了防止电脑里有多个版本等情况,还是指定一下。
FC和FCL后面都改成openmpi编译后的mpif90可执行文件路径,即xxx/mpif90。
别忘了上面提到的-DLAPACK36在LAPACK版本太高的时候要加到CPP_OPTIONS后面。
LIBDIR后面改成lapack编译好的库的路径。
BLAS等号后面改成-L你的lapack目录 (空格)-l(小写的L)blas
如果你前面变异的blas库名字是librefblas.so,就把-lblas改成-lrefblas。
SCALAPACK=后面写= -你的scalapack路径 -lscalapack $(BLACS)
FFTW写:=后面接你编译的fftw库的路径。
MPI_INC =后面写你变异的openmpi库里面的include目录的路径xxx/include

然后保存,应该可以编译了,有三个不同的版本,可以一起直接make,尽量不要并行编译,容易报错,不会太慢的。
大概就是这样,有错误或者没说清楚的地方欢迎大家指正。

最后,不得不说还是intel大法好。

评分 Rate

参与人数
Participants 1
eV +1 收起 理由
Reason
啦啦黑还黑 + 1 赞!

查看全部评分 View all ratings

2407

帖子

1

威望

5955

eV
积分
8382

Level 6 (一方通行)

2#
发表于 Post on 2019-9-18 11:57:57 | 只看该作者 Only view this author
没那么麻烦吧?
看看这个。

https://www.bilibili.com/video/a ... 3801778514636163522

在Ubuntu下面应该也是类似的。
High-Performance Computing for You
为您专属定制的高性能计算解决方案

更多讯息,请访问:
https://labitc.top
http://tophpc.top:8080
电邮: ask@hpc4you.top

1187

帖子

5

威望

2859

eV
积分
4146

Level 6 (一方通行)

3#
 楼主 Author| 发表于 Post on 2019-9-18 12:15:05 | 只看该作者 Only view this author
abin 发表于 2019-9-18 11:57
没那么麻烦吧?
看看这个。

如果有sudo权限,又可以直接安装到系统里,当然方便啦~这里提供的是没有sudo权限,所有库都自己编译在本地的方法~

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2025-8-15 22:05 , Processed in 0.200963 second(s), 21 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list