[英]How To Run MPI Python Script across multiple nodes on Slurm cluster? Error: Warning: can't run 1 processes on 2 nodes, setting nnodes to 1
我正在Slurm集群上运行一个可以从并行处理中受益的脚本,所以我正在尝试实现MPI。 但是,它似乎不允许我在多个节点上运行进程。 我不知道这是否通常是自动完成的,但每当我在批处理文件中设置--nodes = 2进行提交时,我都会收到错误消息“警告:无法在2个节点上运行1个进程,将nnodes设置为1.”
我一直在尝试使用简单的Hello World脚本,但仍遇到上述错误。 我在运行MPI脚本时添加了--oversubscribe到选项,但仍然出现此错误。
#SBATCH --job-name=a_test
#SBATCH --mail-type=ALL
#SBATCH --ntasks=1
#SBATCH --cpu-freq=high
#SBATCH --nodes=2
#SBATCH --cpus-per-task=2
#SBATCH --mem-per-cpu=1gb
#SBATCH --mem-bind=verbose,local
#SBATCH --time=01:00:00
#SBATCH --output=out_%x.log
module load python/3.6.2
mpirun -np 4 --oversubscribe python par_PyScript2.py
```bash
I still get the expected output, but only after the error message "Warning: can't run 1 processes on 2 nodes, setting nnodes to 1." I'm worried that without being able to run on multiple nodes, my actual script will be a lot slower.
警告的原因是这一行:
#SBATCH --ntasks=1
在你请求2个节点之前,你要指定你将只运行1 mpi进程。
--ntasks
设置要在您的情况下运行/排名的进程数。 然后用等效的-n
覆盖它,这就是你看到结果的原因。
供您参考,这是我在系统上运行的脚本,
#!/bin/bash
#SBATCH -C knl
#SBATCH -q regular
#SBATCH -t 00:10:00
#SBATCH --nodes=2
module load python3
START_TIME=$SECONDS
srun -n 4 python mpi_py.py >& py_${SLURM_JOB_ID}.log
ELAPSED_TIME=$(($SECONDS - $START_TIME))
echo $ELAPSED_TIME
表现说明:
-c
和cpu_bind=
(更多这里 )。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.