Phase Manager
Manage phases of time.
The phase manager component vt::
, accessed via vt::
allows the delineation of collective intervals of time across all nodes. Load balancing, as well as other components, use phases as a boundary to perform many operations over an application's execution such as work redistribution, outputting of statistical data, or flushing trace data.
The main user interface is a call to thePhase()->nextPhaseCollective()
which starts the next phase after performing a reduction. Thus, any work that belongs in the preceding phase should be synchronized by the user before this is called (e.g., by calling vt::
).
System components along with applications can register hooks with the phase manager to determine when a new phase is starting, ending, and after migrations have occurred.