2013-05-12 5 views
7

私は、各プロセスから一緒に配列要素の負荷を追加している:MPI sendbufとrecvbufは同じものですか?

double rho[1024]; 
//Some operation to calculate rho for each process; 
MPI_Allreduce(rho,rho,1024,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD); 

ウィル持つローをsendbufとrecvbuf仕事の両方として?

答えて

12

MPI_IN_PLACEをチェックしましたか? MPI_AllReduce man pageMPI docによれば、同じグループ内で作業している限り、sendbufとrecvbufに同じバッファを指定することができます。

コールは次のようになります。

MPI_Allreduce(MPI_IN_PLACE,rho,1024,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD); 
+0

1 - インプレースの削減に役立ちますし、上記のそれを行うための正しい方法です。 –

+0

これはこれを行うためのエレガントな方法です。この回答には承認が必要です。 –