10.7. 使用Slurm启动

Open MPI 支持在 Slurm 下启动并行 MPI 作业的两种模式:

  1. 使用Open MPI的全功能启动器mpirun

  2. 使用Slurm的"直接启动"功能。

除非有充分理由直接使用srun启动,Open MPI团队建议在Slurm作业下使用mpirun进行启动。

注意

在5.0.x版本之前的Open MPI中,使用srun进行直接启动可能比使用mpirun更快。现在情况已不再如此。

10.7.1. 使用 mpirun

mpirun在Slurm作业中启动时,mpirun将自动利用Slurm基础设施来启动和控制各个MPI进程。因此,无需为mpirun指定--hostfile--host-n选项。

注意

在Slurm作业中,使用mpirun是启动OpenMPI作业的推荐方法。

mpirun的Slurm支持应始终可用,无论Open MPI或Slurm是如何安装的。

例如:

# Allocate a Slurm job with 4 slots
shell$ salloc -n 4
salloc: Granted job allocation 1234

# Now run an Open MPI job on all the slots allocated by Slurm
shell$ mpirun mpi-hello-world

这将在Slurm分配的节点上运行4个MPI进程。

或者,如果提交脚本:

shell$ cat my_script.sh
#!/bin/sh
mpirun mpi-hello-world
shell$ sbatch -n 4 my_script.sh
srun: jobid 1235 submitted
shell$

salloc的情况类似,无需在命令行选项中指定MPI进程数量,因为Open MPI会在运行时直接从Slurm获取该信息。

10.7.2. 使用Slurm的"直接启动"功能

假设Slurm已配置其PMIx插件,您可以使用srun直接启动Open MPI应用程序,而无需使用Open MPI的mpirun命令。

首先,您必须确保Slurm在构建和安装时启用了PMIx支持。可通过以下方式确认:

shell$ srun --mpi=list
MPI plugin types are...
     none
     pmi2
     pmix
specific pmix plugin versions available: pmix_v4

srun的输出可能会因安装的Slurm版本而略有不同。 如果输出中没有显示PMIx,那么您将无法使用srun 来启动Open MPI应用程序。

注意

Open MPI 5.0.0及后续版本不再支持PMI-2。

如果Slurm安装包含了PMIx插件,Open MPI应用程序就可以直接通过srun命令启动。例如:

shell$ srun -N 4 --mpi=pmix mpi-hello-world

或者你可以使用sbatch配合脚本来运行:

shell$ cat my_script.sh
#!/bin/sh
srun --mpi=pmix mpi-hello-world
shell$ sbatch -N 4 my_script.sh
srun: jobid 1235 submitted
shell$

类似于在sbatch批处理脚本中使用mpirun时的情况,无需指定进程数量的srun命令行选项,因为sbatch已经设置了所有关于进程数量、核心数、分区等相关的Slurm级别参数。

10.7.3. Slurm 20.11

Slurm 20.11.0版本中引入了一些行为变更,随后在Slurm 20.11.3版本中又撤销了这些变更。

SchedMD(Slurm的开发者)强烈建议所有Open MPI用户避免使用20.11.0至20.11.2版本的Slurm。

事实上,使用任何版本的Open MPI搭配这些有问题的Slurm版本都可能会遇到问题。

重要

请降级到旧版本或升级到新版本的Slurm。