如何让一个给定的处理器一个接一个地完成任务?

时间:2017-05-23 19:45:54

标签: python memory memory-management mpi shared-memory

在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不会遇到内存错误)。如果有人能告诉我如何做到这一点,我将感激不尽。

0 个答案:

没有答案