为了账号安全,请及时绑定邮箱和手机立即绑定

Slurm 和 mpi4py :用一个进程重复 n 次操作,而不是用 n 个进程重复执行一次

Slurm 和 mpi4py :用一个进程重复 n 次操作,而不是用 n 个进程重复执行一次

蛊毒传说 2023-09-12 18:20:03
我是 Slurm 和 mpi4py 的新用户,所以我想测试我在这里找到的一些代码: https: //researchcomputing.princeton.edu/mpi4py我的Python代码test.py如下:from mpi4py import MPIimport sysdef print_hello(rank, size, name):  msg = "Hello World! I am process {0} of {1} on {2}.\n"  sys.stdout.write(msg.format(rank, size, name))if __name__ == "__main__":  size = MPI.COMM_WORLD.Get_size()  rank = MPI.COMM_WORLD.Get_rank()  name = MPI.Get_processor_name()  print_hello(rank, size, name)我的 bash 脚本是:#!/bin/bash#SBATCH --job-name=mpi4py-test #SBATCH --nodes=1                #SBATCH --ntasks=3              #SBATCH --cpus-per-task=1 srun python test.py运行时sbatch run.sh我期望得到类似的东西:Hello World! I am process 0 of 3 on node1.Hello World! I am process 1 of 3 on node1.Hello World! I am process 2 of 3 on node1.但是我得到:Hello World! I am process 0 of 1 on node1.Hello World! I am process 0 of 1 on node1.Hello World! I am process 0 of 1 on node1.如果我改变的srun python test.py话srun mpiexec -n 3 python test.py我会得到:Hello World! I am process 0 of 3 on node1.Hello World! I am process 2 of 3 on node1.Hello World! I am process 1 of 3 on node1.Hello World! I am process 1 of 3 on node1.Hello World! I am process 0 of 3 on node1.Hello World! I am process 2 of 3 on node1.Hello World! I am process 0 of 3 on node1.Hello World! I am process 1 of 3 on node1.Hello World! I am process 2 of 3 on node1.该进程执行了 3 次,但我只想执行一次。提前致谢。
查看完整描述

1 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

这可能是因为

  • Mpi4py 使用的 MPI 版本未使用 Slurm 支持进行编译;或者

  • 你有一个非常旧的 OpenMPI ;或者

  • 你有一个非常古老的 Slurm。

跑步

mpiexec -n 3 python test.py

可能会得到你想要的。


查看完整回答
反对 回复 2023-09-12
  • 1 回答
  • 0 关注
  • 72 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信