this is the synopsis of 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)
I cannot seem to understand how this works. IF MPI_Scatterv() is sending different chunk sized elements that are stored in *sendcounts then why is recvcount a fixed integer and not an array of chunk sizes as well?
and also since its a fixed integer, what should the value be. should it be equal to the maximum value of the sendcount array? For example if I have
int sendcount[4] = {1,5,10,8};
should recvcount be equal to 10 ?
sendcountsspecify the actual chunk sizes to be sent.recvcountspecifies the size of the local receive buffer, e.g.recvcount=sendcounts[rank].In detail it is a bit more complex: The size of the receive buffer needs to be at least large enough to store the chunk for a given rank. If different types are involved the type extents also matter.