MPI 零计数数据交换
MPI zero count data exchange
我有一些关于交换零计数数据的问题(例如,MPI_Send 和 MPI_Recv),我在 MPI 文档中找不到答案:
1) 据我了解,计数等于 0 是合法的(根据 MPI 标准)。还是实现已定义?
1a) 在像 MPI_Gatherv
这样的函数中,某些计数可以为零吗?
2) 如果count为零,buffer是否仍然必须是一个有效的指针?或者可以NULL
/uninitialized?
3) 即使计数为 0,网络上仍有一些通信,即一些 header/meta 数据仍在通信。我说的对吗?
1) 计数为零是合法的。
1a) 在 MPI_Gatherv()
(以及 MPI_Scatterv(),
MPI_Alltoallv()` 和朋友)中让一些计数为零是合法的
2) 如果计数为零,标准不强制指针有效
3) 零消息大小是一条消息,作为直接结果,交换了一些元数据。 MPI_Recv(..., count=0, ...)
仅 returns 在收到(并因此发送)零大小的消息之后,如果没有发送数据则不会发生这种情况。
我有一些关于交换零计数数据的问题(例如,MPI_Send 和 MPI_Recv),我在 MPI 文档中找不到答案:
1) 据我了解,计数等于 0 是合法的(根据 MPI 标准)。还是实现已定义?
1a) 在像 MPI_Gatherv
这样的函数中,某些计数可以为零吗?
2) 如果count为零,buffer是否仍然必须是一个有效的指针?或者可以NULL
/uninitialized?
3) 即使计数为 0,网络上仍有一些通信,即一些 header/meta 数据仍在通信。我说的对吗?
1) 计数为零是合法的。
1a) 在 MPI_Gatherv()
(以及 MPI_Scatterv(),
MPI_Alltoallv()` 和朋友)中让一些计数为零是合法的
2) 如果计数为零,标准不强制指针有效
3) 零消息大小是一条消息,作为直接结果,交换了一些元数据。 MPI_Recv(..., count=0, ...)
仅 returns 在收到(并因此发送)零大小的消息之后,如果没有发送数据则不会发生这种情况。