【问题标题】:Does received count always match send count for MPI message?收到的计数是否总是与 MPI 消息的发送计数匹配?
【发布时间】:2019-10-12 01:06:13
【问题描述】:

当您在一个进程中发送一条包含一些MPI_typen 元素的MPI 消息,然后在另一个进程中接收接收count> n 时,您可以保证始终收到所有n元素?

本质上,如果您通过阻塞模式MPI_Send 发送一条消息,然后通过一个具有足够大接收缓冲区的阻塞模式MPI_Recv 接收它,您能保证收到整条消息吗?

或者您是否有可能只获得拳头 k < n 元素,并且应该反复调用 MPI_Recv 直到获得全部内容。

我很确定答案是肯定的,但查看官方documentationspecification notes 我找不到确定的答案。

【问题讨论】:

  • 您无法在 MPI 中收到截断的消息
  • 正如 Gilles 所说,您永远不会收到截断的消息,即如果 n > count 那么 MPI 将报告错误并失败。但是,如果 n

标签: mpi


【解决方案1】:

正如 Gilles 和 David 在 cmets 中所说,答案是肯定的。正如 Gilles 所说,您永远不会收到截断的消息。如果n > count 则 MPI 会报错并失败。

如果n <= countreceive 将完成,但通常您不知道n 的值是多少(传入消息的大小)。您需要通过调用MPI_Get_count() 从状态变量中提取它。

【讨论】:

    猜你喜欢
    • 2021-11-20
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 2020-09-18
    • 2019-11-16
    • 2015-10-19
    相关资源
    最近更新 更多