新手linux安装vasp_一步一步教你如何在linux 下安装VASP 【真的是从零开始】

首先我是一个linux 小白,只接触过linux 的基本用法, 听说VASP 编译很复杂,故想学习之。 如果大神见了,请直接飘过,非常期待和大家互动交流。

下面就直接进入主题。 如何在linux 下面安装VASP,首先我想说说什么叫编译? 为什么要编译呢?

说到编译,我们就先说说编译器 (Compiler),它是一种计算机程序,它会将用某种语言写成的源代码(原始语言),转换成另一种编程语言(目标语言)。它主要的目的是将便于人编写,阅读,维护的高级计算机语言所写作的源代码程序,翻译为计算机能解读、运行的低阶机器语言的程序,也就是可执行文件。

举个例子大家来理解下, 我有一个test.f90 的fortran 文件,经过编译在 window 生成 test.obj文件,在linux 下生成test.o 文件,注意这两个文件的格式是完全不同的。 这里有人就会问,那么.lib 是干什么?  比如我们的代码需要执行一些 open 语句,write 语句,read 语句等,编译器的生产厂家会把这些语句写在 .lib 运行时库里面(runtime.lib),当时我们可能在整个运行过程中需要调用第三方函数库(如IMSL、MKL等),编译器会一起链接(组装)成一个可执行文件。

我们可能后期会修改一个程序,我们可以再重新修改编译,没有修改的就不用编译,这样可以大幅度提高速度。

编译、链接、运行是三个基本步骤

编译是针对一个源文件,输出为目标代码

链接是针对一个或多个目标代码,也可以包含一个或多个库文件,输出为可执行程序

编译、链接是生成可执行文件(程序)的过程,是开发者应该做的事情

运行是使用可执行程序的过程,是用户应该做的事情

我们应该既要会安装VASP,也要会使用VASP

我们要安装VASP 需要什么呢?

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

VASP 并行版本的编译(串行版本的不常用)需要如下工具:

Intel Fortran Compiler : ifort

并行编译器:mpif90 或者 mpiifort (上海超算是mpif90)

2)数学库:一般常用Intel MKL,如果有其他的当然也可以

3)VASP 源代码 下载 VASP 源码包,VASP 并不是免费软件,大家应该可以找到。我这里是vasp.5.2.12.tar.gz 和 vasp.5.lib.tar.gz

关于 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 运行时是一扑成吊丝,还是一飞成高富帅,它们有关键性的作用。

这个如果大家都弄好的话,请检查编译器,运行库,路径无误

Intel Fortran Compiler

[tongji005@login1 vasp.5.lib]$ which ifort

/public/software/compiler/intel/composer_xe_2015.2.164/bin/intel64/ifort

并行编译器:

[tongji005@login1 vasp.5.lib]$ which mpirun

/public/software/mpi/openmpi/1.6.5/intel/bin/mpirun

[tongji005@login1 vasp.5.lib]$ which mpif90

/public/software/mpi/openmpi/1.6.5/intel/bin/mpif90

which mpiifort

/share/apps/intel/impi/4.1.0.030/intel64/bin/mpiifort

关于 VASP 的编译

1,解压:tar zxvf FileName.tar.gz

tar zxvf vasp.5.2.12.tar.gz    tar zxvf vasp.5.lib.tar.gz

2,编译库文件, 简单, 直接使用makefile.linux_ifc_P4

将19行FC=ifc改为FC=mpiifort

make -f makefile.linux_ifc_P4

得libdmy.a和linpack_double.o, 即成功

注意你在编译过程中可能会遇到:

rm: cannot remove `libdmy.a': No such file or directory

make: [libdmy.a] Error 1 (ignored)

ar vq libdmy.a preclib.o timing_.o derrf_.o dclock_.o  diolib.o dlexlib.o drdatab.o

ar: creating libdmy.a

这是一个可以忽略的错误,不用理它。

3,编译主程序, 复杂, 牵涉到数学库, FFT库, 并行库的选择, 需要修改makefile.linux_ifc_P4.

原则是尽可能使用Intel自家的东西, 简单且效率好, 故使用MKL及其自带的FFTW, 并行库使用IntelMPI

编译器选项可在Intel官网查询

一份修改好的makefile及其简单注释如下

将其保存为makefile

注意,我在关键部分做个注释。

makefile 文件中的修改部分:

修改1,先把BLAS (Basic Linear Algebra Subprograms) 这个库的位置修改

修改2,修改LAPACK 数学库的位置

修改3,修改MKL 数学库的位置

修改4,修改FT3D的位置(做傅里叶变换用的)

退出保存

make

等待结果。

没有错误提示,证明VASP 编译成功。

说在后面

关于 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中有一些关于优化执行效率的讨论,很有参考价值,要认真学习,深入领会精神!

如果大家想要知道如何写 makefile 的话,请下载附件。  附件会教你一步一步如何写makefile 《跟我一起写 Makefile》

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

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值