-
Notifications
You must be signed in to change notification settings - Fork 2
Notes 2021 01 14
Marc-Andre Hermanns edited this page Jan 15, 2021
·
1 revision
- Marc-Andre Hermanns
- Bill Williams
- Wesley Bland
- Bengisu Elis
- Chris Chambreau
- Michael Knobloch
- Joachim Protze
-
Argonne customer wants an interface to communicate different phases of an applications
- Caliper (LLNL Tool) should be the solution to that
-
Existing
MPI_Pcontrol
semantics are terrible to begin with- Turn on/off measurement; everything else is tool-defined/non-portable
- Var-List Argument (C-only) is non portable
- Maybe a key-value store (
MPI_Info
?, binary values?) could solve this - String comparisons may be too slow
- Using hashes would only solve part of the problem
- Internally all info keys are integers and string keys are hashed to find the right entry
- How to handle collisions?
- Internally all info keys are integers and string keys are hashed to find the right entry
- Binary keys and values could be a valuable
- Using hashes would only solve part of the problem
-
MPI_Info_key_create("name", &index)
to create an integer ID for a string key?- Additional API to interact with Info binary keys?
- How to handle binary value data?
- Add setter/getter with
void*
- Return a string representation of pointer address in classic API?
- Add setter/getter with
- Maybe a key-value store (
-
QMPI_Pcontrol
could also be used for user instrumentation -
Could this be done via CVARs? - Some API needed to query the specific object a CVAR is bound to - One might bind a CVAR to an Info object - Requires multiple Info objects to identify as different instrumentation points. - Distinct CVARs might be needed to indicate begin/end
-
Do we need a non-blocking version?
-
How to make sure completion can be handled by the library? - Something along the lines of the
MPI_Pready
call to indicate that a tool that interceptsQcontrol
is done manipulating the info object
- Different modes of communication
- All tools
- Notify all tools in the stack about something
- Targeted unicast (specific instance of a tool)
- Tool may swallow this (only a single tool instance will act)
- Multiple tool instances of the same tool may act
- Multi-cast (specific instances of multiple tools)
- Would namespaces suffice or would we want to explicitly target
- All tools
- Separate signal spaces/namespaces (independent of tool name/instance) helpful
- Do we want to map Pcontrol automatically to Qcontrol?
- Applications using Pcontrol might work (with known limitations) with Qcontrol tools
- Could use a standard namespace (e.g., "mpi_pcontrol")
- Level can be passed/encoded portably (even Fortran/C)
- var_args argument list cannot (would be swallowed by the call)
- QMPI tools would be/should be aware of that
- Applications using Pcontrol might work (with known limitations) with Qcontrol tools
- Deprecate the use of Pcontrol in favor of Qcontrol
- Applications should move to using Qcontrol enabling all capabilities of namespacing