学习
实践
活动
专区
工具
TVP
写文章
专栏首页自学气象人【科研利器】slurm作业调度系统(一)

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

大家好哇!随着时代的不断发展,我们在做项目时所使用的数据也越来越大。当进行计算量很大的任务时,我们不可避免地会使用超级计算机(以下简称超算)来帮助我们完成。常见的超级计算机作业调度系统有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。

#!/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 脚本的命令。 如果工作站有空闲资源,那么我的程序将会被放在某一个节点的某 一个核心上运行。我只需要等待我的程序完成即可。

sbatch test.slurm

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

squeue -u user_name

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

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

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

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

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

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

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

文章分享自微信公众号:
自学气象人

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

作者:夏子涵
原始发表时间:2021-11-22
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

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

    “ 大家好哇!上一期我们介绍了作业脚本中两个非常重要的概念Partition 和 QoS 进行介绍,并给出一些实用技巧。今天呢,我们给出一些在slurm作业系...

    自学气象人
  • 【科研利器】slurm作业调度系统(五)

    “ 大家好哇!上一期我们给出了一些在slurm作业系统中常见的报错提示的含义及解决方法。今天我们主要来看看如何在超算中配置运行环境。”

    自学气象人
  • 【科研利器】slurm作业调度系统(二)

    “ 大家好哇!前面我们对slurm作业调度系统进行了一个简单的介绍【科研利器】slurm作业调度系统(一),今天我们继续对如何用slurm提交批处理任务以及使用...

    自学气象人
  • 【科研利器】slurm作业调度系统(三)

    “ 大家好哇!上一期我们介绍了提交批处理任务的整个流程,包括查看资源、编写脚本、提交作业、查询作业信息等内容。今天呢,我们主要就作业脚本中两个非常重要的概念 P...

    自学气象人
  • 分布式作业系统 Elastic-Job-Cloud 源码分析 —— 作业调度(一)

    摘要: 原创出处 http://www.iocoder.cn/Elastic-Job/cloud-job-scheduler-and-executor-firs...

    芋道源码
  • CONQUEST 编译安装指南 Slurm 篇

      在实际的生产环境中,使用单用户模式直接运行命令的机会不是很多,通常是采用提交作业任务给集群计算的方式。这样一来既能节约资源和时间,又能申请到更大规模的计算资...

    zhonger
  • slurm学习笔记(一)

    中文文档:https://docs.slurm.cn/users/shou-ce-ye

    种花家的奋斗兔
  • Slurm学习笔记(二)

    scontrol show partition显示全部队列信息,scontrol show partition PartitionName或 scontrol ...

    种花家的奋斗兔
  • Slurm基本用法(入门必看)

    现在,我们将提交另一个依赖于先前作业的作业。 有许多方法可以指定依赖条件,但是“singleton ”是最简单的。 Slurm -d singleton 参数告...

    全栈程序员站长
  • Slurm集群资源管理器的简单使用

    Slurm是一个开源,容错,高度可扩展的集群管理和作业调度系统,适用于大型和小型Linux集群。主要有三个功能:

    生信编程日常
  • SLURM使用教程

    我现在经常在实验室服务器上跑程序,而老师要求我们使用SLURM作业管理系统,网上资料零零散散,这篇文章算是一个简单的汇总

    mathor
  • ASP.NET MVC5+EF6+EasyUI 后台管理系统(84)-Quartz 作业调度用法详解一

    系列目录 前言 我从Quartz2.0开始使用,并对其进行了封装了界面,可以参考 http://www.cnblogs.com/ymnets/p/506515...

    用户1149182
  • 美国为何封杀中国超算!一文读懂超级计算机的应用、架构和软件知识

    2019年5月,美国商务部将华为列入了出口管制的“实体清单”,华为被推向了这波中美对抗的风口浪尖。紧随其后,6月,特朗普政府又对其他几家中国机构实行了限制出口政...

    PP鲁
  • 服务器集群任务调度系统大比拼!

    普通刀片节点配备 两颗 Intel(R) Xeon(R) CPU E5-2692 v2 @ 2.20GHz 共24物理核,内存为64G 调度系统为 Slurm...

    生信技能树
  • Docker 快速部署 Slurm 集群

      前段时间为了能让运行的 CONQUEST 任务在后台运行、并尽可能地进行资源调控,特别采用了 Slurm 作业管理系统。Slurm 单节点的部署配置还是比较...

    zhonger
  • Run python on a supercomputer

    有任务需要处理一堆收集来得开源数据集,在服务器单机跑了一天才给结果,多方咨询有HPC可以用,或者叫supercomputer,或者叫计算机集群,大部分的简称gr...

    flavorfan
  • 专栏 | 百度深度学习平台PaddlePaddle框架解析

    机器之心专栏 来源:百度PaddlePaddle PaddlePaddle 是 2016 年 8 月底百度开源的深度学习平台,并且在短时间内迅速引发全球开发热度...

    机器之心
  • 西南交通大学铁路运输组织与优化郭孜政教授团队招募科研助理(长期招聘)

    西南交通大学 铁路运输组织与优化 郭孜政教授团队 招募科研助理(长期招聘) ✦✦ 郭孜政教授 西南交通大学交通运输与物流学院教授、博导,团队负责人。具有轨...

    用户1621951
  • 善用alias,让Linux运维命令更有效率

    第一行scancel为一些超算杀任务的命令,但是打字太麻烦,所以直接给个qd的别名;

    不念博客

扫码关注腾讯云开发者

领取腾讯云代金券