在Python中,我使用 mpi4py 运行基于多处理器的计算。在我的代码中,我让每个处理器执行许多任务(让我们假设每个处理器执行5个任务,即数字= 5)。所有这些任务都是内存密集型。为了确保处理器没有内存不足,我希望处理器完成一项任务,然后转移到其他任务。
我的代码结构如下。
from mpi4py import MPI
comm = MPI.COMM_WORLD
size = comm.Get_size()
rank = comm.Get_rank()
count = 0
for i in range(1, size):
if rank == i:
for j in range(5):
count = count + 1
res = func(count)
comm.send(res, dest=0, tag=count)
在上面的示例中,'func'是执行内存密集型任务的用户定义函数(假设count是该函数的参数。)< / p>
如果我们以处理器1(rank == 1)为例,则在其上运行五个不同的任务(即,func(1),func(2),func(3),func(4), FUNC(5))。我想我应该确保func(1)在处理器1上运行然后func(2)在处理器1上运行(而func(2)... func(5)正在等待,等等)(以确保处理器) 1不会遇到内存错误)。如果有人能告诉我如何做到这一点,我将感激不尽。