作业调度管理系统

武大超算使用 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格式
作业脚本基本结构
  1. 第一行是脚本语言解释器的路径,一般选择 bash 作为解释器

    #!/bin/bash
    
  2. 若干行由 #SBATCH 引导的 Slurm 设置选项,例如

    #SBATCH --partition=hpxg     #申请分区 `hpxg` 的计算资源   
    #SBATCH --nodes=1            #申请 1 个节点
    #SBATCH --ntasks-per-node=1  #申请每个节点上分配一个任务(进程)
    #SBATCH --time=06:00:00      #计划最多运行 6 小时
    
  3. 计算程序运行需要设置的环境变量,例如

    module load cran/R-4.0.3     #加载系统预装的 R 4.0.3
    
    cd $SLURM_SUBMIT_DIR         #进入提交脚本时所在的目录
    
  4. 运行程序的命令,例如

    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 用户名

results matching ""

    No results matching ""