前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【科研利器】slurm作业调度系统(一)

【科研利器】slurm作业调度系统(一)

作者头像
自学气象人
发布2022-10-09 09:41:08
3.3K0
发布2022-10-09 09:41:08
举报
文章被收录于专栏:自学气象人自学气象人

大家好哇!随着时代的不断发展,我们在做项目时所使用的数据也越来越大。当进行计算量很大的任务时,我们不可避免地会使用超级计算机(以下简称超算)来帮助我们完成。常见的超级计算机作业调度系统有SLURM和Torque PBS,但我自己在实际应用过程中常见到的是slurm,以下就slurm作业调度系统进行一些简单的介绍!

1

Slurm作业调度系统简介

什么是作业调度系统呢?可以从下面这张图中进行理解:我们(User)从各自的终端通过ssh连接到登陆节点(login node)以后,编写了自己的一些任务(jobs,如执行一个python程序),现在想把这个任务交给超算来运行。但要知道,超算上不止只有我们一个用户,其他用户也会有自己的计算任务要交给超算来跑。而且,大家各自任务所申请的计算资源也不一样,(比如申请的节点数,cpu数等不同),但超算的计算资源是有限的。那在这种情况下,该怎么分配这些计算资源,如何安排任务的先后执行顺序呢?这里,就需要用到作业调度系统了,可以进行计算资源的分配等工作。SLURM 是其中一个优秀的开源作业调度系统,和 Torque PBS 相比,SLURM 集成度更高,对 GPU 和 MIC 等加速设备支持更好。最完整的文档可访问 SLURM 官网(https://www.schedmd.com/)。

2

选择超算工作站进行计算的优势

前面已经简单提到了为什么要使用超算工作站,在这里我们更详细地说明使用超算工作站的优势。

1、它可以将我们的个人电脑从繁重的任务中解放出来。利用工作站,你可以运行更大规模的程序。 在此期间你可以用你的个人电脑做其他的事情,甚至关机,都不会影响工作站的进度。

2、它在并行计算方面有极大的优势。工作站服务器的处理器特点是核心数量很多,虽然每个核心 的运算能力不算最强,但是协同工作时会提供很高的加速比。

3、它可以加深你对软件运行环境的理解。从而会让你产生编写可移植性更强的程序的意识。

3

一个案例

在这里,我们先给出一个使用slurm作业系统最常用的方式:提交 SLURM 作业脚本的批处理方式。至于slurm的具体使用及参数介绍,我们会在后面另推出文章进行讲解。

首先我们需要编写一个slurm脚本,假设命令为test.slurm。

代码语言:javascript
复制
#!/bin/bash
#SBATCH -J test             # 作业名是 test
#SBATCH -p cpu              # 提交到 cpu分区
#SBATCH -N 1                # 使用一个节点
#SBATCH --cpus-per-task=1   # 每个进程占用一个 cpu核心
#SBATCH -t 5:00             # 任务最大运行时间是5分钟
#SBATCH -o test.out         # 将屏幕的输出结果保存到当前文件夹的test.out
hostname                    # 执行我的hostname命令

以上的脚本的第一行为 shebang,它指定了这个脚本的解释器为 bash。每次编写脚本 都必须写上这一行。之后有 # 开头的若干行表示 SLURM 作业的设置区域,它告诉工作站运行任务的详细设定:它被提交到 cpu 分区当中,申请 1 个节点的 1 个 核心,限制任务最大运行时间是五分钟,将标准输出和标准错误放在test.out 中。它的主体内容就是在当前目录执行hostname命令。

接着我们需要提交任务到超算上。在准备好slurm脚本后,使用如下命令就可以将刚才的任务提交上去,这里 sbatch 是提交 SLURM 脚本的命令。 如果工作站有空闲资源,那么我的程序将会被放在某一个节点的某 一个核心上运行。我只需要等待我的程序完成即可。

代码语言:javascript
复制
sbatch test.slurm

成功提交任务后会返回一条类似” Submitted batch job 38’’的信息,这表示我的任务已经成功提交,任务号是 38。此时可以通过如下命令查看任务运行状态,会返回作业id、运行时间、运行状态等信息。

代码语言:javascript
复制
squeue -u user_name

当程序完成后,可以到指定的文件中去寻找程序的输出。 系统默认会将标准输出文件和标准错误文件复制到调用 sbatch 的目录下。默认的文件名是 slurm-<JOBID>.out,其中 JOBID 是作业号。如果在 SLURM 脚本中使用了 -o 选项,则这些文件会被复制到用户所指定的目录下。

总结起来,在工作站上进行运算的步骤如下:

1、登录主节点,准备程序和数据。

2、编写 SLURM 脚本,设置作业属性(例如占用的资源,最长运行时间)。

3、提交作业脚本,检查任务状态(使用 squeue)。

4、等待运行结束,验收结果。

参考资料:北大超算指导手册

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-11-22,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 自学气象人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
GPU 云服务器
GPU 云服务器(Cloud?GPU?Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com