【发布时间】:2011-06-15 19:03:29
【问题描述】:
我正在编写一个程序来使用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。
【问题讨论】: