POMP User Instrumentation

For manual user instrumentation the following pragmas are provided.

C/C++:

       #pragma pomp inst init
       #pragma pomp inst begin(region_name)
       #pragma pomp inst altend(region_name)
       #pragma pomp inst end(region_name)
       #pragma pomp noinstrument
       #pragma pomp instrument

Fortran:

       !$POMP INST INIT
       !$POMP INST BEGIN(region_name)
       !$POMP INST ALTEND(region_name)
       !$POMP INST END(region_name)
       !$POMP NOINSTRUMENT
       !$POMP INSTRUMENT

Users can specify code regions, like functions for example, with `INST` `BEGIN` and `INST` `END`. If a region contains several exit points like return/break/exit/... all but the last need to be marked with `INST` `ALTEND` pragmas. The `INST` `INIT` pragma should be used for initialization in the beginning of main, if no other initialization method is used. The `NOINSTRUMENT` and `INSTRUMENT` pragmas can be used to turn off or on the instrumentation of OpenMP pragmas. All pragmas between `NOINSTRUMENT` and `INSTRUMENT` except for parallel regions are not instrumented. Parallel regions are always instrumented to allow a correct thread management in the performance tool. See the Example Code section for an example on how to use user instrumentation.