<font size=2 face="sans-serif">My diagram is a sequence of events, but
one can write a code sequence that will enforce the ordering at least in
an environment where the only errors are forced errors.   I agree
that page 538 line 38 covers my question.  MPI_ERR_PENDING is simply
a return status for the wait/test call and in no way changes the request
that triggered it.    Thanks.</font>
<br><font size=2 face="sans-serif">Dave</font>
<br>
<br>
<br>
<br>
<br>
<br><font size=1 color=#5f5f5f face="sans-serif">From:      
 </font><font size=1 face="sans-serif">George Bosilca <bosilca@icl.utk.edu></font>
<br><font size=1 color=#5f5f5f face="sans-serif">To:      
 </font><font size=1 face="sans-serif">"MPI 3.0 Fault
Tolerance and Dynamic Process Control working Group" <mpi3-ft@lists.mpi-forum.org>,
</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Cc:      
 </font><font size=1 face="sans-serif">Geoffrey Paulsen/Dallas/IBM@IBMUS</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Date:      
 </font><font size=1 face="sans-serif">03/17/2013 08:51 AM</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Subject:    
   </font><font size=1 face="sans-serif">Re: [Mpi3-ft]
MPI_Recv + MPI_Comm_failure_ack</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Sent by:    
   </font><font size=1 face="sans-serif">mpi3-ft-bounces@lists.mpi-forum.org</font>
<br>
<hr noshade>
<br>
<br>
<br><font size=3>On a distributed environment it is difficult to enforce
any particular behavior, due to all possible race-condition of the message
arrival. Thus, we left this up to the implementation to define the policy
in this case. This is specificed on page 538 in the "Advice to implementors".</font>
<br>
<br><font size=3>However, if the Rank (0) use MPI_Comm_failure_ack to acknowledge
the past failures (and nobody MPI_Revoke the communicator), the request
pertaining to the MPI_Irecv will be matching the MPI_Send from Rank (2)
(Page 538 line 38). Thus the named MPI_Recv from 2 will never complete
based on the provided example.</font>
<br>
<br><font size=3>  George.</font>
<br>
<br>
<br><font size=3>On Mar 15, 2013, at 22:19 , David Solt <</font><a href=mailto:dsolt@us.ibm.com><font size=3 color=blue><u>dsolt@us.ibm.com</u></font></a><font size=3>>
wrote:</font>
<br>
<br><font size=2 face="sans-serif">Oh good.  </font><font size=3>
<br>
</font><font size=2 face="sans-serif"><br>
I have another interesting issue:</font><font size=3> <br>
</font><font size=2 face="sans-serif"><br>
Rank (0)                  
             Rank (1)    
                   Rank
(2)</font><font size=3> <br>
</font><font size=2 face="sans-serif"><br>
MPI_Irecv(.., ANYSOURCE, MPI_ANY_TAG, comm=C)</font><font size=3> </font><font size=2 face="sans-serif"><br>
                    
                   !!!!FAIL!!!!</font><font size=3>
</font><font size=2 face="sans-serif"><br>
MPI_Wait(req, status) -- > return MPI_ERR_PENDING</font><font size=3>
</font><font size=2 face="sans-serif"><br>
                    
                     
             <br>
                    
                     
                     MPI_Send(...,
0, 0, comm=C)                  
                     </font><font size=3>
</font><font size=2 face="sans-serif"><br>
                <br>
MPI_Recv(..., 2, MPI_ANY_TAG, comm=C);</font><font size=3> <br>
<br>
</font><font size=2 face="sans-serif"><br>
Should the MPI_Recv return or should it block because the pending Irecv
could match the MPI_Send from rank 2 and therefore "queues" on
it?</font><font size=3> <br>
</font><font size=2 face="sans-serif"><br>
I can see arguments for both cases.</font><font size=3> <br>
</font><font size=2 face="sans-serif"><br>
Thanks,<br>
Dave</font><font size=3> <br>
<br>
<br>
<br>
<br>
<br>
</font><font size=1 color=#5f5f5f face="sans-serif"><br>
From:        </font><font size=1 face="sans-serif">Aurélien
Bouteiller <</font><a href=mailto:bouteill@icl.utk.edu><font size=1 color=blue face="sans-serif"><u>bouteill@icl.utk.edu</u></font></a><font size=1 face="sans-serif">></font><font size=3>
</font><font size=1 color=#5f5f5f face="sans-serif"><br>
To:        </font><font size=1 face="sans-serif">"MPI
3.0 Fault Tolerance and Dynamic Process Control working Group" <</font><a href="mailto:mpi3-ft@lists.mpi-forum.org"><font size=1 color=blue face="sans-serif"><u>mpi3-ft@lists.mpi-forum.org</u></font></a><font size=1 face="sans-serif">>,
</font><font size=1 color=#5f5f5f face="sans-serif"><br>
Date:        </font><font size=1 face="sans-serif">03/15/2013
01:07 PM</font><font size=3> </font><font size=1 color=#5f5f5f face="sans-serif"><br>
Subject:        </font><font size=1 face="sans-serif">Re:
[Mpi3-ft] MPI_Recv + MPI_Comm_failure_ack</font><font size=3> </font><font size=1 color=#5f5f5f face="sans-serif"><br>
Sent by:        </font><a href="mailto:mpi3-ft-bounces@lists.mpi-forum.org"><font size=1 color=blue face="sans-serif"><u>mpi3-ft-bounces@lists.mpi-forum.org</u></font></a><font size=3>
<br>
</font>
<hr noshade><font size=3><br>
<br>
</font><tt><font size=2><br>
The intent was to return ERR_PROC_FAILED (nothing is pending) and the Ack
should also stop this return of PROC_FAILED for blocking ANY_SOURCE. <br>
<br>
Good catch Dave! <br>
<br>
Aurelien<br>
<br>
Le 15 mars 2013 à 14:01, Wesley Bland <</font></tt><a href=mailto:wbland@icl.utk.edu><tt><font size=2 color=blue><u>wbland@icl.utk.edu</u></font></tt></a><tt><font size=2>>
a écrit :<br>
<br>
> You're right. A blocking call shouldn't return MPI_ERR_PENDING when
there is no request to be pending. I did think we'd covered this some other
way. It's definitely the intent for both versions of receive to be able
to ignore acknowledged failures.<br>
> <br>
> <br>
> On Fri, Mar 15, 2013 at 1:53 PM, David Solt <</font></tt><a href=mailto:dsolt@us.ibm.com><tt><font size=2 color=blue><u>dsolt@us.ibm.com</u></font></tt></a><tt><font size=2>>
wrote:<br>
> I'm pretty sure the intent was that MPI_Recv should NOT return MPI_ERR_PENDING
as there is no request on which the error can be pending, but I don't know
if much thought was given to allowing MPI_Recv to ignore acknowledge ranks.
<br>
> Dave <br>
> <br>
> <br>
> <br>
> From:        Wesley Bland <</font></tt><a href=mailto:wbland@icl.utk.edu><tt><font size=2 color=blue><u>wbland@icl.utk.edu</u></font></tt></a><tt><font size=2>>
<br>
> To:        "MPI 3.0 Fault Tolerance and Dynamic
Process Control working Group" <</font></tt><a href="mailto:mpi3-ft@lists.mpi-forum.org"><tt><font size=2 color=blue><u>mpi3-ft@lists.mpi-forum.org</u></font></tt></a><tt><font size=2>>,
<br>
> Date:        03/15/2013 12:45 PM <br>
> Subject:        Re: [Mpi3-ft] MPI_Recv + MPI_Comm_failure_ack
<br>
> Sent by:        </font></tt><a href="mailto:mpi3-ft-bounces@lists.mpi-forum.org"><tt><font size=2 color=blue><u>mpi3-ft-bounces@lists.mpi-forum.org</u></font></tt></a><tt><font size=2>
<br>
> <br>
> <br>
> <br>
> I think you are correct in your evaluation, though I also think that
wasn't our intent. I think the intent (unless I'm forgetting a discussion)
was to allow MPI_ERR_PENDING to be returned by MPI_RECV and let MPI_COMM_FAILURE_ACK
cover both cases. Can anyone else confirm that this was the goal. <br>
> <br>
> If that's the case, it's something we'll need to fix in the text.
<br>
> <br>
> Thanks, <br>
> Wesley <br>
> <br>
> <br>
> On Fri, Mar 15, 2013 at 12:32 PM, David Solt <</font></tt><a href=mailto:dsolt@us.ibm.com><tt><font size=2 color=blue><u>dsolt@us.ibm.com</u></font></tt></a><tt><font size=2>>
wrote: <br>
> Based on the proposal: <br>
> <br>
> MPI_Comm_failure_ack(blah, blah) <br>
> <br>
> This local operation gives the users a way to acknowledge all locally
noticed failures on <br>
> comm. After the call, unmatched MPI_ANY_SOURCE receptions that would
have raised an <br>
> error code MPI_ERR_PENDING due to process failure (see Section 17.2.2)
proceed without <br>
> further reporting of errors due to those acknowledged failures. <br>
> <br>
> I think this clearly indicates that MPI_Recv is uninfluenced by calls
to MPI_Comm_failure_ack.  Therefore, there is no way to call MPI_Recv(MPI_ANY_SOURCE)
and ignore failures reported by MPI_Comm_failure_ack.   <br>
> <br>
> I believe the following code will NOT work (i.e. after the first failure,
the MPI_Recv will continuously fail): <br>
> <br>
> <br>
> MPI_Comm_size(intercomm, &size); <br>
> while (failures < size) { <br>
>         err = MPI_Recv(blah, blah, MPI_ANY_SOURCE,
intercomm, &status); <br>
>         if (err == MPI_PROC_FAILED) { <br>
>                 MPI_Comm_failure_ack(intercomm);
<br>
>                 MPI_Comm_failure_get_acked(intercomm,
&group); <br>
>                 MPI_Group_size(group,
&failures); <br>
>         } else { <br>
>                 /* process
received data */ <br>
>         } <br>
> } <br>
> <br>
> and has to be written as: <br>
> <br>
> MPI_Comm_size(intercomm, &size); <br>
> while (failures < size) { <br>
> <br>
>         if (request == MPI_REQUEST_NULL) { <br>
>                 err = MPI_Irecv(blah,
blah, MPI_ANY_SOURCE, intercomm, &request); <br>
>         } <br>
>         err = MPI_Wait(&request, &status);
<br>
> <br>
>         if (err == MPI_ERR_PENDING) { <br>
>                 MPI_Comm_failure_ack(intercomm);
<br>
>                 MPI_Comm_failure_get_acked(intercomm,
&group); <br>
>                 MPI_Group_size(group,
&failures); <br>
>         } else { <br>
>                 /* process
received data */ <br>
>         } <br>
> } <br>
> <br>
> Am I correct in my thinking? <br>
> If so, was there a reason why MPI_Recv could not also "obey"
MPI_Comm_failure_ack calls? <br>
> <br>
> Thanks, <br>
> Dave<br>
> _______________________________________________<br>
> mpi3-ft mailing list<br>
> </font></tt><a href="mailto:mpi3-ft@lists.mpi-forum.org"><tt><font size=2 color=blue><u>mpi3-ft@lists.mpi-forum.org</u></font></tt></a><tt><font size=2><br>
> </font></tt><a href="http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-ft"><tt><font size=2 color=blue><u>http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-ft</u></font></tt></a><tt><font size=2>
<br>
> _______________________________________________<br>
> mpi3-ft mailing list<br>
> </font></tt><a href="mailto:mpi3-ft@lists.mpi-forum.org"><tt><font size=2 color=blue><u>mpi3-ft@lists.mpi-forum.org</u></font></tt></a><tt><font size=2><br>
> </font></tt><a href="http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-ft"><tt><font size=2 color=blue><u>http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-ft</u></font></tt></a><tt><font size=2>
<br>
> <br>
> _______________________________________________<br>
> mpi3-ft mailing list<br>
> </font></tt><a href="mailto:mpi3-ft@lists.mpi-forum.org"><tt><font size=2 color=blue><u>mpi3-ft@lists.mpi-forum.org</u></font></tt></a><tt><font size=2><br>
> </font></tt><a href="http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-ft"><tt><font size=2 color=blue><u>http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-ft</u></font></tt></a><tt><font size=2><br>
> <br>
> _______________________________________________<br>
> mpi3-ft mailing list<br>
> </font></tt><a href="mailto:mpi3-ft@lists.mpi-forum.org"><tt><font size=2 color=blue><u>mpi3-ft@lists.mpi-forum.org</u></font></tt></a><tt><font size=2><br>
> </font></tt><a href="http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-ft"><tt><font size=2 color=blue><u>http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-ft</u></font></tt></a><tt><font size=2><br>
<br>
--<br>
* Dr. Aurélien Bouteiller<br>
* Researcher at Innovative Computing Laboratory<br>
* University of Tennessee<br>
* 1122 Volunteer Boulevard, suite 309b<br>
* Knoxville, TN 37996<br>
* 865 974 9375<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
mpi3-ft mailing list</font></tt><tt><font size=2 color=blue><u><br>
</u></font></tt><a href="mailto:mpi3-ft@lists.mpi-forum.org"><tt><font size=2 color=blue><u>mpi3-ft@lists.mpi-forum.org</u></font></tt></a><font size=3 color=blue><u><br>
</u></font><a href="http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-ft"><tt><font size=2 color=blue><u>http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-ft</u></font></tt></a><tt><font size=2><br>
</font></tt><font size=3><br>
<br>
_______________________________________________<br>
mpi3-ft mailing list</font><font size=3 color=blue><u><br>
</u></font><a href="mailto:mpi3-ft@lists.mpi-forum.org"><font size=3 color=blue><u>mpi3-ft@lists.mpi-forum.org</u></font></a><font size=3><br>
</font><a href="http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-ft"><font size=3>http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-ft</font></a>
<br><tt><font size=2>_______________________________________________<br>
mpi3-ft mailing list<br>
mpi3-ft@lists.mpi-forum.org<br>
</font></tt><a href="http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-ft"><tt><font size=2>http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-ft</font></tt></a>
<br>