MPI 警告:程序退出并显示未完成的接收请求
MPI Warning: Program exiting with outstanding receive requests
我希望使用 MPI 在两个节点之间发送一个连续的内存数组。为此,我使用以下非阻塞发送/接收命令(MPI_Isend,MPI_Irecv)。执行 run 命令时,我看到两个警告语句,如下所示:
Warning: Program exiting with outstanding receive requests
基本上,我希望看到来自"NorthEdge1"的数组数据被传递到"NorthofNorthEdge3"。我该如何解决这个问题? 我还能尝试检查此通信吗?
以下是源代码的摘录:
#define Rows 48
...
double *northedge1 = new double[Rows];
double *northofnorthedge3 = new double[Rows];
...
...
int main (int argc, char *argv[])
{
....
....
MPI_Request send_request, recv_request;
...
...
{
MPI_Isend(northedge1, Rows, MPI_DOUBLE, my_rank+1, 0, MPI_COMM_WORLD, &send_request);
MPI_Irecv(northofnorthedge3, Rows, MPI_DOUBLE, my_rank+1, MPI_ANY_TAG, MPI_COMM_WORLD,
&recv_request);
}
看来你还没有打电话给MPI_Waitall()
."即时"发送和接收例程仅开始通信。您必须阻止您的进程以确保通信已完成。MPI 中的阻塞是 MPI_Wait()
的变体;在您的情况下,您需要MPI_Waitall()
.
相关文章:
- 模板参数替换失败,并且未完成隐式转换
- 链接器输入文件未使用,因为链接未完成,我无法获得.o
- 外部基础类型未按请求对齐时的atomic_ref
- 我对C 中共享指针列表进行排序的功能未完成类型
- 我的循环未完成,当文件到达文件末尾时如何关闭它
- ADL 失败(或未完成?)具有附加(非推导)模板参数的函数
- 我的 c++ 程序未完成并关闭
- 程序未完成返回值3221225477没有编译器错误
- 多嵌套的循环C++未完成
- closesocket()未完成IOCP的挂起操作
- 未完成的纯虚拟方法
- 结构未完成排序
- 在所有线程未完成打印时提升线程
- Boost Asio未完成对套接字的写入
- gRPC c++ 多个未完成的请求
- 如何为未完成的枚举到字符串的转换生成编译错误
- 主线程关闭,而工作线程未完成
- Makefile中未完成链接
- QNetworkRequest URL 包含 '?' - 由于 QUrl 编码而未正确请求
- MPI 警告:程序退出并显示未完成的接收请求