gpt4 book ai didi

c - MPI Communicator MPI_Comm_split 无组

转载 作者:太空宇宙 更新时间:2023-11-04 08:05:10 24 4
gpt4 key购买 nike

我正在类里面使用 C 语言学习 MPI。我目前正在尝试了解您何时使用 MPI_Comm_split 以及其优点是什么。如果我不使用组或者如果我的所有进程都在一个组中,我也想弄清楚使用它是否比仅使用 MPI_COMM_WORLD 有任何好处。

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

我在看 this question 上的评论

For example, given a shape e.g. square, the program splits MPI_COMM_WORLD into two groups grpArea and grpPerimeter which compute the area and perimeter of the given shape. These groups should do their private computations and return result to root(rank 0) of MPI_COMM_WORLD.

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

最佳答案

您基本上是在问在没有不同组的情况下使用 MPI_Comm_split 是否有意义。不,不是的。它不提供任何好处或没有任何意义。

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

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

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

关于c - MPI Communicator MPI_Comm_split 无组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43367479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com