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; each is followed by a description of its function:
<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.