天河二号作业调度系统简单使用

现将天河2号的作业调度系统的简单使用方法记录于此:

MPI

天河2号默认使用mpich-3.2.1(使用icc-14.0.2 编译),是天河2号自主实现的mpi版本,具有较高的效率。 # module 模块管理

1
2
3
4
5
6
7
module avail                # 查看可用的模块的列表。

module load [modulesfile] # 加载需要使用的modulefiles。

module load OpenFOAM/2.2.2 # 示例

module其它用法,可在help中查询

作业调度

天河二号使用的作业调度系统实际为slurm,但是将srunsbatchsqueue等命令的前缀替换成了yh,得到yhrunyhbatchyhqueue等一系列命令。 ## 基础

1
2
3
4
5
6
7
8
yhi   # yhinfo命令的简写,用于查看节点状态
其中PARTITION表示分区;NODES表示节点数;NODELIST为节点列表;STATE表示节点运行状态,
其中,idle表示节点处于空闲状态,allocated表示节点已经分配了一个或多个作业。


yhq # yhqueue命令的简写,用于查看作业运行情况
推荐使用“yhq -a”查看作业状态信息
其中JOBID 表示任务ID,Name表示任务名称,USER为用户,TIME为已运行时间,NODES表示占用节点数,NODELIST为任务运行的节点列表。

交互式提交作业

在shell窗口中执行yhrun 命令,主要命令格式如下:

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
yhrun [options] program

-n, --ntasks=number # 指定要运行的任务数
-c, --cpus-per-task=ncpus # 每个任务需要ncpus 个处理器核
-N, --nodes=minnodes[-maxnodes] # 请求为作业至少分配minnodes(最大maxnodes)个节点。 (例如“-N 2-4”或“--nodes=2-4”)
如果没有指定-N,缺省行为是分配足够多的节点以满足-n和-c参数的需求

-p, --partition=partition name # 在指定分区中分配资源。如未指定,则由控制进程在系统默认分区中分配资源。
-w, --nodelist=node name list # 请求指定的节点名字列表。作业分配资源中将至少包含这些节点。
列表可以用逗号分隔的节点名或节点范围(如cn[1-5,7,...])指定,或者用文件名指定;如果参数中包含“/”字符,则会被当作文件名。
-x, --exclude=node name list # 不要将指定的节点分配给作业

-D, --workdir=directory # set working directory for batch script
-I, --immediate[=secs] # exit if resources not available in "secs"

-o, --output=out # location of stdout redirection
-J, --job-name=jobname # name of job
-l, --label # prepend task number to lines of stdout/err

-h, --help # 若需使用yhrun更多选项,可通过“yhrun –h”或“yhrun --help”查看。


# eg:
yhrun -n 4 -p bigdata hostname

yhrun -n 4 -w cn[7303-7306] -p bigdata hostname

yhrun -n 4 -N 4 -w cn[7303-7304] -p bigdata hostname

yhrun -n 4 -N 4 -x cn[7303-7304] -p bigdata hostname

节点资源抢占命令 yhalloc

该命令支持用户在提交作业前,抢占所需计算资源

1
yhalloc -N 1 -p bigdata 
通过yhq查看相应的jobID 为1051,节点为cn7314,然后ssh到对应节点进行操作

取消自己的作业

使用yhcancel命令

1
yhcancel jobid 

批处理作业命令 yhbatch

在资源满足要求时,分配完计算节点之后,系统将在所分配的第一个计算节点(而不是登录节点)上加载执行用户的作业脚本。

1
2
3
4
5
6
7
8
9
cat > mybash.sh 

#!/bin/bash
yhrun -n 4 -N 4 -p bigdata hostname


chmou mybash.sh

yhbatch -N 4 -p bigdata ./mybash.sh
计算开始后,工作目录中会生成以slurm开头的.out 文件为输出文件。 更多选项,用户可以通过yhbatch --help命令查看。 如果不需要使用MPI的话,也可以不使用yhrun

单个节点上提交多个作业

因为天河2是独享作业,当一个节点上已经被分配出去之后,即便没有使用全部的核心,也无法继续提交作业。 所以,若想在一个节点上运行多个作业,必须同时提交上去,如下: 某用户有4个 a.out 需要运行,每个a.out最多只能高效运用6 个CPU 核,那么可以构建下面的任务脚本,在一个计算节点上同时运行多个作业:

1
2
3
4
5
6
7
8
cat > job.sh 

#!/bin/bash
yhrun –n 4 a.out arg.1 &
yhrun –n 4 a.out arg.2 &
yhrun –n 4 a.out arg.3 &
yhrun –n 4 a.out arg.4 &
wait # important

然后通过yhbatch –N 1 job.sh 来一次提交计算任务,使所有小的计算任务都可以在一个节点同时进行计算。 如果不需要使用MPI的话,也可以不使用yhrun