10.7. 使用Slurm启动
Open MPI 支持在 Slurm 下启动并行 MPI 作业的两种模式:
使用Open MPI的全功能启动器
mpirun。使用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。