gpt4 book ai didi

python - 如何在 Slurm 集群的多个节点上运行 MPI Python 脚本?错误 : Warning: can't run 1 processes on 2 nodes, 将 nnodes 设置为 1

转载 作者:太空狗 更新时间:2023-10-30 02:51:12 34 4
gpt4 key购买 nike

我正在 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

性能说明:

  • 如果可能的话,在同一个节点上运行代码会更快。节点间通信比节点内通信慢,它可能会慢一点,但也可能慢得多,这取决于集群架构等因素。
  • 引用您的集群设置建议。例如,在我的脚本中,我应该向该脚本添加某些 slurm 选项 - 特别是 -ccpu_bind=(更多 here)。

关于python - 如何在 Slurm 集群的多个节点上运行 MPI Python 脚本?错误 : Warning: can't run 1 processes on 2 nodes, 将 nnodes 设置为 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56690780/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com