我试图了解SLURM srun
和sbatch
命令之间的区别.我会对一般性解释感到满意,而不是对以下问题的具体答案,但这里有一些具体的混淆点,可以作为一个起点,并让我知道我在寻找什么.
根据文件,srun
是提交工作,sbatch
是为了提交工作以供以后执行,但实际差异对我来说不清楚,他们的行为似乎是一样的.例如,我有一个包含2个节点的集群,每个节点有2个CPU.如果我srun testjob.sh &
连续执行5x,它将很好地排队第五个作业,直到CPU变为可用,就像执行一样sbatch testjob.sh
.
为了使问题更具体,我认为一个好的起点可能是:我可以用一个我不能用另一个做的事情做什么,为什么?
两个命令的许多参数都是相同的.似乎最相关的那些是--ntasks
,--nodes
,--cpus-per-task
,--ntasks-per-node
.这些是如何相互关联的,它们对于srun
vs有sbatch
什么不同?
一个特别不同的是,srun
将导致一个错误,如果testjob.sh
没有执行权限,即chmod +x testjob.sh
而sbatch
会开心地运行它."引擎盖下"发生了什么导致情况如此?
该文档还提到srun
了sbatch
脚本中常用的文档.这导致了一个问题:它们如何相互作用,以及它们之间的"规范"用例是什么?具体来说,我会独自使用srun
吗?
根据我的小知识mpirun
,mpiexec
两者都是发射器.谁能告诉mpiexec
和之间的确切区别mpirun
?