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
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users


-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/


Reply via email to