MPI_Igatherv VS MPI_Isend& MPI_Irecv

时间:2015-03-24 12:49:30

标签: mpi openmpi mpich

我必须在算法的每一步从其他处理器收集我的root上的大量数据,并且某些处理器的数据大小可能为零。

所以,我想知道当缓冲区不为空时,哪种方法更有效,更快,MPI_Igatherv或使用(MPI_Isend& MPI_Irecv)。

MPI内部是否在MPI_Igatherv中处理零缓冲区?

使用单面通信而不是MPI_Igatherv或MPI_Isend是否更好,更有可能?

1 个答案:

答案 0 :(得分:0)

很多这样你只需要实施它,看看会发生什么。实现可以为不同的情况提供大量优化。网络硬件/拓扑可能会影响结果。

通常,将零字节传递给集合操作没有任何问题。贡献零字节的过程可能仍然处于良好位置(从拓扑上讲),并且可以参与集体操作。

片面操作可能更好,也可能不会。取决于许多因素。