- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
例如,
if (rank == 0) {
MPI_Isend(&sendbuf, ..., 1, ..., &request);
MPI_Wait(&request, ...); /* Is this wait necessary? */
} else if (rank == 1) {
MPI_Irecv(&recvbuf, ..., 0, ..., &request);
MPI_Wait(&request, ...);
}
MPI_Isend 之后的 MPI_Wait 是否必要?理论上,
A separate send complete call is needed to complete the communication.
但实际上,它无需显式等待 MPI_Isend 即可工作。
最佳答案
需要单独的完整调用(例如 MPI_Wait
)。
对于MPI_Isend
,完成可确保消息已从发送缓冲区复制出来。在消息完成之前,您不得修改或取消分配发送缓冲区。
同样,对于MPI_Irecv
,您必须完成调用以确保接收缓冲区已接收到消息。在消息完成之前,您不得尝试从接收缓冲区读取消息。显然,这意味着您不得写入或释放接收缓冲区。
消息完成是通过MPI_Wait
、成功的MPI_Test
或其多个完成(全部/任何/部分)变体完成的。
除了完成通信之外,这些函数还释放通信请求对象。从技术上讲,您可以在不使用 MPI_Request_free
完成通信的情况下完成此操作。
无法根据您有限的代码示例给出如何操作的建议。如果没有更多代码,就不可能告诉您正确放置 MPI_Wait
的位置。如果您将其放在那里,则代码是正确的,但您也可以只使用 MPI_Send
/MPI_Recv
。
忽略消息完成将导致资源泄漏,并且很可能导致错误的代码。
MPI 很难,非阻塞 MPI 更难。如果您是初学者,请尝试坚持使用阻塞 MPI 调用。非阻塞调用似乎被初学者过度使用,并导致代码很难推理。也不要仅仅因为代码适合您就相信它是正确的。
关于c - MPI_Isend 之后是否需要 MPI_Wait?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43004420/
我用 MPI 编写了一个简单的程序,但它在调用 MPI_Wait 后崩溃了: MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size);
我对何时应该调用 MPI_Wait(或其他变体,例如:MPI_Waitall、MPII_Waitsome 等)有点困惑。考虑以下情况:(注:伪代码) 案例(一) MPI_Isend (send_buf
例如, if (rank == 0) { MPI_Isend(&sendbuf, ..., 1, ..., &request); MPI_Wait(&request, ...); /
我正在尝试取消使用 MPI_Irecv 启动的异步操作。在一个线程中,我有一个循环,通过连续调用 MPI_Irecv 和 MPI_Wait 来不断监听请求。要干净地退出循环,我想取消请求,例如从另一个
我想了解为什么要使用 MPI_Wait 来等待 MPI 请求完成? 所以,在 MPI_Send 范围的末尾我会使用 MPI_Wait 方法,但为什么呢?在我的理解中 MPI_Send 只是发送一条消息
下面是源代码实现的输出。我不确定这意味着什么以及我应该如何补救代码。 aborting job: Fatal error in MPI_Wait: Invalid MPI_Request, err
我已经阅读了所有 MPI 文档和教程以及我能找到的与此相关的 Stack Overflow 问题,但我仍然不完全理解 MPI_Wait 在“完成”MPI_Isend 时的行为方式。能简单概括一下吗?是
案例:1.使用MPI_Wait()获取的status有什么用 if(rank==0) MPI_Isend(&buffer0, count, MPI_INT, 1, 0, MPI_COMM_WORLD,
我使用 MPI 并行化了 Fortran 代码。在共享点,我使用 MPI_Isend 将模型中所有进程的所有数据发送到缓冲区。然后,每个进程使用 MPI_Recv 收集所需的数据。由于 MPI_Rec
我是一名优秀的程序员,十分优秀!