MPI_Get 是否有 MPI_Star 而不是 MPI_Win(窗口)?

计算科学 有限元 并行计算 宠物 mpi
2021-12-09 00:41:40

在 FEM 应用中,每个处理器只需要来自相邻处理器的数据,这提供了一种模板或星形通信模式。在用于 MPI_Get 的 MPI_Win 中,需要设置一组处理器来打开公共数据的窗口。但我们通常需要的是为 MPI_Get 指定模板模式。在我看来,MPI_Win 很浪费,不是吗?也许有一个相关的问题

2个回答

我不完全清楚你在这里问什么,但看起来你的问题的解决方案可能是 MPI-3.0 第 7.6 章中的新邻居集体(你可以在这里找到 PDF )。

我远不是这些方面的专家,但基本思想是您将拓扑附加到您的 MPI_Communicator 并获得一个新的通信器,您可以在其中使用不必涉及所有进程的稀疏集体通信。

要使用它,您必须确保您有一个支持 MPI 新功能的实现。我知道最新版本的MPICH (3.0.4) 支持它们。上次我听说,Open MPI还没有完成它们的实现,但我确信它即将到来。

韦斯对社区集体的看法是完全正确的,你的使用(在我理解的范围内)是它的动力之一。但是,与 MPI RMA(即 MPI_Win)一样,这是一个需要集体初始化的静态模型。您还可以在邻居之间使用 MPI_Probe 和动态通信器。这可能不允许进行与邻域集体或单方面相同的优化,但它是动态的,并且应该在任何 MPI-1.x 前向实现中都能很好地工作(我不记得何时添加了 Probe)。