我正在编写一个MPI程序,其中所有进程分为两组。每个小组都做不同的工作。例如,组A的进程进行一些计算并相互通信,而组B的进程什么也不做。我应该在那里使用MPI_Comm_split吗?
答案 0 :(得分:1)
我更愿意添加评论,但我是新的堆栈溢出,所以没有足够的声誉......
如前所述,如果你想打电话给集体,那么分传播者是必不可少的。即使没有这个,他们也会被推荐,因为他们会让开发变得更容易。例如,如果您尝试在A组之外发送消息,那么这将通过子通信器失败,但如果每个人都在COMM_WORLD中,则可能导致代码挂起/行为异常。
但是,我会非常小心地沿着MPMD路线走下去,因为它可能无法在系统之间移植,并且使得启动程序变得更加复杂。拥有单个MPI可执行文件是标准和最简单的模型。