SLURM使用教程
时间:2022-07-22
本文章向大家介绍SLURM使用教程,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
我现在经常在实验室服务器上跑程序,而老师要求我们使用SLURM作业管理系统,网上资料零零散散,这篇文章算是一个简单的汇总
常用术语
- user:用户名
- node:计算节点
- core:cpu核
- job:作业
- job step:作业步,单个作业可以有多个作业步
- partition:分区,作业需在特定分区中运行
- QOS:服务质量,可理解为用户可使用的CPU、内存等资源限制
- tasks:任务数,默认一个任务使用一个cpu核,可理解为作业所需的cpu核数
- socket:cpu插槽,可理解为物理cpu颗数
- stdout:标准输出文件,程序运行正常时输出信息的文件,一般指输出到屏幕的信息
- stderr:标准错误文件,程序运行出错时输出信息的文件,一般指输出到屏幕的信息
命令
- sbatch:提交作业脚本。此脚本一般会包含一个或多个srun命令启动并行任务
- sinfo:显示分区或节点状态,可以通过参数选项进行过滤、和排序
- squeue:显示队列的作业及作业状态
- scancel:取消排队或运行中的作业
- scontrol:显示或设定slurm作业、分区、节点等状态
- sacctmgr:显示和设置账户关联的QOS等信息
- sacct:显示历史作业信息
- srun:运行并行作业,具有多个选项,如:最大和最小节点数、处理器数、是否指定和排除节点
节点状态查看
- PARRITION:节点所在分区
- AVAIL:分区状态,up标识可用,down标识不可用
- TIMELIMIT:程序运行最大时长,infinite表示不限制,如果限制格式为days-houres:minutes:seconds
- NODES:节点数
- NODELIST:节点名列表
- STATE:节点状态,可能的状态包括:
- allocated、alloc :已分配
- completing、comp:完成中
- down:宕机
- drained、drain:已失去活力
- fail:失效
- idle:空闲
- mixed:混合,节点在运行作业,但有些空闲CPU核,可接受新作业
- reserved、resv:资源预留
- unknown、unk:未知原因
- 如果状态带有后缀*,表示节点没有响应
分区信息查看
- DisableRootJobs:不允许root提交作业
- Maxtime:最大运行时间
- LLN:是否按最小负载节点调度
- Maxnodes:最大节点数
- Hidden:是否为隐藏分区
- Default:是否为默认分区
- OverSubscribe:是否允许超时
- ExclusiveUser:排除的用户
作业信息查看
- JOBID:作业号
- PARITION:分区名
- NAME:作业名
- USER:用户名
- ST:状态,常见的状态包括:
- PD、Q:排队中 ,PENDING
- R:运行中 ,RUNNING
- CA:已取消,CANCELLED
- CG:完成中,COMPLETIONG
- F:已失败,FAILED
- TO:超时,TIMEOUT
- NF:节点失效,NODE FAILURE
- CD:已完成,COMPLETED
作业信息查看
批处理模式提交作业
1.用户编写作业脚本
2.提交作业
3.作业排队等待资源分配
4.在首节点加载执行作业脚本
5.脚本执行结束,释放资源
6.用户在输出文件中查看运行结果
- 作业脚本为文本文件,首行一“#!”开头,指定解释程序
- 脚本中可通过srun加载计算任务
- 一个作业可包含多个作业步
- 脚本在管理节点上提交,实际在计算节点上执行
- 脚本输出写到输出文件中
以下是一些常见的作业资源需求参数,使用#SBATCH -xx xxx
的方式写入脚本中即可
-J,--job-name:指定作业名称
-N,--nodes:节点数量
-n,--ntasks:使用的CPU核数
--mem:指定每个节点上使用的物理内存
-t,--time:运行时间,超出时间限制的作业将被终止
-p,--partition:指定分区
--reservation:资源预留
-w,--nodelist:指定节点运行作业
-x,--exclude:分配给作业的节点中不要包含指定节点
--ntasks-per-node:指定每个节点使用几个CPU核心
--begin:指定作业开始时间
-D,--chdir:指定脚本/命令的工作目录
- 保护ASP.NET 应用免受 CSRF 攻击
- .NET:Entity Framework 笔记
- redis 学习笔记(1)-编译、启动、停止
- 致研究者:2018 AI研究趋势
- redis 学习笔记(3)-master/slave(主/从模式)
- 解决Chrome或其它WebKit浏览器input和textarea的黄色/蓝色边框问题
- eclipse/intellij Idea集成jetty
- nginx学习(1):编译、安装、启动
- Immutable(不可变)集合
- nginx学习(2):启动gzip、虚拟主机、请求转发、负载均衡
- 使用WiX制作简单MSI安装程序
- 企业应用通用架构图
- CacheManager:–个通用缓存接口抽象类库
- silverlight: http请求的GET及POST示例
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 实现浏览器中的最大请求并发数控制
- 【漏洞复现】Weblogic漏洞搭建与复现:CVE-2018-2894 任意文件上传
- 终于把进程和线程学会了
- 对方向你转账60元--三角函数方法精确位的实现
- 牛客网-树的子结构
- 牛客网-删除链表中重复的节点
- 牛客网-包含min函数的栈
- 牛客网-反转链表
- 牛客网-替换空格
- 手把手教你破解文件密码、wifi密码、网页密码
- 如何安装 Elastic 栈中的 Logstash
- 你的GitHub项目被封存到北极了吗?
- Logstash: 如何创建可维护和可重用的 Logstash 管道
- 手把手教你微信好友头像形成指定的文字
- Logstash: 应用实践 - 装载 CSV 文档到 Elasticsearch