Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Trace MPI events with PMPI wrappers when outside VT #900

Closed
lifflander opened this issue Jun 27, 2020 · 0 comments
Closed

Trace MPI events with PMPI wrappers when outside VT #900

lifflander opened this issue Jun 27, 2020 · 0 comments
Assignees

Comments

@lifflander
Copy link
Collaborator

What Needs to be Done?

We currently track when we are outside VT. With the PMPI wrappers enabled, we can generate user events for MPI calls, like MPI_Send/MPI_Recv/MPI_Reduce/etc.

pnstickne added a commit that referenced this issue Jun 30, 2020
- A bit easier to work with, perhaps.
pnstickne added a commit that referenced this issue Jun 30, 2020
- Now can map custom actions in the generator; currently a simple
  sub, and to be logging or some such.
pnstickne added a commit that referenced this issue Jun 30, 2020
- When a trace user ID is registered it is (often) reported
  up to rank 0 so it can be added to the STS definition.

  Unify the logic in one place to support future changes.

  Also fixes an edge-case where it may be possible for the same registration
  to be sent multiple times, which is wasteful.
pnstickne added a commit that referenced this issue Jun 30, 2020
- This unwinds the stack to avoid failing attempting to re-grant MPI
  access while running under a PMPI wrapper..
pnstickne added a commit that referenced this issue Jul 14, 2020
- A bit easier to work with, perhaps.
pnstickne added a commit that referenced this issue Jul 14, 2020
- Now can map custom actions in the generator; currently a simple
  sub, and to be logging or some such.
pnstickne added a commit that referenced this issue Jul 14, 2020
- When a trace user ID is registered it is (often) reported
  up to rank 0 so it can be added to the STS definition.

  Unify the logic in one place to support future changes.

  Also fixes an edge-case where it may be possible for the same registration
  to be sent multiple times, which is wasteful.
pnstickne added a commit that referenced this issue Jul 14, 2020
- This unwinds the stack to avoid failing attempting to re-grant MPI
  access while running under a PMPI wrapper..
pnstickne added a commit that referenced this issue Jul 14, 2020
- Provides some API between auto-generated code and standard VT component
  registration and lifetime management.
pnstickne added a commit that referenced this issue Jul 14, 2020
- This should (eventually) use option flags and/or the scheduler
  runtime depth information to determine if a PMPI call should
  be logged, regardless of overall tracing status.

  This also finishes up some component registration and exposure,
  as needed to be accessed from the free functions.
pnstickne added a commit that referenced this issue Jul 14, 2020
- Provides some API between auto-generated code and standard VT component
  registration and lifetime management.
pnstickne added a commit that referenced this issue Jul 14, 2020
- This should (eventually) use option flags and/or the scheduler
  runtime depth information to determine if a PMPI call should
  be logged, regardless of overall tracing status.

  This also finishes up some component registration and exposure,
  as needed to be accessed from the free functions.
pnstickne added a commit that referenced this issue Jul 14, 2020
- Prevent issue where MPI_Wtime could be accessed prior to
  MPI_Init and crash program..
pnstickne added a commit that referenced this issue Jul 14, 2020
pnstickne added a commit that referenced this issue Jul 14, 2020
- Has to be outside of a loop, without any specific PMPI grants
  in scope. This can be improved once all usages use the newer
  loop structure..
pnstickne added a commit that referenced this issue Jul 14, 2020
- If nothing else, this allows tests to easily pass.
pnstickne added a commit that referenced this issue Jul 14, 2020
- These were individually excluded and are considered
  core infrastructure PMPI calls that have no need to be
  logged or guarded.
pnstickne added a commit that referenced this issue Jul 14, 2020
- Passing 'no event' is used to create a NO-OP call to this type.
  Ensure that it truly is a NO-OP in this case.
pnstickne added a commit that referenced this issue Jul 14, 2020
- When a trace user ID is registered it is (often) reported
  up to rank 0 so it can be added to the STS definition.

  Unify the logic in one place to support future changes.

  Also fixes an edge-case where it may be possible for the same registration
  to be sent multiple times, which is wasteful.
pnstickne added a commit that referenced this issue Jul 14, 2020
- This unwinds the stack to avoid failing attempting to re-grant MPI
  access while running under a PMPI wrapper..
pnstickne added a commit that referenced this issue Jul 14, 2020
- Provides some API between auto-generated code and standard VT component
  registration and lifetime management.
pnstickne added a commit that referenced this issue Jul 14, 2020
- Splits generators into smaller pieces and prepares
  for future work.

- Wrappers generate collective events.
pnstickne added a commit that referenced this issue Jul 14, 2020
- This should (eventually) use option flags and/or the scheduler
  runtime depth information to determine if a PMPI call should
  be logged, regardless of overall tracing status.

  This also finishes up some component registration and exposure,
  as needed to be accessed from the free functions.
pnstickne added a commit that referenced this issue Jul 21, 2020
- Passing 'no event' is used to create a NO-OP call to this type.
  Ensure that it truly is a NO-OP in this case.
pnstickne added a commit that referenced this issue Jul 21, 2020
- Provides some API between auto-generated code and standard VT component
  registration and lifetime management.

- This should (eventually) use option flags and/or the scheduler
  runtime depth information to determine if a PMPI call should
  be logged, regardless of overall tracing status.

  This also finishes up some component registration and exposure,
  as needed to be accessed from the free functions.
pnstickne added a commit that referenced this issue Jul 21, 2020
- Splits generators into smaller pieces and prepares
  for future work.

- Wrappers generate collective events.
pnstickne added a commit that referenced this issue Jul 21, 2020
- Has to be outside of a loop, without any specific PMPI grants
  in scope. This can be improved once all usages use the newer
  loop structure..
pnstickne added a commit that referenced this issue Jul 21, 2020
- If nothing else, this allows tests to easily pass.
pnstickne added a commit that referenced this issue Jul 21, 2020
- Passing 'no event' is used to create a NO-OP call to this type.
  Ensure that it truly is a NO-OP in this case.
pnstickne added a commit that referenced this issue Jul 28, 2020
- Provides some API between auto-generated code and standard VT component
  registration and lifetime management.

- This should (eventually) use option flags and/or the scheduler
  runtime depth information to determine if a PMPI call should
  be logged, regardless of overall tracing status.

  This also finishes up some component registration and exposure,
  as needed to be accessed from the free functions.
pnstickne added a commit that referenced this issue Jul 28, 2020
- Splits generators into smaller pieces and prepares
  for future work.

- Wrappers generate collective events.
pnstickne added a commit that referenced this issue Jul 28, 2020
- Has to be outside of a loop, without any specific PMPI grants
  in scope. This can be improved once all usages use the newer
  loop structure..
pnstickne added a commit that referenced this issue Jul 28, 2020
- If nothing else, this allows tests to easily pass.
pnstickne added a commit that referenced this issue Jul 28, 2020
- Passing 'no event' is used to create a NO-OP call to this type.
  Ensure that it truly is a NO-OP in this case.
pnstickne added a commit that referenced this issue Jul 28, 2020
- If nothing else, this allows tests to easily pass.
pnstickne added a commit that referenced this issue Jul 28, 2020
- Passing 'no event' is used to create a NO-OP call to this type.
  Ensure that it truly is a NO-OP in this case.
pnstickne added a commit that referenced this issue Jul 28, 2020
- If nothing else, this allows tests to easily pass.
pnstickne added a commit that referenced this issue Jul 28, 2020
- Passing 'no event' is used to create a NO-OP call to this type.
  Ensure that it truly is a NO-OP in this case.
pnstickne added a commit that referenced this issue Jul 28, 2020
- MPI_Get is now guarded.

- Some minor comment updates.
pnstickne added a commit that referenced this issue Jul 31, 2020
- Now uses an option instead of a flag. Specify the form of MPI to enable.
  In C++, the options should be separated with spaces:

      --vt_mpi_trace internal
      --vt_mpi_trace external
      --vt_mpi_trace internal externall

  'internal' is the few select internal calls, 'external' is PMPI overall.
lifflander pushed a commit that referenced this issue Aug 4, 2020
- Provides some API between auto-generated code and standard VT component
  registration and lifetime management.

- This should (eventually) use option flags and/or the scheduler
  runtime depth information to determine if a PMPI call should
  be logged, regardless of overall tracing status.

  This also finishes up some component registration and exposure,
  as needed to be accessed from the free functions.
lifflander pushed a commit that referenced this issue Aug 4, 2020
- Splits generators into smaller pieces and prepares
  for future work.

- Wrappers generate collective events.
lifflander pushed a commit that referenced this issue Aug 4, 2020
- Has to be outside of a loop, without any specific PMPI grants
  in scope. This can be improved once all usages use the newer
  loop structure..
lifflander pushed a commit that referenced this issue Aug 4, 2020
- If nothing else, this allows tests to easily pass.
lifflander pushed a commit that referenced this issue Aug 4, 2020
- Passing 'no event' is used to create a NO-OP call to this type.
  Ensure that it truly is a NO-OP in this case.
lifflander pushed a commit that referenced this issue Aug 4, 2020
- MPI_Get is now guarded.

- Some minor comment updates.
lifflander pushed a commit that referenced this issue Aug 4, 2020
- Now uses an option instead of a flag. Specify the form of MPI to enable.
  In C++, the options should be separated with spaces:

      --vt_mpi_trace internal
      --vt_mpi_trace external
      --vt_mpi_trace internal externall

  'internal' is the few select internal calls, 'external' is PMPI overall.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants