bash - 使用mpirun conda环境slurm出错

标签 bash conda openmpi slurm mpi4py

每当我在事件的 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 环境,但它也不起作用。

最佳答案

如果任何命令依赖于正在初始化的 Conda 和/或正在激活的环境,则需要调整当前的 shebang。尝试一下

#!/bin/bash -l

这将告诉脚本在登录模式下运行,然后它将获取初始化脚本(例如 .bashrc),Conda 初始化代码默认位于该脚本中。

关于bash - 使用mpirun conda环境slurm出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65743997/

相关文章:

regex - Bash grep 正则表达式

php - 如何使用 exec 在 Linux 上删除文件

linux - 如何让 bash 代码处理文件夹和子文件夹中的所有文件?

python - 如何使用 conda 创建单独的 python 环境,每个环境都有不同的 $PYTHONPATH

MPI_Rank 为所有进程返回相同的进程号

bash - 如何在 Bash 中使用读取命令?

python - 从用户定义的环境启动时,为什么 Spyder 5.0.0 应用程序启动错误?

python - 如何更新 Anaconda?

linux - OpenMPI Secure SHell 如何从主节点进入所有计算节点?

c++ - OpenMPI 与 Mvapich2 : MPI_Send without MPI_Recv