为什么 MPI_Scatterv 的 recvcount 是一个固定的 int 而 sendcount 是一个数组?

why is MPI_Scatterv 's recvcount a fixed int and sendcount an array?

这是MPI_Scatterv()

的概要
    int MPI_Scatterv(const void *sendbuf, const int *sendcounts, const int *displs,
             MPI_Datatype sendtype, void *recvbuf, int recvcount,
             MPI_Datatype recvtype,
             int root, MPI_Comm comm)

我似乎无法理解这是如何工作的。如果 MPI_Scatterv() 正在发送存储在 *sendcounts 中的不同块大小的元素,那么为什么 recvcount 是一个固定整数而不是块大小数组?

而且由于它是一个固定整数,因此该值应该是多少。它应该等于 sendcount 数组的最大值吗?例如,如果我有

   int sendcount[4] = {1,5,10,8};

recvcount 应该等于 10 吗?

sendcounts 指定要发送的实际块大小。 recvcount 指定本地接收缓冲区的大小,例如recvcount=sendcounts[rank].

详细来说它有点复杂:接收缓冲区的大小至少需要足够大以存储给定等级的块。如果涉及不同的类型,类型范围也很重要。