【问题标题】:Slurm: Why do we need Srun in Sbatch script file?Slurm:为什么我们需要在 Sbatch 脚本文件中使用 Srun?
【发布时间】:2021-01-27 07:58:31
【问题描述】:

我是 Slurm 的新手,我还发现了有关此主题的相关问题。但是,我仍然对如何使用 srun 的几点感到困惑。根据官方文档,srun 通常会先分配资源,然后运行并行作业。例如,我想运行 20 个任务,如果我根据以下脚本提交作业,我不确定创建了多少个任务。因为 sbatch 只负责分配资源而不是执行程序。

#!/bin/sh
#SBATCH -n 20
#SBATCH --mpi=pmi2
#SBATCH -o myoutputfile.txt
module load mpi/mpich-x86_64
mpirun mpiprogram < inputfile.txt

如果我尝试像下面这样运行顺序程序,我不知道是否会有差异。例如,我可以简单地删除此脚本中的 srun 命令。会发生什么?

#!/bin/sh
#SBATCH -n 1
#SBATCH -N 1
srun tar zxf julia-0.3.11.tar.gz
echo "prefix=/software/julia-0.3.11" > julia/Make.user
cd julia
srun make

【问题讨论】:

    标签: slurm


    【解决方案1】:

    第一个示例将产生 20 个任务; sbatch 将请求 20 个 CPU 并设置环境以便mpirun 知道该作业请求了多少 CPU。然后mpirun 将产生与分配一样多的进程(前提是 OpenMPI 是在 Slurm 支持下编译的)。

    #SBATCH --mpi=pmi2 部分用于srun,因此如果在提交脚本中未调用srun,它将无效。

    在第二个示例中,生成的进程数量没有区别,因为只需要一个。但是,使用srunsstat 的输出会更可靠,信号的管理会更精确,输出的缓冲也会更可控(通过srun 命令行选项)。

    如果您请求多个任务,srun 将实例化那么多进程。它可以是 MPI 程序,也可以是根据 SLURM_PROC_ID 环境变量调整其行为的顺序程序。

    您也可以在同一个提交脚本中运行多个srunsrun 的每个实例(称为“步骤”)然后在会计 (sacct) 中单独计算。

    最后,srun 可以使用分配的子集,并在单个作业中组织许多小任务的微调度(参见 srun 手册页中的示例)。

    【讨论】:

      猜你喜欢
      • 2017-10-01
      • 2021-01-19
      • 2014-08-21
      • 1970-01-01
      • 2019-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      相关资源
      最近更新 更多