VASP-6.1.0 cpu&gpu版本如何在Linux&HPC并行计算集群上安装并使用?

声明:本文只用于研究学习vasp软件安装与使用,禁止用于商业用途,如您有使用软件的需求,请前往正规渠道购买正版软件授权

前提条件:

安装编译vasp之前,保证集群基础环境没有问题,集群一般都为内网环境,因此需要提前准备好相关包和配置,例如,节点间免密登录、关闭防火墙、hosts文件,gpu卡驱动及cudad,配置好本地yum源,安装一些gcc cmake、glibc等组件依赖包,如果不知道环境需要安装哪个依赖,centos系统安装可以选择工作站版本全包安装,或者在安装软件的时候,根据报错再去安装。

一、软件简介:

VASP全称Vienna Ab-initio Simulation Package

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

此教程主要介绍了在Centos 7.6系统中通过源码对VASP 6.1.0的CPU及GPU版本进行编译。

二、版本功能

基于Space-time计算极化率,适用于研究大体系;
◆ 应用Space-time算法(Low Scaling ACFDT/RPA)得到精确的能量、力和声子谱;
◆ 应用Space-time算法在ACFDT/RPA理论层面上自动优化原子位置;
◆ Moeller-Plesset微扰理论(MP2)得到精确能量;
◆ 新增介电相关杂化泛函(DDH/DSH);
◆ 新增电子-声子耦合计算(Zacharias-Giustino方法);
◆ 新增X-ray吸收光谱(XAS);
◆ GUI中添加电场参数;
◆ 提高NMR计算精确度;
◆ 计算光谱发射率、总发射率关于温度的函数;
◆ 黑体辐射关于频率的函数。

三、安装环境要求

1、 Intel编译器 2021,intel-mkl数学库2021,intel-mpi并行库2021: 离线包
2、 Centos 7.x
3、 CUDA 11.2(用于编译GPU版本)

4、准备vasp6.1.0 源码包,百度上有很多下载的地方

四、编译环境设置

Intel编译器中包含许多组件,VASP的编译过程主要使用Intel编译器中自带的BLAS、FFTW、MPI等组件。

4.1 下载离线安装compiler-intelp-2021.2.0-118-offline.sh编译器并设置环境变量

sh compiler-intelp-2021.2.0-118-offline.sh 执行安装脚本,安装过程很简单

#!/bin/bash
export compiler_HOME=/public/software/intel_mpi_2021/compiler/latest/linux
export PATH=$compiler_HOME/bin:$compiler_HOME/bin"${PATH:+:${PATH}}"
export LD_LIBRARY_PATH=$compiler_HOME/lib"${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
export C_INCLUDE_PATH=$compiler_HOME/include"${C_INCLUDE_PATH:+:${C_INCLUDE_PATH}}"
export INCLUDE_PATH=$compiler_HOME/include"${INCLUDE_PATH:+:${INCLUDE_PATH}}"

4.2 下载离线安装intel-mkl-p-2021.2.0.296-offline.sh数学库,并配置环境变量

sh intel-mkl-p-2021.2.0.296-offline.sh  执行安装脚本,安装过程很简单

#!/bin/bash
export MKL_HOME=/public/software/intel_mpi_2021/mkl/latest
export PATH=$MKL_HOME/bin:$MKL_HOME/bin"${PATH:+:${PATH}}"
export LD_LIBRARY_PATH=$MKL_HOME/lib"${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
export C_INCLUDE_PATH=$MKL_HOME/include"${C_INCLUDE_PATH:+:${C_INCLUDE_PATH}}"
export INCLUDE_PATH=$MKL_HOME/include"${INCLUDE_PATH:+:${INCLUDE_PATH}}"

4.3 下载安装mpi_intel_p_2021.2.0.215-offline.sh 并行库,并配置环境变量

sh mpi_intel_p_2021.2.0.215-offline.sh   执行安装脚本安装

#!/bin/bash
export MPI_HOME=/public/software/intel_mpi_2021/mpi/latest/
export PATH=$MPI_HOME/bin:$MPI_HOME/bin"${PATH:+:${PATH}}"
export LD_LIBRARY_PATH=$MPI_HOME/lib"${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
export C_INCLUDE_PATH=$MPI_HOME/include"${C_INCLUDE_PATH:+:${C_INCLUDE_PATH}}"
export INCLUDE_PATH=$MPI_HOME/include"${INCLUDE_PATH:+:${INCLUDE_PATH}}"

五、编译VASP6.1

5.1 GPU版编译

cd /home/app/
tar -zxvf vasp.6.1.0.tar.gz
cd vasp.6.1.0
cp ./arch/makefile.include.linux_intel ./makefile.include ##arch里面有多个编译配置,使用intel编译器用makefile.include.linux_intel
使用哪个编译器,就拷哪个,这里使用intel编译器为例

修改makefile.include

针对不同机器可能需要对makefile.include作出修改,可以参考vasp.6.1.0目录下的readme.md文档
vi ./makefile.include
OFLAG项添加-xhost,此选项可以使VASP自动适配当前机器CPU所支持的最高指令集。在主节点编译时,如果主节点CPU与计算节点CPU型号不同,后续提交任务至计算节点时可能会出错,建议ssh至计算节点进行编译。
OFLAG      = -O2 -xhost

编译

make std ncl gam 编译标准版,非共线版,Gamma only版
编译完成后在vasp.6.1.0/bin目录下会产生vasp_std,vasp_gam,vasp_ncl三个可执行文件

5.2 GPU版编译

ssh进入有显卡并安装了CUDA驱动的节点

5.2.1 配置CUDA及INTEL编译器环境(按实际路径设置)
export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
source /public/software/apps/intel/2021/compilers_and_libraries_2021/linux/bin/compilervars.sh intel64 
source /public/software/apps/intel/2021/compilers_and_libraries_2021/linux/mpi/intel64/bin/mpivars.sh intel64 
5.2.2 修改makefile.include
cd /home/app/vasp.6.1.0
vi ./makefile.include

makefile.include主要修改的部分为GENCODE_ARCH,这部分初始文本可能未包括本机GPU及安装CUDA所支持的gencode。
查找本机GPU所支持的gencode类型

GENCODE_ARCH     :=-gencode=arch=compute_50,code=\"sm_50,compute_50\"
                   -gencode=arch=compute_30,code=\"sm_30,compute_30\" \
                   -gencode=arch=compute_35,code=\"sm_35,compute_35\" \
                   -gencode=arch=compute_60,code=\"sm_60,compute_60\" \
                   -gencode=arch=compute_70,code=\"sm_70,compute_70\" \
                   -gencode=arch=compute_72,code=\"sm_72,compute_72\"

 make gpu gpu_ncl 编译gpu,gpu_ncl
编译完成后在vasp.6.1.0/bin目录下会产生vasp_gpu,vasp_gpu_ncl可执行文件

六. VASP任务提交Slurm队列
6.1 CPU任务提交脚本范例

前提是在编译安装vasp之前就安装好了,slurm或pbs,保证集群基本环境没有问题

#!/bin/bash
#SBATCH -N 1
#SBATCH -p WHEEL
#SBATCH -n 10
#SBATCH -o output
#SBATCH --nodelist=compute-0-0
cd $SLURM_SUBMIT_DIR
ulimit -s unlimited
source /home/lfpara/apps/intel/2021/compilers_2021/linux/bin/compilervars.sh intel64
source /home/lfpara/apps/intel/18/compilers_2021/linux/mpi/intel64/bin/mpivars.sh intel64
mpirun -np 10 /home/app/vasp.6.1.0/bin/vasp_std
#!/bin/bash
#SBATCH -N 1
#SBATCH -p WHEEL
#SBATCH --cpus-per-task=8
#SBATCH --gpus-per-task=1
#SBATCH -o output
#SBATCH --nodelist=compute-0-0
cd $SLURM_SUBMIT_DIR
ulimit -s unlimited
source /home/lfpara/apps/intel/18/compilers_2021/linux/bin/compilervars.sh intel64
source /home/lfpara/apps/intel/18/compilers_2021/linux/mpi/intel64/bin/mpivars.sh intel64
export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
mpirun -np 1 /home/app/vasp.6.1.0/bin/vasp_gpu

提交VASP 6.1的GPU任务mpirun -np后面的数量不是调用CPU数量,而是GPU数量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术瘾君子1573

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值