国科智算提交VASP任务

国科智算提交VASP任务

今天QQ群里,有人问怎么在国科智算的超算中心提交VASP的任务。本着一言不合就写教程的态度,这一节我们就看下VASP的任务是怎么提交的。提交任务的脚本见群文件:vasp_qiangli.sh。下载后重命名成vasp.sh即可。想试用的,购买机时的可以加QQ群:608307988咨询一下。

Slurm

国科智算上系统采用的是slurm 任务调度工具。Simple Linux Utility for Resource Management,它是一个用于LinuxUnix 内核系统的免费、开源的任务调度工具,被世界范围内的超级计算机和计算机群广泛采用。它提供了三个关键功能。第一,为用户分配一定时间的专享或非专享的资源(计算机节点),以供用户执行工作。第二,它提供了一个框架,用于启动、执行、监测在节点上运行着的任务(通常是并行的任务,例如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的使用说明,需要什么就按照格式填写相应的内容。

写法(一)

1
2
3
4
5
6
7
8
9
10
11
12
#!/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

写法(二)

1
2
3
4
5
6
7
8
9
10
11
#!/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(修改任务的名字)这些我们频繁更换的,可以从脚本里面拿出来,在命令中运行。

1
sbtach -N 2 -J test vasp.sh 

本人自己的计算,一般28个核就够,任务名字也懒得修改。就把-N,-J写到vasp.sh中了。大家根据自己的任务特点自动修改就行了。下面我们具体演示一下。

实例操作1:

我们要在operation分区,运行一个VASP的单点计算,任务名称为:single, 使用2个节点,限制时间为2个小时;那么脚本的修改以及任务提交如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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分区,运行一个VASPCI-NEB的过渡态计算任务,任务名称为:NEB,使用4个节点,限制时间为12个小时;那么脚本的修改以及任务提交如下:插了7个点,用112个核算,16个核算一个点。下面有点长,文字描述就到此结束,自己慢慢看,希望对大家有所帮助。注意:脚本里面,我们换成编译了VTSTvasp 5.4.1版本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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