我是 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
可能會得到你想要的。
添加回答
舉報
0/150
提交
取消