It doesn't look like you have completed the request that came back from Irecv.
You need to TEST or WAIT on requests before they are actually completed (e.g.,
in the case of a receive, the data won't be guaranteed to be in the target
buffer until TEST/WAIT indicates that the request has completed).
On Oct 22, 2010, at 3:19 PM, Jack Bryan wrote:
> Hi,
>
> I am using open MPI to transfer data between nodes.
>
> But the received data is not what the data sender sends out .
>
> I have tried C and C++ binding .
>
> data sender:
> double* sendArray = new double[sendResultVec.size()];
>
> for (int ii =0 ; ii < sendResultVec.size() ; ii++)
> {
> sendArray[ii] = sendResultVec[ii];
> }
>
> MPI::COMM_WORLD.Send(sendArray, sendResultVec.size(), MPI_DOUBLE, 0,
> myworkerUpStreamTaskTag);
>
> data receiver:
> double* recvArray = new double[objSize];
>
> mToMasterT1Req = MPI::COMM_WORLD.Irecv(recvArray, objSize, MPI_DOUBLE,
> destRank, myUpStreamTaskTag);
>
>
> The sendResultVec.size() = objSize.
>
>
> What is the possible reason ?
>
>
> Any help is appreciated.
>
> thanks
>
> jack
>
> Oct. 22 1010
> _______________________________________________
> users mailing list
> [email protected]
> http://www.open-mpi.org/mailman/listinfo.cgi/users
--
Jeff Squyres
[email protected]
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/