5.1. Open MPI profiling interface

Open MPI head of development supportings the “PMPI” profiling interface as perscribed by the MPI standard for the C and Fortran bindings (not the Open MPI Java binding extensions).

Per MPI-4.0 section 15.2.1, MPI implementations must document which bindings layer on top of each other, so that profile developers know whether to implement the profiling interface for each binding, or whether they can economize by implementing it only for the lowest level routines.

In general, Open MPI’s Fortran bindings are implemented on top of the C bindings. Hence, a profile developer who implements MPI_Init() in C will also intecept all Fortran calls to MPI_INIT regardless of whether the user is utilizing the mpif.h, use mpi, or use mpi_f08 Fortran interfaces.

However, there are a handful of routines where Open MPI’s Fortran bindings are not a simple wrapper around the back-end C MPI binding. Profile developers must therefore intercept the APIs listed below in their source language interface bindings in order to receive full profiling coverage. Note, however, that it is only necessary for profile developers to intercept the mpif.h binding of each of the routines listed below; the use mpi and use mpi_f08 bindings will ultimately invoke the mpif.h binding.

Note that there is no harm in intercepting all routines in all interfaces. Indeed, that is the most portable way to implement a profiling interface. Since Open MPI’s Fortran bindings are — for the most part — implemented on top of its C bindings, profile developers can ignore all Fortran interfaces except for the ones enumated above.