0

这是概要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 ?

4

1 回答 1

2

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

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

于 2016-12-23T15:12:51.147 回答