Slurm:为什么在sbatch内使用srun?

39
在一个sbatch脚本中,你可以直接启动程序或脚本(例如可执行文件myapp),但在许多教程中,人们使用srun myapp代替。尽管阅读了一些有关此主题的文档,我不理解这两种语法的区别以及何时使用每种语法。希望我的问题足够明确(SO上的第一个问题),感谢您提前的答复。

你的情况是否与我在这个问题中提供的示例提交脚本相同:https://stackoverflow.com/questions/72092272/do-sbatch-submission-scripts-in-slurm-really-need-the-srun-command-to-run-intend? - Charlie Parker
你能提供一个针对你的问题的sbatch提交脚本示例吗? - Charlie Parker
@CharlieParker 这个问题是我之前的工作中遇到的:现在我没有任何访问 Slurm HPC 的权限,也无法提供可靠的示例。 ‍♂️ - RomualdM
1个回答

32

srun命令用于创建作业步骤。

首先,它将带来更好的资源使用报告;sstat命令将为使用srun启动的进程提供实时资源使用情况,并且每个步骤(每次调用srun)都将在记账中单独报告。

其次,它可用于将多个串行程序实例(仅使用一个CPU的程序)设置为单个作业,并在作业分配内微调这些程序。

最后,对于并行作业,srun还将扮演重要角色,即启动并设置并行环境。它将在分配给作业的CPU上启动与--ntasks选项请求的程序实例数相同的程序实例。对于MPI程序,它还将处理MPI库和Slurm之间的通信。


非常感谢您提供这个精确的答案。 - RomualdM
2
在设置多个串行程序实例的情况下,典型的情况是srun -N1 -n1 myprog &,对吗?如果sbatch作业分配超过1个节点,那么srun是否比仅使用myprog &更好地确保每个实例在独立的CPU上运行?事实上,如果脚本只有myprog &而分配超过1个节点会发生什么? - bernie
1
如果脚本只有 myprog &,并且分配超过1个节点,则只有第一个节点将运行进程,并且这些进程将争夺访问相同的CPU。 - damienfrancois
如果我有单个和多个GPU怎么办? - Charlie Parker
一个例子在使用srun时会是srun python main.py吗?我问这个因为我只知道用srun hostname - Charlie Parker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接