Abstract: 介绍了Slurm系统的基础用法,列举了一些样例。介绍了sbatch,srun, salloc, squeue常见命令的用法

1. Slurm简介与基础命令

现在的科研任务大部分是运行在超算上面的,本地的小机器大部分时间只是起到了一个文本编辑器的作用。一般超算上会有很多个节点,也会有很多个用户提交的很多任务。 这时候我们提交任务就不再是跟本地一样run或者F5一下就开始运行了的,我们需要先申请资源,等待超算的批准,然后超算才会将我们的任务分配到指定的节点上运行,这个系统就是SLURM。Slurm系统包含常见的两个提交任务的命令sbatch, srun;查看任务信息的命令,squeue,sinfo; 以及开辟资源的salloc和查看历史的sacct。

1.1. 提交任务

向slurm系统提交任务,需要包含两个信息:一个是需要的计算资源,包括计算时间,节点数等;第二个是在这个计算资源下需要运行的指令,包括载入环境与运行程序两部分。sbatch与srun两个指令在这两个方面用法不同,但是对应资源的关键词都是一致的,大部分情况下只需要熟悉一个指令就可以了。

1.1.1. sbatch

sbatch的用法是sbatch xx.txt。其中你的任务信息就包含在xx.txt这个以ASCII码编码的文件中。文件基本形式是:

其中#sbatch后面跟的信息就是计算资源、任务命名分区以及输入输出所对应的文件。这里需要注意的是sbatch提交任务之后是不会将程序的输出与报错信息直接print出来,而是接管程序的系统输出与报错到指定文件中。但是对文件的读写内容是正常进行的,因为超算系统的文件系统一般是一个整体,如果有高IO的内容就需要将文件存放在相应的区域内。sbatch提交任务之后,超算的操作系统记录这一个任务,会根据优先级给任务排队,在合适的时间运行。用户此时可以断开终端或运行其他任务。

1.1.2. srun

srun是直接以命令而非脚本的形式申请资源并运行任务,基本用法是 srun -o1 xx1 --option2 xx2 ./hello_world。srun会实时输出你的程序的运行结果,用户可以中途直接终止程序。但是一旦远程连接端口终端,任务就会停止。sbatch与srun提交任务给超算的操作系统,不存在哪一个指令可以插队的情况。

1.1.3. 常用options与释义

options

释义

–batch=?

指定任务所在分区,有的超算会设置batch与debug两个分区,debug分区基本不用排队,但是任务运行时间有限制

-N, –nodes=?

申请的节点个数。一般的超算系统上每个节点会有1个cpu:每个CPU的典型配置是32个核(或者理解为物理线程,不同架构的超算会有差异),其中每16个核是在同一个pie上的,不同pie上的核的通讯时间会更大,但是要远远小于不同节点之间的通讯时间

-n, –ntasks=?

将核心程序复制多少份,相当于并行计算中最顶层的并行数。如果任务是mpi的方式运行,这个参数将转化为mpi里面的ntasks; 如果是其他的方式并行,程序内部可以调出任务号,从而执行不同的任务,比如printenv SLURM_PROCID就可以调出相应的任务id

-c, –cpus-per-task=?

与上面的-n配合执行,指定每个任务有多少个核来运行(并不是一个大的cpu, 而是核数),实际对应着mpi里面的OMP_NUM_THREADS,次级并行参数

–mem=?

每个节点预先分配的内存大小,可以使用GB,MB, KB三个单位

–gres=name:type:num

可以根据超算配置申请相应的资源,需要超算支持。比如申请两个型号为kepler的GPU与两个型号为v100的GPU,就是--gres=gpu:kepler:2,gpu:v100:2

-t, –time=xx:xx:xx

程序运行的最大时间,超过这个时间超算会随时停止你的任务,对应的单位是 时:分:秒

-e, –error=file_name

file_name可以使用模板。 比如常见的单任务脚本输出设置为xxx_%J_xxx.txt,其中%J会被任务序号代替

-o, –output=file_name

同上

–exclusive

是否允许同一个节点上允许其他人的程序运行,防止资源共享后运行速度慢的问题,但是一般不被推荐使用

-C, –constraint=”?”

对申请的节点信息的限制,一般是用来限制cpu的型号,防止编译好的程序被用在错误的架构上,比如--constraint="AMD" 就限定只能运行在AMD cpu的节点上,不要分配Intel的cpu(AMD, YES!)

更多的用法请参考slurm的说明文档,或者使用 sbatch --help调出来。也可以使用一个脚本生成器, IBEX Jobscript generator。下面是我的一个程序脚本:

1.2. 查看任务

查看任务的运行状态,可以使用squeue命令进行。查看特定用户的可以使用-u your_name,也可以与grep配合使用,检索特定的关键词。如果向实时更新,可以与watch命令配合,watch -n ?? squeue -u your_name,就会进入一个实时更新画面,频率是??s.

如果想查看超算上资源使用问题,可以使用sinfo命令查看,查看空闲资源,可以使用sinfo | grep idle查看空闲节点。

1.3. 其他

如果想申请一个实时的交互资源,可以使用salloc命令,其关键词是与srun的选项是相同的,只是不需要指定运行什么程序。比如下面的指令,你就已经申请到了一个节点,运行时间是10分钟,在这个平台上,你可以实时运行指令,与本地运行相同。但是相比于sbatch,srun命令,可能存在一些性能损失.

超级计算机 任务提交,超算任务提交系统slurm用法相关推荐

  1. 任务分销系统云智推任务提交版拉新系统网站源码

    云智推任务提交版拉新系统源码-任务分销系统(代码不加密,无后门) 源码大小:177MB 源码类型:PHP源码 显示语言: 简体中文 运行环境:PHP+MySQL+TP ​ 功能内容会员管理:总代,服务 ...

  2. 基于Java毕业设计材料提交管理系统源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计材料提交管理系统源码+系统+mysql+lw文档+部署软件 基于Java毕业设计材料提交管理系统源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S架构 开 ...

  3. 清华计算机系超算团队,关注 | 清华大学学生超算团队获国际超级计算机竞赛世界大学生超算竞赛总冠军...

    原标题:关注 | 清华大学学生超算团队获国际超级计算机竞赛世界大学生超算竞赛总冠军 请输入标题 bcdef 德国当地时间6月21日,国际超算竞赛(ISC17)世界大学生超级计算机竞赛总决赛在德国法兰克 ...

  4. MySQL隔离级别--未提交读,提交读,可重复读,序列化--详解(有示例)

    原文网址:MySQL隔离级别--未提交读,提交读,可重复读,序列化--详解(有示例)_IT利刃出鞘的博客-CSDN博客 简介          本文介绍MySQL的事务隔离级别的含义,并用示例说明各个 ...

  5. Kafka消费消息自动提交与手动提交

    消费者poll消息得过程(poll的意思是从broker拿消息,并不代表拿到就消费成功了) 消费者建立了与broker之间的⻓连接,开始poll消息. 默认一次poll 500条消息 props.pu ...

  6. sc19超级计算机,清华学生超算团队获国际大学生超级计算机竞赛(SC19)总冠军...

    美国当地时间11月21日下午,2019国际大学生超级计算机竞赛(SC19)总决赛在美国丹佛会展中心落下帷幕,由清华大学计算机系组建的清华大学学生超算团队夺得总冠军.这是清华大学在三大国际大学生超算竞赛 ...

  7. Git学习笔记——3、文件的新建、暂存、提交及重新提交

    本节在不考虑分支的情况,以game文件夹为例,来实际演示git的实际操作,为了好理解,先只模拟代码的增和补,至于回退一类的逆向操作则放在下一节. 1. 初始化本地库 假如我们的项目是game,新建并进 ...

  8. java 批量提交_【INSERT】逐行提交、批量提交及极限提速方法

    在Oracle数据库中,不是提交越频繁越好.恰恰相反,批量提交可以得到更好的性能.这篇文章给大家简单展示一下在Oracle数据库中逐行提交于批量提交两者之间的性能差别.最后再给出一种可以极大改变性能的 ...

  9. AJAX设置光标离开自动提交,Ajax自动提交和刷新页面

    所以,我是新来的ajax,我试图使用ajax和jquery提交表单,我想我有服务器端逻辑都想通了,因为当我加载页面它会自动提交并且页面刷新速度非常快.空白表单将进入数据库,但其中有很多内容,因为页面会 ...

最新文章

  1. iOS开发UI篇—核心动画简介
  2. FVR420v试用感受之六!
  3. 互联网1分钟 |1212
  4. 关于element click intercepted报错解决办法
  5. 【渝粤教育】广东开放大学 知识产权法 形成性考核 (34)
  6. 【转】如何将域中的AD数据导入SharePoint
  7. matplotlib text 文字处理
  8. android定位坑简书,android webview 定位问题
  9. RGB 和 YUV之间的转换
  10. 第一次:《三国志2017》游戏纯玩体验及总结
  11. 无关业务:少年得到,产品创新工作坊的复盘
  12. 用户登录模块---Druid+JDBC+Servlet
  13. Seaborn(三)调色板palette
  14. 企业微信的上级有哪些权限?
  15. Mysql 创建表时报错1103:Incorrect table name【问题记录】
  16. python核心数据类型——数值、字符串和列表的基本操作
  17. Android Wi-Fi 修改国家码(QCOM平台)
  18. 【温故知新】梳理React中HOC的点点滴滴
  19. C++:实现量化GSR模型测试实例
  20. 设计FMEA步骤三:功能分析

热门文章

  1. excel与access结合运用_当excel不够用时,如何利用Access进行数据分析?
  2. sendto()_Linux C函数
  3. @Aspect 用法
  4. iOS10.3.3 iPhone5使用爱思助手越狱后安装完openssl,afc2失效的解决办法
  5. InvocationException: GraphViz‘s executables not found【BUG已解决】
  6. 11个你不应该错过的JavaScript库
  7. 模电一、半导体二极管和三极管
  8. ubuntu 16.04硬盘分区方案
  9. springboot志愿者活动报名服务系统jsp ssm maven
  10. 日志分析篇---MSSQL日志分析