JJL paper brainstorm - DARMA-tasking/vt GitHub Wiki
Programming Model & Execution Model
- Asynchronous execution of "tasks" mapped dynamically to nodes/ranks
- Built-by-design to be highly interoperable with MPI
- Low-overhead and simple transition between MPI and vt, expected to occur every timestep, both can be active and work together
- Constructs in vt have symmetrical use in MPI (example: vt groups and MPI groups)
- Safe MPI collectives through consensus amidst an asynchronous, dynamic scheduler (novel?)
- Completion and ordering
PendingSend
/DependentSendChain
: task graph can expand beyond what is ready-to-run (RT system has lookahead)
- Control and data completion are intrinsically bound together through epochs
- Epochs form a graph that groups sets of tasks in the task graph
- Multi-algorithm, lightweight, scalable termination detection of epochs
- Epoch graph re-structuring optimizations; transitive dependency elimination? termination.cc:904
- IntegralSet data structure to compactly store a set of compact ranges of integers
- Collective Design
- Many interfaces in vt have collective interfaces to simplify use for MPI users (and reduce rooted overhead)
CollectionChainSet
: drive collections of tasks collectively and asynchronously alongside MPI
- Collective group creation voting algorithm (novel?) for efficiently building spanning trees across a subset of nodes group_info_collective.cc:258
LB
- Load models
- Python simulator framework (LBAF)
- Algorithm improvements to
GossipLB
Applications
- EMPIRE as a use case
- Performance results for some key problems
- Transition between MPI and VT each timestep
- NimbleSM?
Engineering & Design
- C++14 adherence
- Wide and older compiler support
- Static template registration pattern for safe handler dispatch across memory spaces