Skip to content
Marc-Andre Hermanns edited this page Nov 5, 2020 · 1 revision

MPI Forum Tools Meeting 2020-10-29

Participants

  • Marc-Andre Hermanns
  • Bengisu Elis
  • Atul Kulkarni
  • Bill Williams
  • Chris Chambreau
  • Wesley Bland Intel
  • Joachim Protze
  • Martin Schulz

Topcis

  • Initialization a 2-phase process

    • Phase 1: Tools registeres with a name and pointer to init-function
      • By any means (e.g., constructor attribute) in arbitrary order
    • Phase 2: Env-Variable (e.g., QMPI_TOOLS=mpip:myfancecollectives:mpip) determines the order of initialization (and ordering in the stack)
  • Tool interception calls should be allowed to be called after Init

    • Allow meta tools to intercept interception calls themselves
  • Allow dynamic adding/removing of tools

    • need function to enforce tools to rebuild their internal "picture" of the stack
    • Use a callback for "tool has been added" and "tool has been removed"
  • We currently don't have anything to query arbitrary members of the stack

    • Only myself and the next
  • Context handling

    • QMPI_Context opaque handle

      • Internal information stored there
      • not tool specific but specific to the function you are calling
        • memory is managed by the mechanism that calls the next function in the stack
    • Contents

      • Function point to next function in the stack
      • Storage object provided by the tool during registration
      • calling address of the user code
    • Same context object is handed down the complete calling stack

      • Tool does not need to query it anymore
      • MPI manages the lifetime of the object
    • How to do the handling of the "last user function"

      • Stackwalking can be expensive
      • As it's part of the opaque object, we could add this info later
Clone this wiki locally