如何在mpi4py中设置进程数

4 投票
2 回答
10363 浏览
提问于 2025-04-17 10:32

我该如何在mpi4py中设置固定数量的进程?在其他语言的mpi实现中,这个数量是通过init(args)作为参数传入的。但文档里似乎没有提到这个。有没有人知道该怎么做?我的程序会在普通的双核笔记本电脑和一个有24个节点(96个核心)的集群上运行,我想在笔记本上模拟这个集群。

PS. 如果这个内容其实在文档里,我很抱歉 - 对于刚接触mpi的人来说,这些内容确实有点难懂。

2 个回答

2

这个mpi4py 教程是这样做的:

from mpi4py import MPI    
import sys
client_script = 'my_client.py'
comm = MPI.COMM_SELF.Spawn(sys.executable, args=[client_script], maxprocs=5)
11

最简单的方法就是用mpiexec(或者mpirun)来启动程序,同时指定你想要的MPI任务数量:

$ cat foo.py
from mpi4py import MPI

comm = MPI.COMM_WORLD
nprocs = comm.Get_size()
rank   = comm.Get_rank()

if rank == 0:
   data = 'Hello!'
   comm.send(data, dest=nprocs-1, tag=1)
elif rank == nprocs-1:
   data = comm.recv(source=0, tag=1)
   print 'Rank ', rank, ' received ', data

$ mpiexec -np 4 python foo.py
Rank  3  received  Hello!

不过要注意,在你的笔记本电脑上运行96个任务可能并没有什么特别大的用处。

撰写回答