在Slurm作业中调用多个mpirun

时间:2019-11-24 06:48:01

标签: python subprocess mpi slurm

我正在使用Slurm运行一个Python脚本,该脚本在具有28个内核的系统上连续两次调用subprocess.Popen("mpirun -np 14 ...")。因此,我希望每个调用都使用14个内核,但是似乎只有一个调用可以启动(因此仅使用14个内核)。我已经在批处理脚本中尝试了--ntasks=28, --cpus-per-task=1--ntasks=2, --cpus-per-task=14等的所有可能组合,但是没有任何效果。

批处理脚本:

#!/bin/bash
# Job name:
#SBATCH --job-name=job
#
# Account:
#SBATCH --account=acc
#
# Partition:
#SBATCH --partition=p
#
# Quality of Service:
#SBATCH --qos=q
#
#SBATCH --nodes=1
#
#SBATCH --ntasks=28
#
#SBATCH --time=08:00:00
#
#SBATCH --output=job_%j.out
#SBATCH --error=job_%j.err

## Command(s) to run:
python script.py

仅在不使用Slurm的情况下使用python运行脚本时,它便起作用。

编辑:

script.py:

from subprocess import Popen

p1 = Popen('mpirun -np 14 hostname'.split())
p2 = Popen('mpirun -np 14 hostname'.split())

p1.wait()
p2.wait()

它仅显示14个主机名,脚本永不退出。将每个进程的输出重定向到文件时,只有一个进程打印主机名,而另一个进程不执行任何操作。

0 个答案:

没有答案