我正在实施一个标准的MPI主/从系统:有一个分配工作的主设备,并且有一些奴隶要求分块和处理数据。
然而......如果以一种天真的方式实现(rank == 0是master,其余是奴隶),主人最终没有真正的工作,但仍然需要一个核心来满足几乎没有真正的计算能力。所以我试着在master中实现一个单独的“scheduler”线程,但这涉及到将MPI消息发送给自己,并且没有真正起作用......
你有什么想法如何解决这个问题?
答案 0 :(得分:3)
我在谷歌搜索后意识到:您可以使用标记向自己发送消息。标签是一种过滤器:如果你只为标签== 1做 recv ,那么你只会收到那些,后来的消息能够超过预告片。
所以,至于解决方案:
这样,0级工作人员将不会收到自己的“让我工作”消息,因为他们将拥有“仅由调度程序接收”标签。
编辑:这件事似乎并不是线程安全的虽然...(=它有时会在“free()”中崩溃,即使它是写的在Python ...)所以我仍然对真实的&经过验证的解决方案:)