【发布时间】:2021-01-15 21:49:34
【问题描述】:
每当我在活动 conda 环境中在批处理脚本中使用mpirun 时都会出错(但如果我不使用批处理脚本,或者我不在 conda 环境中,则不会发生此错误)。
我有一个名为test.py的简单测试代码
from mpi4py import MPI
comm = MPI.COMM_WORLD
n_proc = comm.Get_size()
proc_id = comm.Get_rank()
if proc_id == 0:
print('Number of processors = '+str(n_proc))
print('Hello from proc id = '+str(proc_id))
如果我只是在登录节点中运行mpirun -np 5 python test.py,我会得到预期的结果:
Number of processors = 5
Hello from proc id = 0
Hello from proc id = 1
Hello from proc id = 2
Hello from proc id = 3
Hello from proc id = 4
但如果我使用以下批处理脚本:
#!/bin/bash
# Submit this script with: sbatch <this-filename>
#SBATCH --time=0:30:00 # walltime
#SBATCH -n 5
#SBATCH --mem-per-cpu=10G # memory per CPU core
#SBATCH --qos=normal # qos
#SBATCH -J "mpi" # job name
## /SBATCH -p general # partition (queue)
## /SBATCH -o slurm.%N.%j.out # STDOUT
## /SBATCH -e slurm.%N.%j.err # STDERR
# LOAD MODULES, INSERT CODE, AND RUN YOUR PROGRAMS HERE
mpirun python test.py
然后运行sbatch batch_script,然后我得到以下错误:
Error: node list format not recognized. Try using '-hosts=<hostnames>'.
/var/spool/slurmd/job12649152/slurm_script: line 21: 224459 Aborted (core dumped) mpirun python test.py
我尝试添加行#SBATCH -hosts=n1,但我仍然得到完全相同的错误(除了输出文件的文件名变成sts=n1)。我还尝试使用旧版本的 mpich (mpich/3.2.1) 构建另一个 conda 环境,但它也不起作用。
【问题讨论】:
-
也许尝试将脚本的 shebang 更改为:
#!/bin/bash -l。如果它确实依赖于 Conda,那么您将需要它来确保执行.bashrc中的 Conda 初始化代码。 -
是的,添加
#!/bin/bash -l成功了!
标签: bash conda openmpi slurm mpi4py