Skip to content

Handle Debugging:Bootstrapping

Joachim edited this page Apr 14, 2023 · 6 revisions

Should we provide size informantion for the different handles?

-> Provide a list of handle type names for all opaque handles to the debugger. The debugger will use this information to automatically detect handle variables and show their content

-> Provide a way to identify internal MPI implementation threads. The debugger might use this information to possibly hide the thread or group it separately.

-> Identify the main thread (thread that executed MPI_Init*)

-> How to deal with process-in-process (https://github.com/procinproc) implementations? Identify the different threads as MPI processes?

Copy/adapt from the OpenMP document:

  • 20.2 Activating a Third-Party Tool
  • 20.5.1 Per OMPD Library Initialization and Finalization
  • 20.5.2 Per OpenMP Process Initialization and Finalization
    • 20.5.2.1 ompd_process_initialize
    • 20.5.2.3 ompd_rel_address_space_handle
  • 20.5.3 Thread and Signal Safety
  • 20.5.4 Address Space Information
    • MPI process information (there might be multiple mpi processes within an OS process)
ompd_rc_t mpidbg_process_initialize(
  mpidbg_address_space_context_t *context,
  mpidbg_mpi_process_handle_t **array_of_mpi_process_handles, // callee allocated list using the alloc callback. caller will free this memory
  int *num_mpi_processes // number of mpi processes within the given address space
);
    • Add query to identify the threads connected to an MPI-processes
  • 20.5.5 Thread Handles
    • 20.5.5.2 ompd_get_thread_handle (needed, if implementations might store relevant information in TLS)
    • 20.5.5.3 ompd_rel_thread_handle

Clone this wiki locally