构建一个MPI通信器时,以下哪三种方法最有效?

时间:2017-10-24 09:56:09

标签: parallel-processing mpi

构建MPI通信器时,我们有三种方式:

int MPI_Comm_create(MPI_Comm comm, MPI_Group group, MPI_Comm *newcomm);
int MPI_Comm_create_group(MPI_Comm comm, MPI_Group group, int tag, MPI_Comm *newcomm);
int MPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm *newcomm);

那么哪一个是最有效的方式?

1 个答案:

答案 0 :(得分:0)

正如Zulan先前所说,这些是具有不同语义的不同子程序。

从效果的角度来看,我不希望MPI_Comm_create()MPI_Comm_split()

之间存在太大差异

MPI_Comm_create_group()与手册页有点不同:

  

MPI_Comm_create_group类似于MPI_Comm_create;然而,   MPI_Comm_create必须由 comm 组中的所有进程调用,   而MPI_Comm_create_group必须由中的所有进程调用   group ,这是comm的一个子组。

从性能的角度来看,这意味着如果comm中只有一小部分MPI任务最终会出现在合法的沟通者中,那么就有优化的空间。

请注意,这只是基于定义的观察,我没有在任何MPI库上运行任何基准测试,因此您的环境可能没有任何性能优势。