【问题标题】:MPI functions to 'listen' for if a node is readyMPI 功能“侦听”节点是否准备就绪
【发布时间】:2012-02-01 16:10:59
【问题描述】:

我希望有一个“父”节点生成数据并将其传递给工作节点,工作节点将对数据进行必要的计算。

我希望父节点坐下来“倾听”工作节点何时告诉他他已准备好接收数据。

完成此任务的最佳方法是什么?我应该为此使用哪些功能?如果我使用 MPI_Send(...) 那么我必须提前知道我将数据发送到哪个节点。如果我使用 MPI_Recv(...) 接收来自等级“i”的消息说他准备好了,那么当其他节点可能试图时,父节点不会在给定等级上等待说他准备好了也发送“就绪”消息?

我正在寻找一种功能,让我的父节点可以侦听任何传入的消息,或者以某种方式知道何时可以安全地将消息发送到给定的工作节点。

【问题讨论】:

  • 您可以将 MPI_Recv 与 MPI_ANY_SOURCE 源一起使用;或者,您可以使用 MPI_Probe 来查找消息。

标签: mpi message-passing


【解决方案1】:

您可以将特殊值MPI_ANY_SOURCE 用于MPI_Recv 中的源参数,然后检查MPI_Status 对象以获取您实际从中接收的进程的等级。

【讨论】:

  • 我认为这回答了我的问题,但我意识到它可能不会......如果我的父母等级循环通过“MPI_Recv(......,MPI_ANY_SOURCE,......)”那么它不能做任何事情否则,只能坐等。我希望让我的父级在循环并尝试发送数据时做其他事情(比如将数据写入文件等)。我应该如何做到这一点?我可以线程父级,只有一个线程创建/发送数据,而其他线程文件 I/O?
  • 您只需使用MPI_Irecv,再次使用MPI_ANY_SOURCE,偶尔使用MPI_Test 即可查看是否收到了消息。
猜你喜欢
  • 1970-01-01
  • 2016-04-07
  • 2011-07-08
  • 1970-01-01
  • 2015-10-20
  • 1970-01-01
  • 2012-02-15
  • 1970-01-01
  • 2011-02-08
相关资源
最近更新 更多