gpt4 book ai didi

c - MPI_Iprobe什么时候返回true?

转载 作者:行者123 更新时间:2023-11-30 15:39:39 24 4
gpt4 key购买 nike

我有一个应用程序,其中每个处理器都需要将数据发送到特定数量的处理器,并在执行本地操作时从未知数量的处理器接收数据,数据大小未知。这就是我的想法:

MPI_Isend(...)
// Do local computation
MPI_Wait(...)

int flag;
MPI_Status st;
MPI_Iprobe(MPI_ANY_SOURCES, tag, &flag, comm, &st);
While(flag) {
MPI_Irecv(st.MPI_SOURCE,...);
MPI_Iprobe(MPI_ANY_SOURCES, tag, &flag, comm, &st);
}

我能否保证在这种情况下 MPI_Iprobe 能够找到发送的每一条消息?我怀疑如果当前等级要做的工作较少,它将在其他处理器有足够的时间实际发送消息之前达到MPI_Iprobe,在这种情况下我会错过一些消息。那么,在MPI_Wait之后使用MPI_Barrier可以解决问题吗?

我还有什么其他选择来解决这个问题?

最佳答案

除非我误解了您的问题,否则您可以使用常规的MPI_PROBE。这将阻止等待消息实际到达。

但是,我不太确定为什么需要使用探针。从您的示例代码看来,您可以将常规的 MPI_RECVMPI_ANY_SOURCE 一起使用。 MPI_RECV 不需要命名源。

关于c - MPI_Iprobe什么时候返回true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21361557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com