【问题标题】:Why to use MPI_Wait in MPI_Send?为什么要在 MPI_Send 中使用 MPI_Wait?
【发布时间】:2013-07-08 16:25:53
【问题描述】:

我想了解为什么要使用 MPI_Wait 来等待 MPI 请求完成?

所以,在 MPI_Send 范围的末尾,我会使用 MPI_Wait 方法,但为什么呢? 在我的理解中,MPI_Send 只是发送一条消息,而不是等待请求完成,但是 MPI_ISend 做!

谢谢。

【问题讨论】:

  • 反之:MPI_Wait等类似函数用于等待,确保MPI_Isend等异步操作完成。 MPI_Send 是一个阻塞调用 - 在操作完成之前它不会返回控制权。

标签: mpi


【解决方案1】:

总结一下@Hristo Iliev 所说的话,您不应该(也不能)打电话给MPI_WAIT 来打电话给MPI_SEND。调用MPI_WAIT 要求您传入一个MPI_Request 对象,该对象是您从MPI_I<something> 函数获得的返回值。没有那个对象,MPI 不知道你在等待什么。

所以你最后的推理是正确的。您不会等待MPI_SEND,但您确实(并且必须)等待MPI_ISEND

【讨论】:

  • 谢谢。但是,我应该在 MPI_Send 请求中等待什么?我应该等待 MPI_Recv 发送 MPI_Status 吗?
  • 您无需等待 MPI_Send 请求。一旦 MPI_Send 调用返回,它就完成了发送过程的目的。在未来的某个时间点,接收进程会在适当的调用中接收到它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-10
  • 2021-12-16
  • 1970-01-01
  • 2015-01-27
  • 2014-01-29
相关资源
最近更新 更多