-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
e91da82
commit deebc0a
Showing
4 changed files
with
35 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
\page term TerminationDetector | ||
\brief Detect termination of work | ||
|
||
The termination component `vt::term::TerminationDetector`, accessed via | ||
`vt::theTerm()` detects the transitive completion of work following the causal | ||
chain of messages/events across multiple nodes. It provides global termination | ||
to determine when all work is complete and the schedulers can stop | ||
running. Additionally, it enables the creation of epochs (which stamp message | ||
envelopes) to mark messages as part of a work grouping to detect termination of | ||
all causal events related to a subset of messages in the system. | ||
|
||
The termination detector comes with two different detection algorithms: (1) | ||
4-counter wave-based termination for large collective epochs across the whole | ||
system; and, Dijkstra-Scholten parental responsibility termination for rooted | ||
epochs. Epochs are allowed to have other epochs nested within them, thus forming | ||
a graph. The detector tracks the relation between epochs, only making progress | ||
on epochs that do not have a dependency on another epoch terminating first. | ||
|
||
The termination detector also comes with hang detection to detect causes where | ||
no progress can be made due to a user's fault. When a hang is detected, if | ||
configured as so by the user, the detector will dump a DOT graph of the live | ||
epochs and their dependencies. | ||
|
||
\section term-collective-example Example of creating a collective epoch | ||
|
||
\snippet examples/termination/termination_collective.cc Collective termination example | ||
|
||
\section term-rooted-example Example of creating a rooted epoch | ||
|
||
\snippet examples/termination/termination_rooted.cc Rooted termination example |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters