我们将 SLURM 系统用于集群,我想在一个作业中在(一个)节点中运行多个 mpiexec,作为参考https://doku.lrz.de/display/PUBLIC/Job+farming+with+SLURM . 这是我们尝试过的(伪)shell 之一。
#!/bin/sh
#SBATCH --job-name="Test"
#SBATCH --export=ALL
#SBATCH --partition=normal
#SBATCH --nodes=1
#SBATCH --ntasks-per-core=1
#SBATCH --exclusive # no other jobs on the nodes while job is running
#SBATCH -o std_%J.out # the file to write stdout
#SBATCH -e std_%J.err # the file to write stderr
#SBATCH -t 24:00:00 # time (HH:MM:SS)
for I in `seq 0 23`
do
echo localhost
done > localhost
unset I_MPI_HYDRA_BOOTSTRAP
unset I_MPI_HYDRA_BOOTSTRAP_EXEC_EXTRA_ARGS
export I_MPI_FABRICS=shm
export I_MPI_HYDRA_HOST_FILE=localhost
mpiexec -env I_MPI_PIN_PROCESSOR_LIST=0-5 -n 6 ./a.out 1>stdout1 2>stderr1 &
mpiexec -env I_MPI_PIN_PROCESSOR_LIST=6-11 -n 6 ./a.out 1>stdout2 2>stderr2 &
mpiexec -env I_MPI_PIN_PROCESSOR_LIST=12-17 -n 6 ./a.out 1>stdout3 2>stderr3 &
mpiexec -env I_MPI_PIN_PROCESSOR_LIST=18-23 -n 6 ./a.out 1>stdout3 2>stderr3 &
wait
但是,有些工作不工作。在我们的例子中,有 2 个作业运行,但其他 2 个作业没有。(这可能与节点有 2 个 cpus 的事实有关。)我尝试使用 multi-prog 选项,但这个选项似乎只支持串行作业,似乎不支持 mpiexec。
如果有人帮助我们在一项工作中运行多个 mpiexec,我将不胜感激。