gpt4 book ai didi

c - MPI_Recv : Receiving a different size than the one Sent

转载 作者:太空狗 更新时间:2023-10-29 15:08:34 25 4
gpt4 key购买 nike

我正在编写一个程序来使用 MPI 库检查最短路径。有两种情况:
要么我找到了更好的路径,以防缓冲区的第一个槽将声明 resultBuff[0] = 1 并且我将需要遍历缓冲区的其余内容以获得更好的路径。
另一种情况是 resultBuff[0] = 0,我不会排除缓冲区其他单元格中的任何值。

我可以使用单独的 MPI_Isend 调用吗:

如果我找到更好的路径并将其存储在 resultBuff[1]resultBuff[10] 中:

MPI_Isend((void*)sendBuff, 11, MPI_INT, 0, 1, MPI_COMM_WORLD, &request);

如果找不到更好的路径:

MPI_Isend((void*)sendBuff, 1, MPI_INT, 0, 1, MPI_COMM_WORLD, &request);

在这两种情况下我都会使用

MPI_Recv( (void*)resultBuff, 11, MPI_INT, MPI_ANY_SOURCE, 1, MPI_COMM_WORLD, &status);

接收结果。

这行得通吗?
如果是这样,如果不发送更好的路径,我会节省通信成本吗?

注意:resultBuff 的大小为 11。

最佳答案

是的,你可以做到这一点。来自 MPI 标准和 man pages对于 MPI_Recv,“计数参数表示消息的最大长度;实际数量可以用 MPI_Get_count 确定”,您使用从 MPI_Recv() 返回的 status 对象调用它。

至于节省通信成本,它可能不会——这种短消息主要受发送消息的延迟而不是带宽的影响。

关于c - MPI_Recv : Receiving a different size than the one Sent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4803961/

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