MPI:主人与主人也在做工作

时间:2012-11-02 02:01:06

标签: parallel-processing mpi

我正在实施一个标准的MPI主/从系统:有一个分配工作的主设备,并且有一些奴隶要求分块和处理数据。

然而......如果以一种天真的方式实现(rank == 0是master,其余是奴隶),主人最终没有真正的工作,但仍然需要一个核心来满足几乎没有真正的计算能力。所以我试着在master中实现一个单独的“scheduler”线程,但这涉及到将MPI消息发送给自己,并且没有真正起作用......

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

1 个答案:

答案 0 :(得分:3)

我在谷歌搜索后意识到:您可以使用标记向自己发送消息。标签是一种过滤器:如果你只为标签== 1做 recv ,那么你只会收到那些,后来的消息能够超过预告片。

所以,至于解决方案:

  • 使用不同的id
  • 标记“scheduler to worker”和“worker to scheduler”消息
  • 如果rank == 0:启动调度程序线程
  • 之后,无论等级如何,都要求工作。

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

编辑:这件事似乎并不是线程安全的虽然...(=它有时会在“free()”中崩溃,即使它是写的在Python ...)所以我仍然对真实的&经过验证的解决方案:)