<html><body>
<p>Hi Rich <br>
<br>
The difference between a hint and an assertion is that an hint cannot change semantic in any way.  An assertion will allow libmpi to relax a specific semantic guarantee.   Lets take a simple case:<br>
<br>
The application wants to say it will not try to cancel any MPI_ISEND so it passes MPI_NO_SEND_CANCEL to MPI_INIT<br>
<br>
If  MPI_INIT were passed MPI_NO_SEND_CANCEL as a <b>hint </b>and then the application went ahead and called MPI_CANCEL anyway, it would be fine for the MPI implementation to use a much slower MPI_CANCEL algorithm than if the hint had not been given.  It would <b>not be OK</b> for the implementation to hang or raise an error or cancel the wrong message.<br>
<br>
If  MPI_Init were passed MPI_NO_SEND_CANCEL as an<b> assertion</b><b> </b>and then the application went ahead and called MPI_CANCEL anyway, it would be OK for the MPI implementation to raise an error for the MPI_CANCEL call.<br>
<br>
Every MPI Implementation must still be prepared to do MPI_CANCEL of an ISEND correctly if MPI_CANCEL is called by an application that <b>did not</b> provide the assertion. Adding assertion support in MPI 2.2 cannot break a correct MPI 2.1 application.<br>
<br>
The MPI_NO_SEND_CANCEL is only useful for cases where libmpi must devote extra memory, longer code paths or extra space in message headers across an entire run just to have the information it needs to do MPI_CANCEL correctly is somebody happens to call it. If a particular MPI implementation does not incur extra costs to be ready for a potential MPI_CANCEL then the implementation will ignore this assertion.<br>
<br>
             Dick<br>
<br>
<br>
<br>
Dick Treumann  -  MPI Team/TCEM            <br>
IBM Systems & Technology Group<br>
Dept 0lva / MS P963 -- 2455 South Road -- Poughkeepsie, NY 12601<br>
Tele (845) 433-7846         Fax (845) 433-8363<br>
<br>
<br>
<tt>mpi-22-bounces@lists.mpi-forum.org wrote on 05/15/2008 01:33:02 PM:<br>
<br>
> Assertions should not change semantics – these are defined by the <br>
> standard.   Assertions<br>
>  may provide “help” to the implementation, what ever that means.  I <br>
> may be missing some thing,<br>
>  but I really don’t see a difference (aside  from name) between <br>
> assertions an hints – both are<br>
>  ways of the user conveying information to the library.<br>
> <br>
> Rich<br>
> <br>
</tt></body></html>