Parallel processing MPI零计数数据交换

Parallel processing MPI零计数数据交换,parallel-processing,mpi,Parallel Processing,Mpi,关于交换零计数数据(例如,通过MPI_Send和MPI_Recv),我有一些问题,在MPI文档中很难找到答案: 1) 据我所知,计数等于0是合法的(根据MPI标准)。还是定义了实现 1a)在诸如MPI\u Gatherv之类的函数中,某些计数是否可以为零 2)如果计数为零,缓冲区是否仍然必须是有效指针?或者可以是NULL/未初始化? 3) 即使计数为0,也会通过网络进行一些通信,即某些标头/元数据仍在通信。我说得对吗?1)计数等于零是合法的 1a)在MPI\u Gatherv()(和MPI\u

关于交换零计数数据(例如,通过MPI_Send和MPI_Recv),我有一些问题,在MPI文档中很难找到答案:

1) 据我所知,计数等于0是合法的(根据MPI标准)。还是定义了实现

1a)在诸如
MPI\u Gatherv
之类的函数中,某些计数是否可以为零

2)如果计数为零,缓冲区是否仍然必须是有效指针?或者可以是
NULL
/未初始化?

3) 即使计数为0,也会通过网络进行一些通信,即某些标头/元数据仍在通信。我说得对吗?

1)计数等于零是合法的

1a)在
MPI\u Gatherv()
(和
MPI\u Scatterv(),
MPI\u Alltoallv()`和friends)中,将某些计数设为零是合法的

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

3) 消息大小为零就是一条消息,因此直接交换了一些元数据
MPI_Recv(…,count=0,…)
仅在收到(并因此发送)大小为零的消息后返回,如果未发送数据,则不会返回