Hello Jeff and Hristo,

Now I am completely confused:

So, let's say, the complete reception requires 8192 bytes. And, I have:

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 */
                    );


That means, the the MPI_Test will tell me that the reception is complete when I have received the first 80 bytes. Correct?

Next, let[s say that I have a receive buffer with a capacity of 160 bytes, then, will overflow error occur here? Even if I have decided to receive a large payload in chunks of 80 bytes?

I am sorry, the manual and the API reference was too vague for me.

Thanks a lot

Devendra

From: "Iliev, Hristo" <iliev@rz.rwth-aachen.de>
To: Open MPI Users <users@open-mpi.org>
Cc: devendra rai <rai.devendra@yahoo.co.uk>
Sent: Tuesday, 21 August 2012, 9:48
Subject: Re: [OMPI users] MPI_Irecv: Confusion with <<int count>> inputy parameter

Jeff,

>> 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?
>
> Yes.

Answering "Yes" this question might further the confusion there. The "count" argument specifies the *capacity* of the receive buffer and the receive operation (blocking or not) will complete successfully for any matching message with size up to "count", even for an empty message with 0 elements, and will produce an overflow error if the received message was longer and data truncation has to occur.

On 20.08.2012, at 16:32, Jeff Squyres <jsquyres@cisco.com> wrote:

> On Aug 20, 2012, at 5:51 AM, devendra rai wrote:
>
>> Is it the number of elements that have been received *thus far* in the buffer?
>
> No.
>
>> 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?
>
> Yes.
>
>> Here's the reason why I have a problem (and I think I may be completely stupid here, I'd appreciate your patience):
> [snip]
>> Does anyone see what could be going wrong?
>
> Double check that the (sender_rank, tag, communicator) tuple that you issued in the MPI_Irecv matches the (rank, tag, communicator) tuple from the sender (tag and communicator are arguments on the sending side, and rank is the rank of the sender in that communicator).
>
> When receives block like this without completing like this, it usually means a mismatch between the tuples.
>
> --
> Jeff Squyres
> jsquyres@cisco.com
> For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/
>
>
> _______________________________________________
> users mailing list
> users@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users

--
Hristo Iliev, Ph.D. -- High Performance Computing,
RWTH Aachen University, Center for Computing and Communication
Seffenter Weg 23,  D 52074  Aachen (Germany)
Tel: +49 241 80 24367 -- Fax/UMS: +49 241 80 624367