我试图了解SLURM srun和sbatch命令之间的区别.我会对一般性解释感到满意,而不是对以下问题的具体答案,但这里有一些具体的混淆点,可以作为一个起点,并让我知道我在寻找什么.
根据文件,srun是提交工作,sbatch是为了提交工作以供以后执行,但实际差异对我来说不清楚,他们的行为似乎是一样的.例如,我有一个包含2个节点的集群,每个节点有2个CPU.如果我srun testjob.sh &连续执行5x,它将很好地排队第五个作业,直到CPU变为可用,就像执行一样sbatch testjob.sh.
为了使问题更具体,我认为一个好的起点可能是:我可以用一个我不能用另一个做的事情做什么,为什么?
两个命令的许多参数都是相同的.似乎最相关的那些是--ntasks,--nodes,--cpus-per-task,--ntasks-per-node.这些是如何相互关联的,它们对于srunvs有sbatch什么不同?
一个特别不同的是,srun将导致一个错误,如果testjob.sh没有执行权限,即chmod +x testjob.sh而sbatch会开心地运行它."引擎盖下"发生了什么导致情况如此?
该文档还提到srun了sbatch脚本中常用的文档.这导致了一个问题:它们如何相互作用,以及它们之间的"规范"用例是什么?具体来说,我会独自使用srun吗?
我有一份运行由slurm管理的linux机器的工作.既然工作运行了几个小时,我意识到我低估了它完成所需的时间,因此--time我指定的参数值不够.有没有办法通过slurm为现有的正在运行的工作增加时间?
我想这是一个非常微不足道的问题,但是,我正在寻找(我猜测的)sacct命令,它将显示slurm作业ID使用的CPU时间和内存.
当我使用时,sinfo我看到以下内容:
$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
[...]
RG3 up 28-00:00:0 1 drain rg3hpc4
[...]
Run Code Online (Sandbox Code Playgroud)
国家"流失"是什么意思?
假设我有以下简单的bash脚本,我想通过SLURM提交给批处理服务器:
#!/bin/bash
#SBATCH -o "outFile"$1".txt"
#SBATCH -e "errFile"$1".txt"
hostname
exit 0
Run Code Online (Sandbox Code Playgroud)
在这个脚本中,我只想写hostname一个文本文件的输出,它的全名我通过命令行控制,如下所示:
login-2:jobs$ sbatch -D `pwd` exampleJob.sh 1
Submitted batch job 203775
Run Code Online (Sandbox Code Playgroud)
不幸的是,似乎我的最后一个命令行参数(1)没有通过sbatch解析,因为创建的文件没有我正在寻找的后缀,字符串"$ 1"按字面解释:
login-2:jobs$ ls
errFile$1.txt exampleJob.sh outFile$1.txt
Run Code Online (Sandbox Code Playgroud)
我在SO和其他地方环顾四周,但我没有运气.基本上我正在寻找的是相当于启用Torque的集群-v中的qsub实用程序的切换.
编辑:正如基础评论线程中所提到的,我用困难的方式解决了我的问题:我没有将一个单独的脚本多次提交给批处理服务器,每个脚本都有不同的命令行参数,我创建了一个"主脚本",简单地回显并将相同的内容重定向到不同的脚本上,每个脚本的内容都被传递的命令行参数改变.然后我将所有这些提交到我的批处理服务器sbatch.但是,这不能回答原始问题,所以我不愿意将其添加为我的问题的答案或标记这个问题已解决.
使用sinfo它显示3个节点处于drain状态,
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
all* up infinite 3 drain node[10,11,12]
Run Code Online (Sandbox Code Playgroud)
用于消除此类节点的命令行?
我正在使用SLURM来使用一些计算集群,它有-ntasks或者-n.我显然已经阅读了它的文档(http://slurm.schedmd.com/sbatch.html):
sbatch不启动任务,它请求分配资源并提交批处理脚本.此选项建议Slurm控制器在分配中运行的作业步骤将启动最多数量的任务并提供足够的资源.默认值是每个节点一个任务,但请注意--cpus-per-task选项将更改此默认值.
具体部分我不明白它的含义是:
在分配内运行将启动最多数量的任务并提供足够的资源.
我有几个问题:
sbatch my_batch_job.sh.不确定任务意味着什么.-n, --ntasks=<number>.但是,我明明测试了它的集群中,跑了echo hello有--ntask=9和我预期的sbatch将回声你好9次到stdout(被收集在slurm-job_id.out,但让我惊讶的是,那里是我的回声你好脚本的单次执行那么,什么是这个甚至命令呢?似乎它什么也没做,或者至少我看不到假设要做什么.我知道-a, --array=<indexes>多个工作的选项存在.这是一个不同的主题.我只是想知道--ntasks想要做什么,理想情况下是一个例子,以便我可以在集群中测试它.
有人能够澄清这些东西到底是什么吗?据我所知,节点是集群内的计算点,本质上是一台计算机。任务是可以在单个节点或多个节点上执行的进程。核心基本上是指您希望在单个节点上分配多少 CPU 来执行分配给该 CPU 的任务。它是否正确?我是否混淆了什么?
当我在集群上启动计算时,我通常会有一个单独的程序在最后进行后处理:
sbatch simulation
sbatch --dependency=afterok:JOBIDHERE postprocessing
Run Code Online (Sandbox Code Playgroud)
我想避免错误输入并自动插入好的作业ID.任何的想法?谢谢
在SLURM群集上,可以使用squeue获取有关系统上作业的信息.
我知道,"R"是指[R unning; 和"PD",意思是p EN d ING,但什么是"CG"?
我的理解是"取消"或遭遇"失败",但"CG"申请作业成功Ç失去?什么是G?