3

我正在实现一个标准的 MPI 主/从系统:有一个分配工作的主系统,还有一个请求块和处理数据的从站。

但是......如果以一种简单的方式实现(rank==0 是主服务器,其余的是从服务器),主服务器最终不会做任何实际工作,但仍然需要一个核心来完成几乎不需要真正计算能力的任务。所以我尝试在主控中实现一个单独的“调度程序”线程,但这涉及向自身发送 MPI 消息,并没有真正起作用......

你有什么想法如何解决这个问题吗?

4

1 回答 1

3

正如我在谷歌搜索后意识到的那样:您可以使用tags向自己发送消息。标签是一种过滤器:如果您只为 tag==1 执行接收,那么您将只收到那些,后面的消息能够超过早期的消息。

所以,至于解决方案:

  • 使用不同的 id 标记“调度程序到工作人员”和“工作人员到调度程序”消息
  • if rank==0: 启动调度线程
  • 事后,不论职级,要求工作。

这样,排名 0 的工作人员将不会收到自己的“让我们给我工作”消息,因为它们将具有“仅由调度程序接收”标签。

编辑:虽然这东西似乎并不是真正的线程安全......(=即使它是用 Python 编写的,它有时也会在“free()”中崩溃......)所以我仍然对真正的 & 感兴趣行之有效的解决方案:)

于 2012-11-02T02:28:25.503 回答