Hello Community,

I have a problem understanding the API for MPI_Irecv:

int MPI_Irecv(
  void *buf,
  int count,
  MPI_Datatype datatype,
  int source,
  int tag,
  MPI_Comm comm,
  MPI_Request *request
);

Parameters

buf
[in] initial address of receive buffer (choice)
count
[in] number of elements in receive buffer (integer)
datatype
[in] datatype of each receive buffer element (handle)
source
[in] rank of source (integer)
tag
[in] message tag (integer)
comm
[in] communicator (handle)
request
[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 11:09:04 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

Devendra