slurm作业管理系统怎么用?

2024-01-24 21:18

本文主要是介绍slurm作业管理系统怎么用?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

对于大型集群环境,通常需要有作业管理系统来调度分配系统资源,本文介绍一款开源免费的容错和高度可扩展的集群管理和作业调度系统:SLURM。在我国首次获得世界TOP500计算机排名第一的天河一号计算机上使用的集群管理和作业调度系统,就是基于SLURM二次开发的,可见其强大。

它的官网是:传送门。

准备可执行程序和输入文件

我们想提交一个计算任务,首先要准备好可执行程序和输入文件。

  • 可执行程序需要系统管理员进行编译安装,并配置好环境。
  • 输入文件需要每一位用户针对自己的计算问题进行配置,并上传到自己的账户目录下。

然后我们要看看自己登录的账户可用的资源情况,这样子才能有针对性的提交到合适的计算分区,申请相应的系统资源进行作业的计算。

这里我们假设:可执行程序的名字叫做 program.exe,输入文件的名字叫做 inputfile

查看可用计算节点信息

查看可用计算节点信息的命令是:

sinfo

天河系统的相应命令是:

yhi

显示如下(举例):

PARTITION AVAIL  TIMELIMIT  NODES  STATE  NODELIST
debug        up      30:00     10  drain  cn[1-2]
debug        up      30:00     10  alloc  cn[3-4]
debug        up      30:00     10   idle  cn[5-6]

说明:

关键词含义
PARTITION分区名,大型集群为了方便管理,会将节点划分为不同的分区设置不同权限
AVAIL可用状态:up 可用;down 不可用
TIMELIMIT该分区的作业最大运行时长限制, 30:00 表示30分钟,如果是2-00:00:00表示2天,如果是infinite表示不限时间
NODES节点的数量
STATE节点的状态:drain: 排空状态,表示该类结点不再分配到其他;idle: 空闲状态;alloc: 被分配状态

通过查看系统可用资源情况,我们就知道了要将计算任务提交到那里了,比如例子中的debug计算分区。

提交作业进行计算

接下来应该就是使用slurm作业管理系统进行作业提交了,常用的提交方式有2种,分别介绍如下:

方式1:使用srun直接执行可执行程序

在命令行终端直接执行srun命令进行作业提交计算:

srun -N 2 -n 24 -p debug program.exe < inputfile

天河系统的相应命令是:

yhrun -N 2 -n 24 -p debug program.exe < inputfile

参数说明如下:

关键词含义
srunsrun是slurm作业管理系统并行执行mpi程序的命令,类似mpirun
-N任务所需的总节点数
-n任务所需的总核数
-p任务申请的计算分区名称,刚刚用sinfo查询过,记得吗?
program.exe可执行程序名称
inputfile输入文件的名称,”<”简单讲,就是把inputfile文件给program.exe

备注:
1. 有的程序不需要特别指定输入文件的名称,会自动寻找,那么就不需要写 < inputfile 了。
2. 关于结果输出:
1. 如果程序有内置的输出文件名,那么就会写到默认的输出文件中;
2. 如果没有的话,使用 srun 提交的任务的输出会显示在当前屏幕中;
3. 如果想将输出结果定向到别的文件,可以使用例如 > outputfile 的写法,将输出结果写到 outputfile 文件中。
3. 不过要注意的是,在有登录节点和计算节点的大型集群中,使用 srun 命令提交任务,会由于用户的当前终端关闭而导致任务断掉,因此建议用户使用下面的方式提交组偶也。

方式2:使用sbatch提交批处理脚本进行任务计算

这种方式是最为推荐的方式,先编写一个脚本(别担心,很简单),然后用提交命令提交这个脚本即可。

编写脚本

使用文本编辑器(例如vim等),创建一个用于提交作业的脚本文件,例如名为sub.sh的文件。

vim sub.sh

然后写入脚本内容

#!/bin/bash
srun -N 2 -n 24 -p debug program.exe < inputfile

天河系统的相应命令是:

yhrun -N 2 -n 24 -p debug program.exe < inputfile

第一行表示这个文件是一个bash的脚本文件。
第二行表示我要用srun命令,申请2个节点,一共24个cpu核,在debug分区,使用program.exe程序计算inputfile输入文件所设定的具体计算任务。

这个和方式1种的命令,完全相同。

提交脚本

我们用命令将刚刚写的脚本提交一下,放到后台,这样子就不担心因为当前终端关闭而导致任务断掉的问题了,命令为:

sbatch -N 2 -n 24 -p debug sub.sh  

天河系统的相应命令是:

yhbatch -N 2 -n 24 -p debug sub.sh

参数说明如下:

关键词含义
sbatchsbatch是slurm作业管理系统提交批处理脚本的命令
-N任务所需的总节点数
-n任务所需的总核数
-p任务申请的计算分区名称
sub.sh脚本的名字,我们起的名字是sub.sh

使用这种方式提交的任务,会自动生成一个名为slurm-jobid.out的文件,其中”jobid”是slurm分配给这个任务的具体编号数字。里面会有除了程序特殊指定,或用户重定向以外的所有作业的标准输出和错误信息。当计算任务出现错误的时候,我们也是第一时间查看该文件,寻找原因。

查看作业状态

如果我们想查看一下当前用户的作业状态,可以使用如下命令:

squeue

天河系统的相应命令是:

yhqueue
或
yhq

显示如下(举例):

JOBID   PARTITION  NAME     USER       ST  TIME      NODES NODELIST(REASON)
100001  debug      sub.sh   zhenggang  R   00:05:00  1     cn6

参数说明如下:

关键词含义
JOBIDjob的id号,每个成功提交的任务都会有唯一的id
PARTITION计算分区名
NAME任务名,默认以提交脚本的名称当作任务名
USER用户名,提交该任务的用户名
ST任务状态:PD排队;R运行;S挂起;CG正在退出
TIME任务运行时间,例子中为5分钟
NODES任务作占节点数,例子中为1个
NODELIST(REASON)任务所占节点列表,如果是排队状态的任务,则会给出排队原因

备注:常见排队原因:

  • AssociationResourceLimit:关联的资源限制已满 — 账户有使用节点数限制,已经用满了。
  • Resources:当前可用资源不能满足作业需求 — 系统的可用节点资源不足
  • Dependency:作业的依赖关系未满足 — 作业之间有依赖关系,依赖的作业没完成
  • PartitionDown:作业所在的分区处于 down 状态 — 分区down,所以节点不可用。

取消作业

如果提交作业后,发现有些输入文件参数设置错了,或者其他原因想停止这个作业,可以先使用squeue(或yhq)找到该作业的id号,如100001,然后使用如下命令杀掉任务:

scancel 100001

天河系统的相应命令是:

yhcancel 100001

进阶

关于slurm作业管理系统,还有非常丰富的内容,本文仅给出了最最常用的几个命令。如果想深入了解,可以关于以后的文章。

比如:
- 如何给任务起名字,让每个任务不一样
- 如何限制任务的运行时间
- 如何申请特定节点,排除特定的节点
- 如何查看作业运行的详细信息,比如提交目录、运行耗时
- 如何设置作业之间的依赖关系,让某个作业在另一个之后才运行

不过这些通常用户用到的不多,如果想知道的话,留言哦。

我的个人网站:传送门

这篇关于slurm作业管理系统怎么用?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/641019

相关文章

电脑开机提示krpt.dll丢失怎么解决? krpt.dll文件缺失的多种解决办法

《电脑开机提示krpt.dll丢失怎么解决?krpt.dll文件缺失的多种解决办法》krpt.dll是Windows操作系统中的一个动态链接库文件,它对于系统的正常运行起着重要的作用,本文将详细介绍... 在使用 Windows 操作系统的过程中,用户有时会遇到各种错误提示,其中“找不到 krpt.dll”

MySql死锁怎么排查的方法实现

《MySql死锁怎么排查的方法实现》本文主要介绍了MySql死锁怎么排查的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录前言一、死锁排查方法1. 查看死锁日志方法 1:启用死锁日志输出方法 2:检查 mysql 错误

Rsnapshot怎么用? 基于Rsync的强大Linux备份工具使用指南

《Rsnapshot怎么用?基于Rsync的强大Linux备份工具使用指南》Rsnapshot不仅可以备份本地文件,还能通过SSH备份远程文件,接下来详细介绍如何安装、配置和使用Rsnaps... Rsnapshot 是一款开源的文件系统快照工具。它结合了 Rsync 和 SSH 的能力,可以帮助你在 li

电脑密码怎么设置? 一文读懂电脑密码的详细指南

《电脑密码怎么设置?一文读懂电脑密码的详细指南》为了保护个人隐私和数据安全,设置电脑密码显得尤为重要,那么,如何在电脑上设置密码呢?详细请看下文介绍... 设置电脑密码是保护个人隐私、数据安全以及系统安全的重要措施,下面以Windows 11系统为例,跟大家分享一下设置电脑密码的具体办php法。Windo

怎么关闭Ubuntu无人值守升级? Ubuntu禁止自动更新的技巧

《怎么关闭Ubuntu无人值守升级?Ubuntu禁止自动更新的技巧》UbuntuLinux系统禁止自动更新的时候,提示“无人值守升级在关机期间,请不要关闭计算机进程”,该怎么解决这个问题?详细请看... 本教程教你如何处理无人值守的升级,即 Ubuntu linux 的自动系统更新。来源:https://

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

LinuxMint怎么安装? Linux Mint22下载安装图文教程

《LinuxMint怎么安装?LinuxMint22下载安装图文教程》LinuxMint22发布以后,有很多新功能,很多朋友想要下载并安装,该怎么操作呢?下面我们就来看看详细安装指南... linux Mint 是一款基于 Ubuntu 的流行发行版,凭借其现代、精致、易于使用的特性,深受小伙伴们所喜爱。对

macOS怎么轻松更换App图标? Mac电脑图标更换指南

《macOS怎么轻松更换App图标?Mac电脑图标更换指南》想要给你的Mac电脑按照自己的喜好来更换App图标?其实非常简单,只需要两步就能搞定,下面我来详细讲解一下... 虽然 MACOS 的个性化定制选项已经「缩水」,不如早期版本那么丰富,www.chinasem.cn但我们仍然可以按照自己的喜好来更换

Ubuntu 怎么启用 Universe 和 Multiverse 软件源?

《Ubuntu怎么启用Universe和Multiverse软件源?》在Ubuntu中,软件源是用于获取和安装软件的服务器,通过设置和管理软件源,您可以确保系统能够从可靠的来源获取最新的软件... Ubuntu 是一款广受认可且声誉良好的开源操作系统,允许用户通过其庞大的软件包来定制和增强计算体验。这些软件

Ubuntu 24.04 LTS怎么关闭 Ubuntu Pro 更新提示弹窗?

《Ubuntu24.04LTS怎么关闭UbuntuPro更新提示弹窗?》Ubuntu每次开机都会弹窗提示安全更新,设置里最多只能取消自动下载,自动更新,但无法做到直接让自动更新的弹窗不出现,... 如果你正在使用 Ubuntu 24.04 LTS,可能会注意到——在使用「软件更新器」或运行 APT 命令时,