<div dir="ltr">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.</div>

<div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Mar 15, 2013 at 1:53 PM, David Solt <span dir="ltr"><<a href="mailto:dsolt@us.ibm.com" target="_blank">dsolt@us.ibm.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<font face="sans-serif">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.</font>
<br><font face="sans-serif">Dave</font>
<br>
<br>
<br>
<br><font size="1" color="#5f5f5f" face="sans-serif">From:      
 </font><font size="1" face="sans-serif">Wesley Bland <<a href="mailto:wbland@icl.utk.edu" target="_blank">wbland@icl.utk.edu</a>></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" <<a href="mailto:mpi3-ft@lists.mpi-forum.org" target="_blank">mpi3-ft@lists.mpi-forum.org</a>>,
</font>
<br><font size="1" color="#5f5f5f" face="sans-serif">Date:      
 </font><font size="1" face="sans-serif">03/15/2013 12:45 PM</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"><a href="mailto:mpi3-ft-bounces@lists.mpi-forum.org" target="_blank">mpi3-ft-bounces@lists.mpi-forum.org</a></font>
<br>
<hr noshade><div class="HOEnZb"><div class="h5">
<br>
<br>
<br><font size="3">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.</font>
<br>
<br><font size="3">If that's the case, it's something we'll need to fix in
the text.</font>
<br>
<br><font size="3">Thanks,</font>
<br><font size="3">Wesley</font>
<br><font size="3"><br>
</font>
<br><font size="3">On Fri, Mar 15, 2013 at 12:32 PM, David Solt <</font><a href="mailto:dsolt@us.ibm.com" target="_blank"><font size="3" color="blue"><u>dsolt@us.ibm.com</u></font></a><font size="3">>
wrote:</font>
<br><font size="3" face="sans-serif">Based on the proposal:</font><font size="3">
<br>
</font><font size="3" face="sans-serif"><br>
MPI_Comm_failure_ack(blah, blah)</font><font size="3"> <br>
</font><font size="3" face="CMR10"><br>
This local operation gives the users a way to </font><font size="3" face="CMTI10">acknowledge
</font><font size="3" face="CMR10">all locally noticed failures on</font><font size="3">
</font><font size="3" face="CMSS10"><br>
comm</font><font size="3" face="CMR10">. After the call, unmatched </font><font size="3" face="CMSS10">MPI</font><font size="3" face="CMTT10">_</font><font size="3" face="CMSS10">ANY</font><font size="3" face="CMTT10">_</font><font size="3" face="CMSS10">SOURCE
</font><font size="3" face="CMR10">receptions that would have raised an</font><font size="3">
</font><font size="3" face="CMR10"><br>
error code </font><font size="3" face="CMSS10">MPI</font><font size="3" face="CMTT10">_</font><font size="3" face="CMSS10">ERR</font><font size="3" face="CMTT10">_</font><font size="3" face="CMSS10">PENDING
</font><font size="3" face="CMR10">due to process failure (see Section </font><font size="3" color="blue" face="CMR10">17.2.2</font><font size="3" face="CMR10">)
proceed without</font><font size="3"> </font><font size="3" face="CMR10"><br>
further reporting of errors due to those acknowledged failures.</font><font size="3">
<br>
</font><font size="3" face="CMR10"><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.   </font><font size="3"><br>
</font><font size="3" face="CMR10"><br>
I believe the following code will NOT work (i.e. after the first failure,
the MPI_Recv will continuously fail):</font><font size="3"> <br>
<br>
</font><font size="3" face="CMR10"><br>
MPI_Comm_size(intercomm, &size);</font><font size="3"> </font><font size="3" face="CMR10"><br>
while (failures < size) {</font><font size="3"> </font><font size="3" face="CMR10"><br>
        err = MPI_Recv(blah, blah, MPI_ANY_SOURCE,
intercomm, &status);</font><font size="3"> </font><font size="3" face="CMR10"><br>
        if (err == MPI_PROC_FAILED) {</font><font size="3">
</font><font size="3" face="CMR10"><br>
                MPI_Comm_failure_ack(intercomm);</font><font size="3">
</font><font size="3" face="CMR10"><br>
                MPI_Comm_failure_get_acked(intercomm,
&group);</font><font size="3"> </font><font size="3" face="CMR10"><br>
                MPI_Group_size(group,
&failures);</font><font size="3"> </font><font size="3" face="CMR10"><br>
        } else {</font><font size="3"> </font><font size="3" face="CMR10"><br>
                /* process received
data */</font><font size="3"> </font><font size="3" face="CMR10"><br>
        }</font><font size="3"> </font><font size="3" face="CMR10"><br>
}</font><font size="3"> <br>
</font><font size="3" face="CMR10"><br>
and has to be written as:</font><font size="3"> <br>
</font><font size="3" face="CMR10"><br>
MPI_Comm_size(intercomm, &size);</font><font size="3"> </font><font size="3" face="CMR10"><br>
while (failures < size) {</font><font size="3"> <br>
</font><font size="3" face="CMR10"><br>
        if (request == MPI_REQUEST_NULL) {</font><font size="3">
</font><font size="3" face="CMR10"><br>
                err = MPI_Irecv(blah,
blah, MPI_ANY_SOURCE, intercomm, &request);</font><font size="3"> </font><font size="3" face="CMR10"><br>
        }</font><font size="3"> </font><font size="3" face="CMR10"><br>
        err = MPI_Wait(&request, &status);</font><font size="3">
<br>
</font><font size="3" face="CMR10"><br>
        if (err == MPI_ERR_PENDING) {</font><font size="3">
</font><font size="3" face="CMR10"><br>
                MPI_Comm_failure_ack(intercomm);</font><font size="3">
</font><font size="3" face="CMR10"><br>
                MPI_Comm_failure_get_acked(intercomm,
&group);</font><font size="3"> </font><font size="3" face="CMR10"><br>
                MPI_Group_size(group,
&failures);</font><font size="3"> </font><font size="3" face="CMR10"><br>
        } else {</font><font size="3"> </font><font size="3" face="CMR10"><br>
                /* process received
data */</font><font size="3"> </font><font size="3" face="CMR10"><br>
        }</font><font size="3"> </font><font size="3" face="CMR10"><br>
}</font><font size="3"> <br>
</font><font size="3" face="CMR10"><br>
Am I correct in my thinking?</font><font size="3"> </font><font size="3" face="CMR10"><br>
If so, was there a reason why MPI_Recv could not also "obey"
MPI_Comm_failure_ack calls? </font><font size="3"><br>
</font><font size="3" face="CMR10"><br>
Thanks,</font><font size="3"> </font><font size="3" face="CMR10"><br>
Dave</font><font size="3"><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" target="_blank"><font size="3" color="blue"><u>mpi3-ft@lists.mpi-forum.org</u></font></a><font size="3" color="blue"><u><br>
</u></font><a href="http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-ft" target="_blank"><font size="3" color="blue"><u>http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-ft</u></font></a>
<br><tt><font>_______________________________________________<br>
mpi3-ft mailing list<br>
<a href="mailto:mpi3-ft@lists.mpi-forum.org" target="_blank">mpi3-ft@lists.mpi-forum.org</a><br>
</font></tt><a href="http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-ft" target="_blank"><tt><font>http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-ft</font></tt></a>
<br></div></div><br>_______________________________________________<br>
mpi3-ft mailing list<br>
<a href="mailto:mpi3-ft@lists.mpi-forum.org">mpi3-ft@lists.mpi-forum.org</a><br>
<a href="http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-ft" target="_blank">http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-ft</a><br></blockquote></div><br></div>