[mpich-discuss] Semantics of MPI_Send and MPI_Isend
Halim Amer
aamer at anl.gov
Tue Oct 20 12:37:13 CDT 2015
Matthieu,
My answer might be misleading because it was focused mostly on what the
standard says.
From an implementation perspective, large messages often go through a
rendez-vous protocol and matching occurs before the actual data-movement
takes place. Since matching large messages is decoupled from the
corresponding data-movement, their actual transfer can be overlapped
with the small Send operations in your example.
--Halim
www.mcs.anl.gov/~aamer
On 10/20/15 11:02 AM, Dorier, Matthieu wrote:
> Ok thanks!
> Matthieu
> ________________________________________
> From: Halim Amer [aamer at anl.gov]
> Sent: Tuesday, October 20, 2015 10:57 AM
> To: discuss at mpich.org
> Subject: Re: [mpich-discuss] Semantics of MPI_Send and MPI_Isend
>
> I think understanding section 3.7.4 in MPI 3.1 is required as well. The
> non-overtaking requirement of pt2pt communication is extended to
> nonblocking communication with the notion of order. Basically, in your
> code the Isend operation will not be matched if the previous Send
> operation is still pending (if same target, same tag, and same
> communicator).
>
> So yes, you will lose the benefit of asynchronous communication if you
> introduce synchronous communication in the middle. Although a system
> might buffer standard sends, it is implementation dependent and the user
> should not rely on it.
>
> --Halim
> www.mcs.anl.gov/~aamer
>
> On 10/20/15 10:17 AM, Jeff Hammond wrote:
>> I recommend that you read "Semantics of Point-to-Point Communication" in
>> the MPI standard (section 3.5 in MPI 3.1). It has all of the
>> information that you seek.
>>
>> Best,
>>
>> Jeff
>>
>>
>> On Tue, Oct 20, 2015 at 7:58 AM, Dorier, Matthieu <mdorier at anl.gov
>> <mailto:mdorier at anl.gov>> wrote:
>> >
>> > Hi,
>> >
>> > In my program I have a loop of this form:
>> >
>> > loop {
>> > MPI_Send(small message)
>> > MPI_Isend(big message)
>> > }
>> > do_some_computation()
>> > MPI_Waitall
>> >
>> > The sends and isends all have the same target rank.
>> >
>> > Is there a risk that an MPI_Send forces a previously posted MPI_Isend
>> to complete before it can complete itself (in which case I would loose
>> the benefit of using non-blocking sends)?
>> >
>> > Thanks,
>> >
>> > Matthieu
>> >
>> > _______________________________________________
>> > discuss mailing list discuss at mpich.org <mailto:discuss at mpich.org>
>> > To manage subscription options or unsubscribe:
>> > https://lists.mpich.org/mailman/listinfo/discuss
>>
>>
>>
>>
>> --
>> Jeff Hammond
>> jeff.science at gmail.com <mailto:jeff.science at gmail.com>
>> http://jeffhammond.github.io/
>>
>>
>> _______________________________________________
>> discuss mailing list discuss at mpich.org
>> To manage subscription options or unsubscribe:
>> https://lists.mpich.org/mailman/listinfo/discuss
>>
> _______________________________________________
> discuss mailing list discuss at mpich.org
> To manage subscription options or unsubscribe:
> https://lists.mpich.org/mailman/listinfo/discuss
> _______________________________________________
> discuss mailing list discuss at mpich.org
> To manage subscription options or unsubscribe:
> https://lists.mpich.org/mailman/listinfo/discuss
>
_______________________________________________
discuss mailing list discuss at mpich.org
To manage subscription options or unsubscribe:
https://lists.mpich.org/mailman/listinfo/discuss
More information about the discuss
mailing list