2016-12-23 5 views
0

これは、私はこれがどのように動作するかを理解するように見えることはできませんMPI_Scatterv()なぜMPI_Scattervは固定intを受け取り、配列をsendcountしますか?

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) 

の概要です。 IF MPI_Scatterv()*sendcountsに格納されている異なるチャンクサイズの要素を送信している場合、なぜrecvcountは固定された整数で、チャンクサイズの配列でもないのですか?

また、固定された整数なので、値はどうなるべきですか。それはsendcount配列の最大値と等しくなければなりませんか?例えば、私が持っている場合

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

recvcount 10に等しくすべきですか?

+0

このQAで読むことができます: http://stackoverflow.com/questions/23165337/mpis-scatterv-operation – fedepad

答えて

2

sendcounts送信する実際のチャンクサイズを指定します。 recvcountは、ローカル受信バッファのサイズを指定します。 recvcount=sendcounts[rank]

詳しくは少し複雑です。受信バッファのサイズは、少なくとも与えられたランクのチャンクを格納するのに十分な大きさである必要があります。タイプが異なる場合は、タイプエクステントも重要です。

関連する問題