【问题标题】:MPI Communicator MPI_Comm_split without GroupsMPI Communicator MPI_Comm_split 无组
【发布时间】:2017-09-08 02:42:31
【问题描述】:

我正在课堂上学习使用 C 语言的 MPI。当您使用MPI_Comm_split 以及优势是什么时,我目前正在努力解决问题。如果我不使用组或者我的所有进程都在一个组中,我还试图弄清楚使用它是否比仅使用 MPI_COMM_WORLD 有任何好处。

据我了解,MPI_Comm_split 为每种“颜色”提供了一个独特的沟通者,这与使用 MPI_COMM_WORLD 不同(不确定最后一部分是否正确)。 MPI 组是一组进程,而通信器可帮助您在这些组内和这些组之间进行通信。

我在看this question的评论

例如,给定一个形状,例如正方形,程序分裂 MPI_COMM_WORLD 分为两组 grpArea 和 grpPerimeter 计算 给定形状的面积和周长。这些团体应该做 他们的私有计算并将结果返回到 root(rank 0) MPI_COMM_WORLD。

假设我们只计算面积而不是计算面积和周长,因此不使用组。使用MPI_Comm_split 拆分通信器以便每个处理器都有自己的通信器是否有任何意义?这样做有什么好处或坏处吗?

【问题讨论】:

    标签: c mpi


    【解决方案1】:

    您基本上是在问使用MPI_Comm_split 是否有意义而没有不同的组。不,不是的。它没有任何好处,也没有任何意义。

    使用同一组的不同通信器可能很有用,原因有两个:

    • 为应用程序中可能具有重叠标签的不同模块提供专用通信器。这样,您可以确保没有不匹配。对于这种情况,请使用MPI_Comm_dup
    • 使用拓扑。在这种情况下,请使用适当的构造函数,例如MPI_Cart_create

    创建过多的通信器可能会产生一些开销。此外,您可能会失去对MPI_COMM_WORLD 的特定优化。这不应该阻止你在有意义的时候使用交流器。

    【讨论】:

      猜你喜欢
      • 2016-05-20
      • 2019-04-02
      • 1970-01-01
      • 2021-08-11
      • 2015-12-04
      • 2018-05-29
      • 2015-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多