Parallel processing 在MPI中使用非阻塞发送和阻塞接收?

Parallel processing 在MPI中使用非阻塞发送和阻塞接收?,parallel-processing,mpi,master-slave,Parallel Processing,Mpi,Master Slave,我正在努力实施大师级工人计划 我的主人有工人们要做的工作。每一次工人完成一项工作,他都会向船长索要一份新的工作,船长会把它发给他。工人们正在计算最小路径。当一个工人找到一个比他得到的全局最小值更好的最小值时,他会将它发送给包括主人在内的所有人 我计划工人和船长使用MPI\u ISEND发送数据。另外,我认为receive应该是阻塞的。当没有人要求工作或更新了最佳结果时,大师无事可做,因此他应该阻止等待接收。此外,每个工人在完成工作后,都应该等待收到一份新的工作 然而,我不确定使用非阻塞异步发送和

我正在努力实施大师级工人计划

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

我计划工人和船长使用
MPI\u ISEND
发送数据。另外,我认为receive应该是阻塞的。当没有人要求工作或更新了最佳结果时,大师无事可做,因此他应该阻止等待接收。此外,每个工人在完成工作后,都应该等待收到一份新的工作

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

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


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

您可以将阻塞发送与非阻塞接收进行匹配,反之亦然,这不会导致任何问题。然而,如果在工人工作时,主人真的没有什么事可做,工人在完成他们的工作单元后应该封锁,那么就没有理由不封锁这方面的通信。主机可以使用MPI\u ANY\u SOURCE发布阻塞接收,工作人员可以使用阻塞发送发回其结果,因为主机上匹配的接收已经被发布

所以,我会发送Recv在主工之间交换工作单位,并发送Irecv广播新的全球最小值