Skip to content

JJL paper brainstorm

Jonathan Lifflander edited this page Jul 22, 2020 · 11 revisions

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
  • Collective Design
    • Many interfaces in vt have collective interfaces to simplify use for MPI users (also reduces rooted overhead)
    • CollectionChainSet: drive collections of tasks collectively and asynchronously alongside MPI