The POMP OpenMP Performance Monitoring Interface is a proposed API for enabling programmers and performance tools to obtain information about the performance of OpenMP constructs in an OpenMP program.
The IBM compilers and HPCT toolkit provide a prototype implementation of some of the POMP functionality. The full POMP API provides a number of events to report the time spent in different parts of compiler-instrumented user code, and the prototype POMP implementation provides a core subset of the events, sufficient to instrument most OpenMP programs. The current POMP implementation allows profiling of Parallel Regions, WorkShare Do and Parallel Do Loops.
No source code changes are required to use the HPCT POMP profiling library.
Profiling of nested parallelism is not supported. In such cases, only the topmost parent region will be profiled.
The runtime library supporting Performance Monitoring of OpenMP (POMP) is an experimental tool and is specifically designed for development activities and should not be used for production code.
POMP API Calls Supported
As currently implemented the POMP tool provides information OpenMP parallel regions and parallel loops through automatic compiler instrumentation which adds the following calls:
POMP_Init POMP_Get_handle POMP_Parallel_enter POMP_Parallel_begin POMP_Parallel_end POMP_Parallel_exit POMP_Loop_enter POMP_Loop_chunk_begin POMP_Loop_chunk_end POMP_Loop_exit
These routine are implemented in the IBM HPCT library pomprof_probe.so which may be used for profiling OpenMP performance.
Compiling and Linking
Individual source code files must be compiled with -qdebug=pomp to enable calls from the OpenMP runtime to the HPCT POMP library.
mpixlc_r -c file.c -qdebug=pomp -qsmp=omp
When linking to use the HPCT POMP profiling library three additional libraries must be included:
mpixlc_r -Wl,-Bdynamic -o file-pomp-prof file.o -L/soft/apps/ibmcmp/xlsmp/bg/1.7/lib_pomp/ -lxlsmp_pomp32 /soft/apps/current/ibm-hpct/lib/pomprof_probe.so /soft/apps/current/ibm-hpct/lib/liblicense.a
Running a code compiled to use the HPCT POMP OpenMP profiling library produces two output files:
- pomprof_<mpi-task>.<pid> - text OpenMP profiling info
- pomprof_<mpi-task>_<pid>.viz - file for use with peekperf gui viewer