[mpich-discuss] Re: MPI_Brecv vs multiple MPI_Irecv
Robert Kubrick
robertkubrick at gmail.com
Wed Aug 27 11:03:02 CDT 2008
A buffered receive would allow the implementation to receive and
store messages when the application is busy doing something else,
like reading messages on a different comm. I now understand why a
Brecv is not in the standard and it makes perfect sense, but the
result is that on the sending you can control the size of a sending
"queue", on the receiving side you can not.
On Aug 27, 2008, at 11:23 AM, Darius Buntinas wrote:
>
> Well, what would it mean to do a buffered receive?
>
> This?
> buf = malloc(BUF_SZ);
> MPI_Irecv(buf,...);
> MPI_Wait(...);
> memcpy(recv_ptr, buf, BUF_SZ);
>
> What would be the benefit?
>
> -d
>
> On 08/27/2008 10:13 AM, Robert Kubrick wrote:
>> I just found out that the standard actually doesn't have an
>> MPI_Brecv call.
>> Any reason why the recv can not buffer messages in a user-provided
>> memory space, as per MPI_Battach/MPI_Bsend?
>> On Aug 26, 2008, at 4:17 PM, Robert Kubrick wrote:
>>> From a performance point of view, which one is better:
>>>
>>> MPI_Battach(10*sizeof(MSG))
>>> MPI_Brecv()
>>>
>>> or
>>>
>>> MPI_recv_init()
>>> MPI_recv_init()
>>> MPI_recv_init()
>>> ... /* 10 recv handlers */
>>> MPI_Start(all recv)
>>> MPI_Waitany()
>>>
>>>
>>> I understand MPI_Brecv will require an extra message copy, from
>>> the attached buffer to the MPI_Brecv() buffer. I'd like to know
>>> if there other differences between the two methods.
>>>
>>> Thanks,
>>> Rob
>
More information about the mpich-discuss
mailing list