[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