国科智算提交VASP任务
今天QQ群里,有人问怎么在国科智算的超算中心提交VASP的任务。本着一言不合就写教程的态度,这一节我们就看下VASP的任务是怎么提交的。提交任务的脚本见群文件:vasp_qiangli.sh
。下载后重命名成vasp.sh
即可。想试用的,购买机时的可以加QQ群:608307988咨询一下。
Slurm
国科智算上系统采用的是slurm
任务调度工具。Simple Linux Utility for Resource Management,它是一个用于Linux
和 Unix
内核系统的免费、开源的任务调度工具,被世界范围内的超级计算机和计算机群广泛采用。它提供了三个关键功能。第一,为用户分配一定时间的专享或非专享的资源(计算机节点),以供用户执行工作。第二,它提供了一个框架,用于启动、执行、监测在节点上运行着的任务(通常是并行的任务,例如MPI
,第三,为任务队列合理地分配资源。 大约60%的500强超级计算机上都运行着Slurm
,包括2016年前世界上最快的计算机天河-2。 以上是来自维基百科的解释,具体的大家可以浏览Slurm
的官网:Slurm Workload Manager
Sbatch
在这个调度系统中,提交任务时我们需要用到命令: sbatch
: https://slurm.schedmd.com/sbatch.html
sbatch
命令后面要跟一堆的参数,比如计算时间,节点数,邮箱,队列,调用的环境变量,任务名称等等。但这些信息通过命令直接输入又有些麻烦,所以我们把它们放到一个脚本
里面,免得每次都重新输入一大长串的内容。而这个脚本,也就是我们本节内容的主角: vasp.sh
。
首先,我们浏览sbatch
的详细参数: https://slurm.schedmd.com/sbatch.html
然后根据这些参数,我们就可以创建一个vasp.sh
脚本了。
vasp.sh
下面就是vasp.sh
的主要内容:有2种写法,这两种写法也可以混着用,不影响。主要还是要参考sbatch
的使用说明,需要什么就按照格式填写相应的内容。
写法(一)
#!/bin/bash
#SBATCH -J BigBro ## Job Name
#SBATCH -o %j.out ## standard output
#SBATCH -e %j.err ## standard error
#SBATCH -p operation ## Partition
#SBATCH -N 1 ## Number of nodes
#SBATCH --ntasks-per-node=28 ## Each node has 28 tasks
#SBATCH -t 02-23:57:25 ## time for your job: 2 d,23 h ,57 min and 23 s
module load mpi/intelmpi/2017.4.239
mpirun /public/software/apps/vasp/544/vasp.5.4.4/bin/vasp_std
写法(二)
#!/bin/bash
#SBATCH --job-name=BigBro ## Job Name
#SBATCH --output=%j.out ## standard output
#SBATCH --error=%j.err ## standard error
#SBATCH --partition=operation ## Partition
#SBATCH --nodes=1 ## Number of nodes
#SBATCH --ntasks-per-node=28 ## Each node has 28 tasks
#SBATCH --time=02-23:57:25 ## time for your job: 2 d,23 h ,57 min and 23 s
module load mpi/intelmpi/2017.4.239
mpirun /public/software/apps/vasp/544/vasp.5.4.4/bin/vasp_std
上面每一行的含义,大师兄都注释出来了。
从第二行往下一次为:
- 任务的名字,
VASP
的标准输出,- 错误输出,
- 任务运行的分区,
- 使用的节点,
- 每个节点的的
tasks
数目。这个tasks
可以理解为每个节点的核数,国科智算的新机器每个节点是28个核。 - 以及你的计算所用的时间。
最后两行为:我们调用的环境变量以及运行vasp
程序。
需要注意的是,脚本里面的内容比如-N
(修改任务所需的节点数目)、-J
(修改任务的名字)这些我们频繁更换的,可以从脚本里面拿出来,在命令中运行。
sbtach -N 2 -J test vasp.sh
本人自己的计算,一般28个核就够,任务名字也懒得修改。就把-N
,-J
写到vasp.sh中了。大家根据自己的任务特点自动修改就行了。下面我们具体演示一下。
实例操作1:
我们要在operation
分区,运行一个VASP
的单点计算,任务名称为:single
, 使用2个节点,限制时间为2个小时;那么脚本的修改以及任务提交如下:
gkzshpc101@login02:~/ex-A11/test_single$
gkzshpc101@login02:~/ex-A11/test_single$ ls
INCAR KPOINTS POSCAR POTCAR vasp.sh
gkzshpc101@login02:~/ex-A11/test_single$ cat vasp.sh
#!/bin/bash
#SBATCH -J single
#SBATCH -o out.%j
#SBATCH -e err.%j
#SBATCH -p operation
#SBATCH -N 2
#SBATCH --ntasks-per-node=28
#SBATCH -t 02:00:25
module load mpi/intelmpi/2017.4.239
mpirun /public/software/apps/vasp/544/vasp.5.4.4/bin/vasp_std
gkzshpc101@login02:~/ex-A11/test_single$ sbatch vasp.sh
Submitted batch job 35525
gkzshpc101@login02:~/ex-A11/test_single$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
35525 operation single gkzshpc1 R 0:09 2 c[0032-0033]
gkzshpc101@login02:~/ex-A11/test_single$ ls
CHG CHGCAR CONTCAR DOSCAR EIGENVAL err.35525 IBZKPT INCAR KPOINTS OSZICAR out.35525 OUTCAR PCDAT POSCAR POTCAR REPORT vasprun.xml vasp.sh WAVECAR XDATCAR
gkzshpc101@login02:~/ex-A11/test_single$
实例操作2:
我们在Operation
分区,运行一个VASP
的CI-NEB
的过渡态计算任务,任务名称为:NEB
,使用4个节点,限制时间为12个小时;那么脚本的修改以及任务提交如下:插了7个点,用112个核算,16个核算一个点。下面有点长,文字描述就到此结束,自己慢慢看,希望对大家有所帮助。注意:脚本里面,我们换成编译了VTST
的vasp 5.4.1
版本。
gkzshpc101@login02:~/ex-A11/test_neb$ ls
00 01 02 03 04 05 06 07 08 FS INCAR IS KPOINTS POTCAR vasp.sh
gkzshpc101@login02:~/ex-A11/test_neb$ cat vasp.sh
#!/bin/bash
#SBATCH -J NEB
#SBATCH -o out.%j
#SBATCH -e err.%j
#SBATCH -p operation
#SBATCH -N 4
#SBATCH --ntasks-per-node=28
#SBATCH -t 12:00:25
module load mpi/intelmpi/2017.4.239
mpirun /public/software/apps/vasp/541_neb/vasp.5.4.1/bin/vasp_std
gkzshpc101@login02:~/ex-A11/test_neb$
gkzshpc101@login02:~/ex-A11/test_neb$ sbatch vasp.sh
Submitted batch job 35526
gkzshpc101@login02:~/ex-A11/test_neb$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
35526 operation NEB gkzshpc1 R 0:07 4 c[0056-0057,0060-0061]
gkzshpc101@login02:~/ex-A11/test_neb$ ls
00 01 02 03 04 05 06 07 08 err.35526 FS INCAR IS KPOINTS out.35526 POTCAR vasprun.xml vasp.sh
gkzshpc101@login02:~/ex-A11/test_neb$ ls *
err.35526 FS INCAR IS KPOINTS out.35526 POTCAR vasprun.xml vasp.sh
00:
POSCAR
01:
CHG CHGCAR CONTCAR DOSCAR EIGENVAL IBZKPT OSZICAR OUTCAR PCDAT POSCAR REPORT WAVECAR XDATCAR
02:
CHG CHGCAR CONTCAR DOSCAR EIGENVAL IBZKPT OSZICAR OUTCAR PCDAT POSCAR REPORT stdout WAVECAR XDATCAR
03:
CHG CHGCAR CONTCAR DOSCAR EIGENVAL IBZKPT OSZICAR OUTCAR PCDAT POSCAR REPORT stdout WAVECAR XDATCAR
04:
CHG CHGCAR CONTCAR DOSCAR EIGENVAL IBZKPT OSZICAR OUTCAR PCDAT POSCAR REPORT stdout WAVECAR XDATCAR
05:
CHG CHGCAR CONTCAR DOSCAR EIGENVAL IBZKPT OSZICAR OUTCAR PCDAT POSCAR REPORT stdout WAVECAR XDATCAR
06:
CHG CHGCAR CONTCAR DOSCAR EIGENVAL IBZKPT OSZICAR OUTCAR PCDAT POSCAR REPORT stdout WAVECAR XDATCAR
07:
CHG CHGCAR CONTCAR DOSCAR EIGENVAL IBZKPT OSZICAR OUTCAR PCDAT POSCAR REPORT stdout WAVECAR XDATCAR
08:
CHG CHGCAR CONTCAR DOSCAR EIGENVAL IBZKPT OSZICAR OUTCAR PCDAT POSCAR REPORT stdout WAVECAR XDATCAR
gkzshpc101@login02:~/ex-A11/test_neb$
gkzshpc101@login02:~/ex-A11/test_neb$ head -n 10 out.35526
running on 112 total cores
each image running on 16 cores
distrk: each k-point on 16 cores, 1 groups
distr: one band on 1 cores, 16 groups
vasp.5.4.1 05Feb16 (build May 24 2018 19:36:47) complex