Artificial functions are constructed and put onto the User mode call stacks reflecting events in which a thread was in some state within the OpenMP runtime library.
The following artificial functions are defined:
<OMP-overhead> |
Executing in the OpenMP library |
<OMP-idle> |
Slave thread, waiting for work |
<OMP-reduction> |
Thread performing a reduction operation |
<OMP-implicit_barrier> |
Thread waiting at an implicit barrier |
<OMP-explicit_barrier> |
Thread waiting at an explicit barrier |
<OMP-lock_wait> |
Thread waiting for a lock |
<OMP-critical_section_wait> |
Thread waiting to enter a critical section |
<OMP-ordered_section_wait> |
Thread waiting for its turn to enter an ordered section |
When a thread is in an OpenMP runtime state corresponding to one of those functions, the corresponding function is added as the leaf function on the stack. When a thread’s leaf function is anywhere in the OpenMP runtime, it is replaced by <OMP-overhead> as the leaf function. Otherwise, all PCs from the OpenMP runtime are omitted from the user-mode stack.