[Mpi3-ft] radical idea?

Darius Buntinas buntinas at mcs.anl.gov
Tue Jul 19 17:11:40 CDT 2011


The MPI_COMM_NULLIFY() function would effectively set the process to MPI_PROC_STATE_NULL.

In the proposal we had MPI_PROC_STATE_NULL, _FAILED and _OK.  I'm proposing separating NULL from FAILED and OK.  So the MPI_COMM_GET_STATE() function (and friends) would let you query the (locally known) FAILED/OK state of the process, while MPI_COMM_NULLIFY() (and friends) would let you set the process to NULL.  There would be essentially two state variables associated with each process: one indicating whether it's failed or not (let's call it LIVENESS), and the other whether it's has PROC_NULL semantics (call it NULLIFICATION).  The LIVENESS state is controlled by the MPI library while the NULLIFICATION state is controlled by the user.  The table below shows how these states would match up with the current proposal:

Current proposal state   LIVENESS   NULLIFICATION
-----------------------+----------+---------------
MPI_PROC_STATE_OK        OK         NORMAL
MPI_PROC_STATE_FAILED    FAILED     NORMAL
MPI_PROC_STATE_NULL      FAILED     NULL
<UNDEFINED>              OK         NULL

Notice that there's a combination possible that's not covered by the current proposal.  I'm not sure whether that's a useful state (or if we should disallow it).

We'd could add a function to set the NULLIFICATION state from NULL to NORMAL for completeness.

-d


On Jul 19, 2011, at 4:32 PM, Solt, David George wrote:

> This works for "reading" state, but has no way to set a processes state.  (Not sure how radical your trying to go here... is part of the change here that there would no longer be a MPI_PROC_STATE_NULL state?)
> Dave
> 
> -----Original Message-----
> From: mpi3-ft-bounces at lists.mpi-forum.org [mailto:mpi3-ft-bounces at lists.mpi-forum.org] On Behalf Of Darius Buntinas
> Sent: Tuesday, July 19, 2011 3:17 PM
> To: Darius Buntinas
> Cc: MPI 3.0 Fault Tolerance and Dynamic Process Control working Group
> Subject: Re: [Mpi3-ft] radical idea?
> 
> 
> Howard pointed out that I forgot to add a FREE operation:
> 
>    MPI_PROC_STATE_FREE(state_handle)
>        INOUT: MPI_PROC_STATE state_handle
> 
> -d
> 
> On Jul 19, 2011, at 3:07 PM, Darius Buntinas wrote:
> 
>>   MPI_COMM_GET_STATE(comm, state_handle)
>>       IN:  MPI_COMM comm
>>       OUT: MPI_PROC_STATE state_handle
>>   and ditto for GROUP, FILE, WIN as necessary
>> 
>>   MPI_GET_PROC_STATE_SIZE(state_handle, mask, size)
>>       IN:  MPI_PROC_STATE state_handle
>>       IN:  int mask
>>       OUT: int size
>> 
>>   MPI_GET_PROC_STATE_LIST(state_handle, mask, list)
>>       IN:  MPI_PROC_STATE state_handle
>>       IN:  int mask
>>       OUT: int list[]
>> 
>>   MPI_GET_PROC_STATE_NEW(state_handle1, state_handle2, state_handle_new)
>>       IN:  MPI_PROC_STATE state_handle1
>>       IN:  MPI_PROC_STATE state_handle2
>>       OUT: MPI_PROC_STATE state_handle_new
>>   This gives newly failed processes in state_handle2 since state_handle1.
> 
> _______________________________________________
> mpi3-ft mailing list
> mpi3-ft at lists.mpi-forum.org
> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-ft
> 
> _______________________________________________
> mpi3-ft mailing list
> mpi3-ft at lists.mpi-forum.org
> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-ft





More information about the mpiwg-ft mailing list