一、前言

本文基于北京超级云计算中心A分区平台介绍Slurm的用法,主要目的是让没接触过Slurm作业调度系统的人可以快速上手,轻松的提交与管理自己的作业。BSCC-A5超算的每个节点具有2颗32核AMD EPYC 7452@2.35GHz CPU组成,单节点64核,256GB内存,每个队伍最多使用2个节点共128核资源,节点间通过56Gb Infiniband 高速网互联。


在这里插入图片描述

二、Slurm介绍

Slurm是一个开源,容错,高度可扩展的集群管理和作业调度系统,适用于大型和小型Linux集群。Slurm不需要对其操作进行内核修改,并且相对独立。作为集群工作负载管理器,Slurm有三个关键功能。首先,它在一段时间内为用户分配对资源(计算节点)的独占和/或非独占访问,以便他们可以执行工作。其次,它提供了一个框架,用于在分配的节点集上启动,执行和监视工作(通常是并行作业)。最后,它通过管理待处理工作的队列来仲裁资源争用。

三、如何使用

对于集群使用者而言,其通常不需要过于关注集群的内部结构与节点之间网络连接情况,Slurm就提供了简单易用的命令将集群计算资源的使用难度降到了最低,以下依次列出对于用户而言常用的Slurm指令。

命令功能描述
sinfo查看节点和分区信息
squeue查看调度队列中作业信息
srun运行并行作业
sbatch用批处理脚本提交作业
scancel取消已提交的作业
salloc用于申请节点资源
sacct查看历史作业信息

sinfo 查看节点和分区信息

sinfo查看当前账号可使用的队列资源信息
在这里插入图片描述
相关信息解释:

参数解释
PARTITION分区名(队列名)
AVAIL队列是否可用,up(可用)、inact(不可用)
TIMELIMIT该队列作业运行时间限制,infinite(不限时)
NODES节点数
STATE节点状态,drain(故障)、alloc(已被分配)、idle(可用)、down(下线)、mix(部分占用)
NODELIST节点列表

squeue 查看调度队列中作业信息

squeue查看调度队列中作业信息
在这里插入图片描述

相关信息解释:

参数解释
JOBID作业号
PARTITION作业运行的队列名
NAME作业名可自定义
USER该作业所属账号名
ST作业状态,R(运行中)、PD(排队中)、CG(将完成)、CD(已完成)
NODES作业所使用节点数
NODELIST(REASON)作业所使用节点列表

srun 运行并行作业

一个srun命令样例,表示指定队列名为amd_256,节点数为1,每个进程的核数为64,作业的运行时间限制为1分钟,作业名为pivot1,可执行文件为pivot

srun -p amd_256 -N 1 -c 64 -t 1 -J pivot1 pivot

常用参数

参数解释
-N [count]指定节点数count
-n [count]指定进程数count
-c [count]指定每个进程核数为count
-p [name]指定提交作业到name队列
-w fa[0101-0102]指定提交作业到fa0101和fa0102节点
-x fa[0103-0104]提交作业时排除fa0103和fa0104节点
-o [filename]指定标准输出到filename文件
-e [filename]指定重定向错误输出到filename文件
-J [jobname]指定作业名为jobname
-t [time]限制运行time分钟

sbatch 用批处理脚本提交作业

每次都使用一长串命令提交作业比较麻烦,不够优雅,sbatch命令可以解析已经写好的脚本提交任务,一个脚本示例run.sh和用法如下。

#!/bin/bash
#SBATCH -p amd_256
#SBATCH -N 1
#SBATCH -c 64
#SBATCH -t 1
#SBATCH -J pivot1
./pivot

该脚本使用方法为

sbatch run.sh

表示指定队列名为amd_256,节点数为1,每个进程的核数为64,作业的运行时间限制为1分钟,作业名为pivot1,可执行文件为pivot

scancel 取消已提交的作业

前文中我们提交作业后会获得一个唯一的JOBID,如果该作业运行时间过长,你想强行终止该作业,就可以使用

scancel JOBID

强行终止该作业,也可通过其他的信息终止某个作业

参数解释
-n [jobname]终止作业名为jobname的作业
-p [name]终止队列名为name的作业
-t PENDING终止正在排队的作业
-w fa0101终止运行在fa0104节点的作业

salloc 用于申请节点资源

salloc申请节点资源,用法如下:

  1. 执行salloc -p amd_256
    在这里插入图片描述
  2. 执行squeue 查看分配到的节点资源,我们分配的的节点是fa0307
    在这里插入图片描述
  3. 执行ssh fa0307登陆到所分配的节点
  4. 登陆计算节点后可以使用该节点资源
  5. 不使用节点后,执行scancel JOBID释放节点资源

sacct 查看历史作业信息

使用方法如下,可以查看历史作业的起止时间、结束状态、作业号、作业名、使用的节点数、节点列表、运行时间等。
在这里插入图片描述


四、总结

Slurm基础用法已经介绍完毕,上述命令可以满足大部分提交作业的需求,后续将会针对OpenMP、MPI等类型的任务给出代码和Slurm实例。
如果本文能给你带来帮助的话,点个赞鼓励一下作者吧!

五、参考

[1] Slurm Workload Manager:https://slurm.schedmd.com/documentation.html

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐