Hello Community,I have a problem understanding the API for MPI_Irecv:
- [in] initial address of receive buffer (choice)
- [in] number of elements in receive buffer (integer)
- [in] datatype of each receive buffer element (handle)
- [in] rank of source (integer)
- [in] message tag (integer)
- [in] communicator (handle)
- [out] communication request (handle)
What exactly does "count" mean here?
Is it the number of elements that have been received *thus far* in the buffer?
Or is it the number of elements that are expected to be received, and hence MPI_Test will tell me that the receive is not complete untill "count" number of elements have not been received?
Here's the reason why I have a problem (and I think I may be completely stupid here, I'd appreciate your patience):
I have node 1 transmit data to node 2, in a pack of 80 bytes:Mon Aug 20 11:09:04 2012[1,1]<stdout>: Finished transmitting 80 bytes to 2 node with Tag 1000
On the receiving end:MPI_Irecv( (void*)this->receivebuffer,/* the receive buffer */ this->receive_packetsize, /* 80 */ MPI_BYTE, /* The data type expected */ this->transmittingnode, /* The node from which to receive */ this->uniquetag, /* Tag */ MPI_COMM_WORLD, /* Communicator */ &Irecv_request /* request handle */ );
I see that node 1 tells me that the transmit was successful using the MPI_Test:MPI_Test(&Isend_request, &SendComplete, &ISend_status);
which returns me "true" on Node 1 (sender).
However, I am never able to receive the payload on Node 2:Mon Aug 20
2012[1,2]<stdout>:Attemting to receive payload from node 1 with tag 1000, receivepacketsize: 80
I am using MPI_Issend to send payload between node 1 and node 2.
Does anyone see what could be going wrong?
Thanks a lot