我试图了解 SLURMsrun
和sbatch
命令之间的区别。我会对一般性的解释感到满意,而不是对以下问题的具体答案,但这里有一些具体的混淆点,可以作为起点,让我了解我在寻找什么。
根据文档,srun
用于提交作业,sbatch
用于提交作业以供以后执行,但我不清楚实际区别,它们的行为似乎是相同的。例如,我有一个有 2 个节点的集群,每个节点有 2 个 CPU。如果我srun testjob.sh &
连续执行 5 次,它将很好地排队第五个作业,直到 CPU 可用,就像 execution 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
吗?