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

相关文章

qt5cored.dll报错怎么解决? 电脑qt5cored.dll文件丢失修复技巧

《qt5cored.dll报错怎么解决?电脑qt5cored.dll文件丢失修复技巧》在进行软件安装或运行程序时,有时会遇到由于找不到qt5core.dll,无法继续执行代码,这个问题可能是由于该文... 遇到qt5cored.dll文件错误时,可能会导致基于 Qt 开发的应用程序无法正常运行或启动。这种错

电脑提示xlstat4.dll丢失怎么修复? xlstat4.dll文件丢失处理办法

《电脑提示xlstat4.dll丢失怎么修复?xlstat4.dll文件丢失处理办法》长时间使用电脑,大家多少都会遇到类似dll文件丢失的情况,不过,解决这一问题其实并不复杂,下面我们就来看看xls... 在Windows操作系统中,xlstat4.dll是一个重要的动态链接库文件,通常用于支持各种应用程序

Mac备忘录怎么导出/备份和云同步? Mac备忘录使用技巧

《Mac备忘录怎么导出/备份和云同步?Mac备忘录使用技巧》备忘录作为iOS里简单而又不可或缺的一个系统应用,上手容易,可以满足我们日常生活中各种记录的需求,今天我们就来看看Mac备忘录的导出、... 「备忘录」是 MAC 上的一款常用应用,它可以帮助我们捕捉灵感、记录待办事项或保存重要信息。为了便于在不同

springboot+vue项目怎么解决跨域问题详解

《springboot+vue项目怎么解决跨域问题详解》:本文主要介绍springboot+vue项目怎么解决跨域问题的相关资料,包括前端代理、后端全局配置CORS、注解配置和Nginx反向代理,... 目录1. 前端代理(开发环境推荐)2. 后端全局配置 CORS(生产环境推荐)3. 后端注解配置(按接口

电脑死机无反应怎么强制重启? 一文读懂方法及注意事项

《电脑死机无反应怎么强制重启?一文读懂方法及注意事项》在日常使用电脑的过程中,我们难免会遇到电脑无法正常启动的情况,本文将详细介绍几种常见的电脑强制开机方法,并探讨在强制开机后应注意的事项,以及如何... 在日常生活和工作中,我们经常会遇到电脑突然无反应的情况,这时候强制重启就成了解决问题的“救命稻草”。那

电脑开机提示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://