vasp 编译安装测试说明

科学计算软件编译安装方法说明 --- vasp 篇 (提供免费测试 QQ 178068275

 

 

 

官网地址:

http://www.vasp.at/


截止目前(2017.4.22)最新版本:

http://www.vasp.at/index.php/news/44-administrative/118-new-release-vasp-5-4-4


下载:

需要购买版权

 

1. 什么是VASP?

VASP 全称 Vienna Ab-initio Simulation Package。VASP 是维也纳大学 Hafner 小组开发的进行电子结构计算和量子力学-分子动力学模拟软件包。它是目前材料模拟和计算物质科学研究中最流行的商用软件之一。

 

2.  vasp 编译环境

Intel Compiler /GNU Compiler  + MPI Compiler


3. 安装 Intel Compiler 编译器,设置编译环境

如果使用的是Intel的CPU,建议使用Intel的编译器。

详细安装方法参见博客相关文章。

 

例如使用TH-1A的Intel 2013编译器编译 vasp,可以加载如下环境变量:

source /opt/intel/composer_xe_2013.0.079/bin/iccvars.sh intel64  
source /opt/intel/composer_xe_2013.0.079/bin/ifortvars.sh intel64
source /opt/intel/composer_xe_2013.0.079/mkl/bin/mklvars.sh intel64

4.安装 MPI Compiler,设置编译环境

编译并行版的程序需要并行编译器,例如MPI并行的程序需要MPI编译器,常用的MPI例如Intel MPI 、MPICH 、OPENMPI等。

不同的机器可能针对自身硬件进行MPI优化,天河系统的MPI是基于开源MPICH进行的二次开发优化,进而支持性能卓越的天河自主高速互联网络。

详细安装方法参见博客相关文章。

 

例如使用TH-1A的Intel 2013编译器编译的mpich,可以加载如下环境变量:

export MPI_HOME=/usr/local/mpi-intel2013  
export PATH=$MPI_HOME/bin:$PATH  
export LD_LIBRARY_PATH=$MPI_HOME/lib:$LD_LIBRARY_PATH  

5.编译vasp5.4及以上版本

自从vasp5.4版本以后,它的目录结构及makefile有了很大的改进和提升,不再像之前需要繁琐的修改了,而是通过makefile.include文件进行配置即可。


5.1 打补丁(不一定需要)

因为vasp5.4版本是最新版本,如果官方更新了修复补丁,可以从官网下载,先打补丁。

举例:

现在拥有vasp.5.4.tar.gz 及 patch.5.4.1.08072015.gz 补丁,可以如下操作:

tar zxvf vasp.5.4.tar.gz 
gunzip patch.5.4.1.08072015.gz 
mv patch.5.4.1.08072015 vasp.5.4
cd vasp.5.4
patch -p1 < patch.5.4.1.08072015

5.2 修改makfile.include

tar zxvf vasp.5.4.tar.gz # 如果打了补丁则并不需要再次解压缩
cd vasp.5.4
# 修改 makefile.include 文件
cp ./arch/makefile.include.linux_intel makefile.include
# 备注:该步骤为主要修改部分,请仔细修改。
vim makefile.include 

将:

FC = mpiifort

FCL = mpiifort -mkl

修改为:

FC = mpif90

FCL = mpif90 -mkl

说明:

默认是使用intel的mpi,即为mpiifort。但是如果使用的是例如mpich/openmpi的话,那么需要修改为mpif90。


将:BLACS      = -lmkl_blacs_openmpi_lp64

修改为:BLACS      = -lmkl_blacs_intelmpi_lp64

说明:

检查BLACS ,如果默认就是 -lmkl_blacs_intelmpi_lp64则不需要修改(针对impi及mpich等);如果使用openmpi的时候则需要设置为 -lmkl_blacs_openmpi_lp64。


将:OBJECTS = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o $(MKLROOT)/interfaces/fftw3xf/libfftw3xf_intel.a

修改为:OBJECTS = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o /path/to/libfftw3xf_intel.a

说明:

如果是在安装intel compiler后手动编译了libfftw3xf_intel.a 则不需要修改,否则它会找不到这个fftw库。

我们需要手动编译这个库,并把“/path/to”设置为实际的路径。


5.3 编译vasp

现在可以开始编译vasp了,默认情况下,可以选择:

make all 2>&1 | tee make.log

这样可以在编译后生成三个可执行文件,如下:

vasp_std  默认版本

vasp_ncl   支持自旋轨道耦合的版本

vasp_gam 支持gamma的版本。


6.编译升级1:编译vasp + gpu

6.1 修改makefile.include

基本步骤与上一节相同,只不过在拷贝makefile.include的时候,选择cuda的版本,并且进行相应的设置即可,见下:

tar zxvf vasp.5.4.tar.gz 
cd vasp.5.4
# 修改 makefile.include 文件
cp ./arch/makefile.include.linux_intel_cuda makefile.include
# 备注:该步骤为主要修改部分,请仔细修改。
vim makefile.include 

出了上一节的修改内容外,额外修改如下内容:


修改:CUDA_ROOT  := /usr/local/cuda/

为:CUDA_ROOT  := /vol-th/software/cuda/cuda-7.5

说明:

如果cuda不是安装在默认的路径下,会找不到,所以手动设置一下。(请把红色部分设置为cuda的实际安装路径)


修改:

GENCODE_ARCH    := -gencode=arch=compute_30,code=\"sm_30,compute_30\" -gencode=arch=compute_35,code=\"sm_35,compute_35\"

为:

GENCODE_ARCH    := -gencode=arch=compute_20,code=\"sm_20,compute_20\"-gencode=arch=compute_30,code=\"sm_30,compute_30\"-gencode=arch=compute_35,code=\"sm_35,compute_35\"

说明:

针对自己的GPU型号,查看支持的gencode类型,不一定需要修改这个。

参考网址:

https://en.wikipedia.org/wiki/Nvidia_Tesla

搜索GPU型号对应的CUDA compute ability即可获得。


将:

MPI_INC    =/opt/intel/impi_latest/include64

修改为:

MPI_INC    =/usr/local/mpi-intel2013/include

说明:

修改mpi的include路径,将红色部分修改为实际的mpi的include路径。


6.2 编译vasp的GPU版本

现在可以开始编译vasp了,命令如下:

make gpu 2>&1 | tee make.log

这样可以在编译后生成2个可执行文件,分别是:

vasp_gpu 默认版本

vasp_gpu_ncl   支持自旋轨道耦合的版本


7.编译升级2:编译vasp + neb (VTSTcode)

可以参考:http://theory.cm.utexas.edu/vtsttools/,详细介绍如下;

希望编译支持neb的vasp需要:


7.1 从VTST官网 http://theory.cm.utexas.edu/vtsttools/download.html 下载 vtstcode 

7.2 将vtstcode文件下的所有文件,全部复制到vasp.5.X/src文件夹下,覆盖。

tar zxvf vtstcode.tgz
cp vtstcode-*/* vasp.5.4/src

7.3 修改main.F文件

cd vasp.5.4/src
vim main.F

将:

CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, &
     LATT_CUR%A,LATT_CUR%B,IO%IU6)
修改为:
CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, &
     TSIF, LATT_CUR%A,LATT_CUR%B,IO%IU6)

7.4 添加文件的编译规则

vim vasp.5.4/src/.objects

在“    hamil_rot.o \

        chain.o \” 之间添加代码,

修改完成后形成:

        hamil_rot.o \

        bfgs.o dynmat.o  instanton.o  lbfgs.o sd.o   cg.o dimer.o bbm.o \

        fire.o lanczos.o neb.o  qm.o opt.o \

        chain.o \


7.5 编译vasp

至此,针对neb的修改完成,正常编译vasp即可。

make all 2>&1 | tee make.log

8. 使用方法(针对TH-1A系统的slurm作业调度系统举例)


8.1 准备输入文件

8.2 编写提交脚本sub.sh

#!/bin/bash
yhrun -N 2 -n 24 -p debug /path/to/vasp_std 

说明:

-N 总节点数

-n 总核数

-p 使用分区名称

/path/to/vasp_std 请给出使用的vasp可执行文件的绝对路径及名称。


备注:

如果遇到到不到动态库的情况,请添加动态库所在路径到LD_LIBRARY_PATH变量即可,例如:

export LD_LIBRARY_PATH=/vol-th/intel_composer_xe_2013.0.079_lib:$LD_LIBRARY_PATH


8.3 提交任务

yhbatch -N2 -n24 -pdebug sub.sh

9. 并行参数介绍

9.1 NPAR / NCORE


NPAR parallelization over bands

NCORE determines how many cores work on one orbital.

NCORE = total number cores/NPAR.


可以依据实际的机器情况及计算问题设置,例如:

NPAR = 4, 6, 8

或者

NCORE = 12


以上给出的是推荐的,但实际值请根据实际测试经验确定,官方给出的建议是:

For optimal performance we recommend to set NCORE= 4 - approx SQRT( number of cores)


引用参考:

vasp的并行分为两个方面:一是对平面波系数的并行,一是对能带的并行。

对两者都支持的算法是RMM—DIIS迭代矩阵对角化(即IALGO=48);而共轭梯度band by band 法(IALGO=8)只支持对平面波系数的并行。

开启对能带并行的命令是NPAR。

NPAR的默认值是1,意思是只对平面波系数并行,所有的节点都计算同一个能带。vasp手册中建议这种情况适合于节点数较少的集群。

如果设置NPAR的值为总节点数,那么每个节点将会独自计算一个能带。vasp手册中指出,这种情况适合于通信带宽较小的集群,同时,将会增加内存需求。

如果NPAR的值位于1到总节点数之间,此时,计算一个能带所需的节点数为:总结点数/NPAR。


9.2 LPLANE

可以设置LPLANE=.TRUE.

这样取值,会减少在快速傅里叶变换时的通信带宽,加快计算速度。但仅建议在超算集群上开启。


9.编译补充 vasp5.3及以下版本的makefile介绍(暂略)


P.S 提供 vasp 的测试机会。


欢迎交流。


  • 5
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值