【问题标题】:How to use mpi on a real-time streaming application?如何在实时流应用程序上使用 mpi?
【发布时间】:2016-11-01 19:16:30
【问题描述】:

我有 2 个进程,一个进程将数据包流式传输到另一个进程,直到内部中断停止该进程(发送的进程)。我希望有一种机制,其他进程可以接收,直到该通道上有任何消息要接收。

除了将停止命令也作为消息传输之外,还有什么方法可以做到这一点? 我不喜欢将完成/中断作为另一条消息发送,因为在某些情况下中断可能会杀死发送方进程。

if (world.rank() != 0) {
  while (!interrupt())
    world.send(ROOT, ID, a, bufferSize);
  // I prefer not to send finish/interrupt as another message
 }
 else {
  while (/*there is any packet to be received*/)
    world.recv(boost::mpi::any_source, ID, a, bufferSize);
}

【问题讨论】:

    标签: c++ mpi boost-mpi


    【解决方案1】:

    如果MPI_COMM_WORLD 进程之一死亡,则无法正确继续应用程序。发送停止命令并让发送者保持活动状态绝对是您应该做的。

    理论上,您可以在 MPI 中使用单向通信或超时机制(使用 irecv / request::cancel),但我认为这没有任何意义..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-17
      • 2013-06-13
      • 2012-01-16
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      • 1970-01-01
      • 2011-01-13
      相关资源
      最近更新 更多