2

我正在尝试实施主从计划。

我的主人有工人要做的工作。工人每完成一项工作,他就向主人要求一份新工作,主人把它发给他。工人们正在计算最小路径。当一个worker找到一个比他得到的全局最小值更好的最小值时,他会将它发送给包括master在内的每个人。

我计划让工人和主人使用MPI_ISEND. 另外,我认为接收应该是阻塞的。当没有人请求工作或更新最佳结果时,master 无事可做,因此他应该阻塞等待接收。此外,每个工人都应该在完成工作后等待接收以获取新的。

不过,我不确定使用非阻塞异步发送和阻塞同步接收的影响

我认为另一种方法是使用MPI_IPROBE,但我不确定这会给我带来任何优化。

请帮助我了解我所做的是否正确。这是正确的解决方案吗?

4

1 回答 1

4

您可以将阻塞发送与非阻塞接收匹配,反之亦然,这不会导致任何问题。但是,如果工人工作时master真的无事可做,工人完成工作单元后应该阻塞,那么没有理由在这方面进行非阻塞通信。master 可以使用 发布阻塞接收MPI_ANY_SOURCE,worker 可以只使用阻塞发送来回发他们的结果,因为 master 上的匹配接收已经发布。

因此,我将使用 Send-Recv 在 master 和 worker 之间交换工作单元,并使用 Isend-Irecv 来广播新的全局最小值。

于 2011-01-20T20:28:40.947 回答