我在课堂上学习使用C语言的MPI。我现在正试图在你使用MPI_Comm_split
时解决问题,这有什么好处。如果我不使用群组或者我的所有流程都在一个群组中,我也会尝试弄清楚使用此功能而不仅仅使用MPI_COMM_WORLD
是否有任何好处。
据我了解,MPI_Comm_split
为每种颜色提供了独特的沟通方式。这与使用MPI_COMM_WORLD
不同(不确定这最后一部分是否正确)。 MPI组是一组流程,沟通者可以帮助您在这些组内部和之间进行通信。
我正在查看有关this question
的评论例如,给定一个形状,例如方块,程序分裂 MPI_COMM_WORLD分为两组grpArea和grpPerimeter进行计算 给定形状的面积和周长。这些团体应该这样做 他们的私人计算并将结果返回到根(等级0) MPI_COMM_WORLD。
让我们说,我们不是计算面积和周长,而是计算面积,因此我们不使用群组。使用MPI_Comm_split
拆分通信器是否有任何意义,以便每个处理器都有自己的通信器?这样做有什么好处或缺点吗?
答案 0 :(得分:2)
您基本上问的是,如果没有不同的组,使用MPI_Comm_split
是否有意义。不,不是的。它没有提供任何好处或没有任何意义。
使用同一组的单独传播者有两个原因:
MPI_Comm_dup
。MPI_Cart_create
。创建过多的传播者可能会有一些开销。此外,您可能会失去MPI_COMM_WORLD
的特定优化。这不应该阻止你在有意义的时候使用传播者。