Skip to content
Marc-Andre Hermanns edited this page May 14, 2020 · 1 revision

Meeting 2020-05-14

Participants

  • John DelSignore
  • Bengisu Elis
  • Marc-Andre Hermanns
  • Joachim Protze
  • Martin Schulz

Topics

Handle Introspection

  • Discussion based on Wiki page here
    • Started by copy-pasting Jeff S.'s interface present in OMPI
    • Each debugging handle has a constructor and free function
      • Debugging handle is only valid until the execution continues
        • I.e., only while the application is stopped
      • Constructor takes a address of MPI handle
    • How does the debugger know that a handle is a request
      • Purely by convention (checking the name of the type)
        • What if some non-MPI application uses the name MPI_Request for a type
      • It's an opaque handle and it is required to be comparable in the base language (need to look up the text)
        • Can only be a scalar
    • Should the input the handle query be the opaque handle value or a pointer to the opaque handle?
  • Which queries are possible?
    • Communicators
      • Basic query
        • Printable name
          • John discourages to use a string argument type like char name[MPI_MAX_OBJECT_NAME]
            • Cannot be an implementation dependent size
          • Alternative would be library allocates and user frees memory
            • Not used in the 1st-party MPI API
            • Used by some libc calls
        • Rank & size
        • Fortran handle
        • Extra info as key-value pair
          • Similar to ICV in OpenMP
      • Procs
        • List of Processes that are part of the communicator
  • What is mpidbg_process_t ?
    • ID of current process
      • in OMPI the world rank
  • How does the (multi-process) debugger communicate which MPI process is to be queried for a specific UNIX process
  • Where does a debugger get the context of the process
Clone this wiki locally