Parallel processing 我可以使用MPI_Probe来探测集合操作发送的消息吗?

Parallel processing 我可以使用MPI_Probe来探测集合操作发送的消息吗?,parallel-processing,mpi,Parallel Processing,Mpi,在我的代码中,我有一个服务器进程反复探测传入消息,它有两种类型。 两种类型中的一种将由每个进程发送一次,以向服务器进程提供有关其任务的提示 终止 我想知道使用MPI_广播来广播这些终止消息和使用MPI_探测来探测它们的到达是否有效 我试着用这个组合,但失败了。这次失败可能是由其他原因造成的。因此,我希望任何知道这一点的人都能确认。我不确定MPI标准是否排除了这一点,但我不认为如果可能的话,它会有什么用处。在(极少数)情况下,当我使用mpi_probe时,我会使用它来找出传入消息的大小;当然,它也

在我的代码中,我有一个服务器进程反复探测传入消息,它有两种类型。 两种类型中的一种将由每个进程发送一次,以向服务器进程提供有关其任务的提示 终止

我想知道使用MPI_广播来广播这些终止消息和使用MPI_探测来探测它们的到达是否有效


我试着用这个组合,但失败了。这次失败可能是由其他原因造成的。因此,我希望任何知道这一点的人都能确认。

我不确定MPI标准是否排除了这一点,但我不认为如果可能的话,它会有什么用处。在(极少数)情况下,当我使用
mpi_probe
时,我会使用它来找出传入消息的大小;当然,它也可以获取有关“飞行中”消息的其他信息。但是
mpi\u bcast
是一个集体操作,因此通信器中的所有进程都知道可以使用
mpi\u probe
查找的消息的所有信息。我认为?

我不确定MPI标准是否排除了这一点,但如果可能的话,我不认为它会有什么用处。在(极少数)情况下,当我使用
mpi_probe
时,我会使用它来找出传入消息的大小;当然,它也可以获取有关“飞行中”消息的其他信息。但是
mpi\u bcast
是一个集体操作,因此通信器中的所有进程都知道可以使用
mpi\u probe
查找的消息的所有信息。我认为?

不,您只能使用MPI_Probe进行点对点通信测试。对于集体交流,参与的唯一方式就是积极地发出集体电话。根据“调用匹配在程序中同一点执行的对MPI_RECV(…,source,tag,comm,status)的调用所接收的相同消息”——例如,它只匹配像RECV那样的点到点内容


随着MPI3中新的非阻塞集合的出现,您将能够使用MPI_测试(或MPI_等待)来检查非阻塞请求的状态,就像您使用非阻塞发送/接收一样,尽管我没有密切关注WGs的工作,所以我不知道细节。

否,您只能使用MPI_Probe测试点对点通信。对于集体交流,参与的唯一方式就是积极地发出集体电话。根据“调用匹配在程序中同一点执行的对MPI_RECV(…,source,tag,comm,status)的调用所接收的相同消息”——例如,它只匹配像RECV那样的点到点内容


随着MPI3中新的非阻塞集合的出现,您将能够使用MPI_测试(或MPI_等待)来检查非阻塞请求的状态,就像使用非阻塞发送/接收一样,尽管我没有密切关注WGs的工作,所以我不知道细节。

非常感谢您一如既往地再次做出出色的澄清。非常感谢您一如既往地再次做出出色的澄清。非常感谢您的回答。我之所以尝试这种看似愚蠢的组合,是因为很多书都声称MPI_BCast的性能优于每个处理器单独发送消息的情况。非常感谢您的回答。我之所以尝试这种看似愚蠢的组合,是因为很多书都声称MPI_BCast的性能优于每个处理器单独发送消息的情况。