-
Notifications
You must be signed in to change notification settings - Fork 2
Notes 2020 10 29
Marc-Andre Hermanns edited this page Nov 5, 2020
·
1 revision
- Marc-Andre Hermanns
- Bengisu Elis
- Atul Kulkarni
- Bill Williams
- Chris Chambreau
- Wesley Bland Intel
- Joachim Protze
- Martin Schulz
-
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)
- Phase 1: Tools registeres with a name and pointer to init-function
-
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
-