MPI零计数数据交换

时间:2018-12-01 14:37:42

标签: parallel-processing mpi

我有一些有关交换零计数数据的问题(例如,通过MPI_Send和MPI_Recv),对于在MPI文档中找不到答案,我遇到了麻烦:

1)据我了解,按照MPI标准,计数等于0是合法的。还是实现定义了?

1a)在MPI_Gatherv之类的函数中,某些计数可以为零吗?

2)如果count为零,缓冲区是否仍必须是有效的指针?还是可以NULL /未初始化?

3)即使count为0,网络上仍存在一些通信,即某些头/元数据仍在通信。我说的对吗?

1 个答案:

答案 0 :(得分:1)

1)计数等于零是合法的。

1a)在MPI_Gatherv()(和MPI_Scatterv(), MPI_Alltoallv()和朋友中)将一些计数设为零是合法的

2)如果计数为零,则标准不强制指针有效

3)消息大小为零是一条消息,直接的结果是交换了一些元数据。 MPI_Recv(..., count=0, ...)仅在接收到零大小的消息(并因此将其发送)之后返回,并且如果没有发送数据则不会发生。