Skip to content

JJL paper brainstorm

Jonathan Lifflander edited this page Jul 28, 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
      • 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