<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">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".<div><br></div><div>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.<br><div><br></div><div>  George.<br><div><div><div><br></div><div><br></div><div>On Mar 15, 2013, at 22:19 , David Solt <<a href="mailto:dsolt@us.ibm.com">dsolt@us.ibm.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><font size="2" face="sans-serif">Oh good.  </font>
<br>
<br><font size="2" face="sans-serif">I have another interesting issue:</font>
<br>
<br><font size="2" face="sans-serif">Rank (0)        
               
       Rank (1)        
               Rank
(2)</font>
<br>
<br><font size="2" face="sans-serif">MPI_Irecv(.., ANYSOURCE, MPI_ANY_TAG,
comm=C)</font>
<br><font size="2" face="sans-serif">         
               
              !!!!FAIL!!!!</font>
<br><font size="2" face="sans-serif">MPI_Wait(req, status) -- > return
MPI_ERR_PENDING</font>
<br><font size="2" face="sans-serif">         
               
               
              </font>
<br><font size="2" face="sans-serif">         
               
               
               
      MPI_Send(..., 0, 0, comm=C)    
               
               
   </font>
<br><font size="2" face="sans-serif">         
      </font>
<br><font size="2" face="sans-serif">MPI_Recv(..., 2, MPI_ANY_TAG, comm=C);</font>
<br>
<br>
<br><font size="2" face="sans-serif">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>
<br>
<br><font size="2" face="sans-serif">I can see arguments for both cases.</font>
<br>
<br><font size="2" face="sans-serif">Thanks,<br>
Dave</font>
<br>
<br>
<br>
<br>
<br>
<br>
<br><font size="1" color="#5f5f5f" face="sans-serif">From:      
 </font><font size="1" face="sans-serif">Aurélien Bouteiller
<<a href="mailto:bouteill@icl.utk.edu">bouteill@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">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 01:07 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">mpi3-ft-bounces@lists.mpi-forum.org</a></font>
<br>
<hr noshade="">
<br>
<br>
<br><tt><font size="2">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 <<a href="mailto:wbland@icl.utk.edu">wbland@icl.utk.edu</a>> 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 <<a href="mailto:dsolt@us.ibm.com">dsolt@us.ibm.com</a>>
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 <<a href="mailto:wbland@icl.utk.edu">wbland@icl.utk.edu</a>>
<br>
> To:        "MPI 3.0 Fault Tolerance and Dynamic
Process Control working Group" <<a href="mailto:mpi3-ft@lists.mpi-forum.org">mpi3-ft@lists.mpi-forum.org</a>>,
<br>
> Date:        03/15/2013 12:45 PM <br>
> Subject:        Re: [Mpi3-ft] MPI_Recv + MPI_Comm_failure_ack
<br>
> Sent by:        <a href="mailto:mpi3-ft-bounces@lists.mpi-forum.org">mpi3-ft-bounces@lists.mpi-forum.org</a>
<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 <<a href="mailto:dsolt@us.ibm.com">dsolt@us.ibm.com</a>>
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>
> <a href="mailto:mpi3-ft@lists.mpi-forum.org">mpi3-ft@lists.mpi-forum.org</a><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><tt><font size="2">
<br>
> _______________________________________________<br>
> mpi3-ft mailing list<br>
> <a href="mailto:mpi3-ft@lists.mpi-forum.org">mpi3-ft@lists.mpi-forum.org</a><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><tt><font size="2">
<br>
> <br>
> _______________________________________________<br>
> mpi3-ft mailing list<br>
> <a href="mailto:mpi3-ft@lists.mpi-forum.org">mpi3-ft@lists.mpi-forum.org</a><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><tt><font size="2"><br>
> <br>
> _______________________________________________<br>
> mpi3-ft mailing list<br>
> <a href="mailto:mpi3-ft@lists.mpi-forum.org">mpi3-ft@lists.mpi-forum.org</a><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><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<br>
<a href="mailto:mpi3-ft@lists.mpi-forum.org">mpi3-ft@lists.mpi-forum.org</a><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><tt><font size="2"><br>
<br>
</font></tt>
<br>_______________________________________________<br>mpi3-ft mailing list<br><a href="mailto:mpi3-ft@lists.mpi-forum.org">mpi3-ft@lists.mpi-forum.org</a><br>http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-ft</blockquote></div><br></div></div></div></body></html>