作业调度管理系统
武大超算使用 Slurm 系统,统一管理所有计算资源、统一调度所有用户的计算任务,用户必须通过 Slurm 系统来进行计算
注意事项
- 请勿在
swarm登录节点直接运行计算程序 - 请勿绕开
Slurm作业管理调度系统在计算节点直接运行计算程序 - 违反上述事项可能导致用户账户被限制使用
如果用户的程序编译、数据预处理、数据后处理、压缩、解压缩等任务耗时较长,请将此类任务也作为一个作业提交
作业提交
用户应该为计算任务建立 batch script 批处理脚本,也称为作业脚本 ,用 sbatch 命令提交作业脚本,将计算任务提交给 Slurm 系统
作业脚本格式要求
UTF-8编码的文本文档- 微软系统下的文本编辑器常常会将文本文档保存成
UTF-8 with BOM编码,这不符合要求
- 微软系统下的文本编辑器常常会将文本文档保存成
LF换行符格式- 也叫做
Unix格式,或者\n - 微软系统的文本编辑器会将文本文档保存成
CRLF格式(也叫dos格式、Windows格式,或者\r\n),这不符合要求 dos2unix命令,可以把CRLF格式的文本文档转换为LF格式
- 也叫做
作业脚本基本结构
第一行是脚本语言解释器的路径,一般选择
bash作为解释器#!/bin/bash若干行由
#SBATCH引导的 Slurm 设置选项,例如#SBATCH --partition=hpxg #申请分区 `hpxg` 的计算资源 #SBATCH --nodes=1 #申请 1 个节点 #SBATCH --ntasks-per-node=1 #申请每个节点上分配一个任务(进程) #SBATCH --time=06:00:00 #计划最多运行 6 小时计算程序运行需要设置的环境变量,例如
module load cran/R-4.0.3 #加载系统预装的 R 4.0.3 cd $SLURM_SUBMIT_DIR #进入提交脚本时所在的目录运行程序的命令,例如
R --vanilla CMD BATCH infile.R
提交作业
示例:一个运行 R 程序的作业脚本
#!/bin/bash
#SBATCH --partition=hpxg
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
#SBATCH --time=06:00:00
module load cran/R-4.0.3
cd $SLURM_SUBMIT_DIR
R --vanilla CMD BATCH infile.R
将上面的代码保存为符合格式要求的文本文档,跟 infile.R 放在同一个目录下,命名为 myjob.sbatch,然后运行以下命令提交作业
sbatch myjob.sbatch
sbatch 命令把作业脚本提交给 Slurm 系统,获得一个 JobID 作业编号,并显示给用户
作业编号
JobID是一个正整数数字。
Slurm 系统将根据作业脚本选项所列出的计算资源申请需求,结合当前可用的资源现状,给计算任务排队、分配资源、启动计算程序、输出各种中间过程信息、计算结束后回收计算资源。
请用户根据上面的示例,创建自己的作业脚本,来提交计算任务。
作业管理
查看作业状态信息
运行以下命令查看作业状态信息
squeue
squeue 显示的信息包括以下内容
JobID,作业编号PARTITION,作业在哪个分区上运行NAME,作业名称,默认是作业脚本的名字USER,作业的所有者ST,作业当前状态,详见 Job State Codes,常见的有CG作业正在完成F作业失败PD作业正在等待分配资源R作业正在运行
TIME,作业已运行时间NODES,作业占用的计算节点数NODELIST,作业占用的计算节点名(REASON),作业正在等待执行的原因,详见 Job Reason Codes,常见的有AssoGrpCpuLimit导师名下所有学生正在使用的CPU总数达到了导师开通的CPU数量限额AssoGrpGRES导师名下所有学生正在使用的GPU总数达到了导师开通的GPU数量限额Priority作业正在排队等待QOSMinGRES提交到GPU分区的作业没有申请GPU资源
登录计算节点查看任务运行状态
squeue 显示的状态信息里包括了作业程序运行所在的计算节点名,运行以下命令可以登录到计算节点
ssh 计算节点名
- 在计算节点上,使用
top命令可以查看程序使用 CPU 的状况 - 如果是 GPU 程序,在计算节点上使用
nvidia-smi命令可以查看程序使用 GPU 的状况 - 用户有程序正在运行的计算节点才允许登录
取消作业
如果用户要取消作业,先运行 squeue 命令查询作业编号数字 JobID ,然后运行以下命令取消作业
scancel JobID
如果要取消用户的所有作业
scancel -u 用户名