我正在使用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个主机名,脚本永不退出。将每个进程的输出重定向到文件时,只有一个进程打印主机名,而另一个进程不执行任何操作。