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)

これがどのように機能するのか理解できないようです。IFMPI_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 に答える