MPI Forum Fault Tolerance Working Group Roadmap
September, 2021
Fault Tolerance Working Group
Error Handling and Resilience�Available in MPI 4.0
What Can You Do With MPI 4.0?
What’s Next?
Composability
Levels of Composability
Interrupting Error Handlers
Work in progress, not in a current proposal
Discover Failed Processes
New version of these functions has been drafted already
Uniform State of MPI Collectives
More advanced work in progress, text drafted soon
Gray: dead
Red: returned MPI_PROC_FAILED
Orange: returned MPI_SUCCESS
Left: Collective operation returns non-uniform errors Right: Collective operation self validates and returns an uniform error
Validate error status before leaving the collective operation (implicit AGREE)
Resilient Broadcast Which Triggers Error Handling
Error Handler
Trigger
Error Handler
Trigger
Error Handler
Accomplished with revoke and works with fine and coarse-grained recovery (Level 3)
MPI_COMM_CREATE_FROM_GROUP and�Agreement Protocol
Broken Communicator
comm = MPI_COMM_CREATE_FROM_GROUP(group)
Agree that comm is good
Good Communicator
Working on text for new version of shrink to be more composable
Reinitialize MPI
MPI_Init()
…initialize…
MPI_Reinit()
…do things…
MPI_Allreduce()
/* ERROR */
Jump and “Clean up” MPI
Coarse-grained Recovery (Reinit)
User submits job
Program begins
Main loop begins
End of iteration 1
Resources allocated
End of iteration 2
Program data initialized
Program checkpoint loaded
Traditional
CPR
Reinit
Failure Recovery
Program checkpoint loaded
Process failure
MPI state is created, e.g., communicators
MPI is setup
Checkpoint stored
Recovery time
Recovery time
Time
Checkpoint stored
Checkpoint MPI State & Return to Previous State X
MPI_Init()
…initialize…
for () {
MPI_Save_state()
…do things…
MPI_Allreduce()
/* ERROR */
}
Jump and “Clean up” MPI
RMA Story
I/O Story
Interoperability Status of Various Proposals
Parts of each proposal can be done together or independently.
Many pieces can be used to implement either recovery model
Any restrictions will have to be function-specific.
Timelines for Proposals
Feedback
Generally positive about what was presented
We need tighter coordination with session WG, many common ideas
Discussion about fault models
We exposed how the concepts presented can be used to handle user-reported errors (e.g., soft errors, convergence errors, etc)
We discussed why proc-failed is a better fault model for end-users than exposing transient and/or link fault model (it pushes the hard to deal with part to users that have no clue); our approach in that case is that the impl. is responsible for doing something sane: promote link/transient errors to fail-stop; or do something expensive and complicated under the hood if the hardware features makes the case worth dealing with.