SLURM:在同一组节点上运行两个具有不同设置的 MPI 作业

问题描述 投票:0回答:1

我有一个 slurm 批处理脚本,并且正在运行英特尔 MPI。

我想在具有不同进程放置配置的同一组节点上运行两个不同的 MPI 代码。

我正在运行两个 MPI 代码,一个使用 -np = 8,另一个使用 -np = 2。对于 -np=8 的情况,我想从第一个 mpiexec 开始排列 [0, 1, 2, 3]在节点 0 上,从节点 1 上的第二个 mpiexec 开始排名 [4, 5, 6, 7]。

对于 -np=2 的情况,我想在节点0上放置等级[0],在节点1上放置等级[1]。

我已经尝试过 -ppn、-perhost、I_MPI_PERHOST、所有可用选项 此处、英特尔进程放置,但它们都不起作用。

我的脚本直接继承来自 SBATCH 的选项,而不是本地设置。请不要建议srun; mpi 和 srun 有一些问题。我无法在多个节点上使用 srun 运行 mpi(PMI 错误); mpiexec 直接在多个节点上工作。

有什么办法可以实现上述任务吗?这是我当前正在使用的 SBATCH 脚本。

#!/bin/bash

#SBATCH -p small
#SBATCH -N 2
#SBATCH --exclusive
#SBATCH --time=01:00:00
#SBATCH --error=err.out
#SBATCH --output=out.out
#SBATCH --ntasks=10

module load compiler/intel/2018.2.199
module load apps/ucx/ucx_1.13.1

source /opt/ohpc/pub/apps/intel/2018_2/compilers_and_libraries_2018.2.199/linux/mpi/intel64/bin/mpivars.sh intel64
export I_MPI_FALLBACK=disable

#--> First mpiexec
mpiexec.hydra -n 8 ./hello.out & 

#--> Second mpiexe
mpiexec.hydra -n 2 ./world.out & 

wait

这里我的第一个 mpiexec 在节点 0 上运行等级 [0,1,2,3,4],在节点 1 上运行等级 [5,6,7] 当我的第二个 mpiexec 在节点 0 上运行排名 [0,1] 时。

我希望我的第一个 mpiexec 在节点 0 上运行排位 [0,1,2,3],在节点 1 上运行排位 [4,5,6,7] 我希望我的第二个 mpiexec 在node0上运行rank [0]并在node1上运行rank [1]

我不能使用 srun 我只能使用 mpiexec

有什么方法可以为每个 mpiexec 设置本地设置吗? 任何建议都会有帮助

mpi slurm sbatch intel-mpi
1个回答
0
投票

问题出在 Intel MPI 的版本上。

使用最新版本的 Intel MPI 解决了该问题。

我感谢 Gilles Gouaillardet 的解决方案。 请参阅评论进行讨论。

© www.soinside.com 2019 - 2024. All rights reserved.