Skip to content

VASP 编译与使用

原子尺度材料模拟的计算机程序包 (Vienna Ab initio Simulation Package)简称VASP。本节将介绍如何在SonmiHPC集群中使用Intel的OneAPI编译器来编译VASP。

上传并解压源码包

使用SFTP工具或者rz命令上传VASP源码包,并进行解压。

shell
tar xvf vasp.6.4.3.tgz
tar xvf vasp.6.4.3.tgz

修改 makefile.include 文件

进去解压出来的文件夹中,从 arch 文件夹复制 makefile.include.intel 到当前文件夹中:

shell
cd vasp.6.4.3
cp -r arch/makefile.include.intel makefile.include
cd vasp.6.4.3
cp -r arch/makefile.include.intel makefile.include

使用 vim 编辑复制的 makefile.include 文件:

vim makefile.include
// 修改项目的几项
... ...
FC          = mpiifx
FCL         = mpiifx
... ...
CC_LIB      = icx
... ...
CXX_PARS    = icpx
... ...
MKLROOT    ?=
... ...
vim makefile.include
// 修改项目的几项
... ...
FC          = mpiifx
FCL         = mpiifx
... ...
CC_LIB      = icx
... ...
CXX_PARS    = icpx
... ...
MKLROOT    ?=
... ...

使用 oneAPI 进行编译

使用下面的命令激活 oneAPI 套件编译环境,并进行编译:

shell
source /opt/intel/oneapi/setvars.sh
make std
source /opt/intel/oneapi/setvars.sh
make std

等待编译完成即可。

创建一个文件夹用于放置编译好的二进制可执行文件:

shell
mkdir -p /share/apps/vasp/6.4.3/bin
cp -r bin/* /share/apps/vasp/6.4.3/bin/
mkdir -p /share/apps/vasp/6.4.3/bin
cp -r bin/* /share/apps/vasp/6.4.3/bin/

为方便集群内其他用户使用,修改该路径权限:

shell
chmod -R 755 /share/apps/vasp
chmod -R 755 /share/apps/vasp

Modulefile 编写

编译好的程序可以通过 Module 模块的方式提供给集群上其他用户使用,可以编写如下的 Modulefile 文件:

shell
mkdir -p /share/apps/modulefiles/vasp
mkdir -p /share/apps/modulefiles/vasp

在该路径下新建一个文件:

shell
cd  /share/apps/modulefiles/vasp && vim 6.4.3
cd  /share/apps/modulefiles/vasp && vim 6.4.3

新建文件内容如下:

#%Module###########################################
set modulefilename "VASP"
set modulefilever  "6.4.3"

set min_tcl_ver 8.4
if { $tcl_version < $min_tcl_ver } {
    puts stderr " "
    puts stderr "ERROR: This modulefile requires tcl $min_tcl_ver or greater."
    puts stderr "Your system reports that tclsh version $tcl_version is installed."
    exit 1
}

if { [ module-info mode load ] } {
    puts stderr "Loading $modulefilename version $modulefilever"
}

if { [ module-info mode ] == "unload" || [ module-info mode ] == "remove" } {
    puts stderr "Removing $modulefilename version $modulefilever"
    puts stderr "Use  to view any remaining dependent modules."
}

prepend-path PATH /share/apps/vasp/6.4.3/bin
#%Module###########################################
set modulefilename "VASP"
set modulefilever  "6.4.3"

set min_tcl_ver 8.4
if { $tcl_version < $min_tcl_ver } {
    puts stderr " "
    puts stderr "ERROR: This modulefile requires tcl $min_tcl_ver or greater."
    puts stderr "Your system reports that tclsh version $tcl_version is installed."
    exit 1
}

if { [ module-info mode load ] } {
    puts stderr "Loading $modulefilename version $modulefilever"
}

if { [ module-info mode ] == "unload" || [ module-info mode ] == "remove" } {
    puts stderr "Removing $modulefilename version $modulefilever"
    puts stderr "Use  to view any remaining dependent modules."
}

prepend-path PATH /share/apps/vasp/6.4.3/bin

保存文件后,设置一下权限:

shell
chmod -R 755 /share/apps/modulefiles
chmod -R 755 /share/apps/modulefiles

集群上面用户可以通过下面的命令来查看该模块:

[sonmi@sonmi ~]$ module avail 
------------------- /share/apps/modulefiles -------------------
vasp/6.4.3
[sonmi@sonmi ~]$ module avail 
------------------- /share/apps/modulefiles -------------------
vasp/6.4.3

用户可以通过下面的命令来加载该模块:

shell
module load vasp/6.4.3
module load vasp/6.4.3

使用示例

在用户目录下创建一个 vasp-example,从 VASP 官网下载官方的 TiO2 吸附 H2O 的输入文件。

shell
mkdir ~/vasp-example && cd ~/vasp-example
wget https://www.vasp.at/wiki/images/1/19/H2o_on_tio2.tgz
tar xvf H2o_on_tio2.tgz
cp -r h2o_on_tio2/KPOINTS .
cp -r h2o_on_tio2/POSCAR .
cp -r h2o_on_tio2/POTCAR .
cp -r h2o_on_tio2/constrMD_canonical/INCAR .
mkdir ~/vasp-example && cd ~/vasp-example
wget https://www.vasp.at/wiki/images/1/19/H2o_on_tio2.tgz
tar xvf H2o_on_tio2.tgz
cp -r h2o_on_tio2/KPOINTS .
cp -r h2o_on_tio2/POSCAR .
cp -r h2o_on_tio2/POTCAR .
cp -r h2o_on_tio2/constrMD_canonical/INCAR .

并创建一个提交脚本:

shell
vim submit.sh
vim submit.sh

脚本内容如下:

#!/bin/bash
#SBATCH --job-name=vasp
#SBATCH --partition=sonmi
#SBATCH --output=%j.out
#SBATCH --error=%j.err
#SBATCH --nodelist=compute-0-[0-1]
#SBATCH --exclusive
#SBATCH --time=02:00:00

ulimit -s unlimited
ulimit -l unlimited

module load vasp/6.4.3
source /opt/intel/oneapi/setvars.sh
cd $SLURM_SUBMIT_DIR

mpirun -np 16 vasp_std
#!/bin/bash
#SBATCH --job-name=vasp
#SBATCH --partition=sonmi
#SBATCH --output=%j.out
#SBATCH --error=%j.err
#SBATCH --nodelist=compute-0-[0-1]
#SBATCH --exclusive
#SBATCH --time=02:00:00

ulimit -s unlimited
ulimit -l unlimited

module load vasp/6.4.3
source /opt/intel/oneapi/setvars.sh
cd $SLURM_SUBMIT_DIR

mpirun -np 16 vasp_std

使用下面命令提交即可:

shell
sbatch submit.sh
sbatch submit.sh

参考链接

  1. VASP 官网
  2. VASP 在线手册
  3. TiO2 吸附 H2O 官方示例及文件

本站内容未经授权禁止转载
联系邮箱: [email protected]