LLVM OpenMP* Runtime Library
ompt-event-specific.h
1 #ifndef __OMPT_EVENT_SPECIFIC_H__
2 #define __OMPT_EVENT_SPECIFIC_H__
3 
4 /******************************************************************************
5  * File: ompt-event-specific.h
6  *
7  * Description:
8  *
9  * specify which of the OMPT events are implemented by this runtime system
10  * and the level of their implementation by a runtime system.
11  *****************************************************************************/
12 
13 #define _ompt_tokenpaste_helper(x, y) x##y
14 #define _ompt_tokenpaste(x, y) _ompt_tokenpaste_helper(x, y)
15 #define ompt_event_implementation_status(e) _ompt_tokenpaste(e, _implemented)
16 
17 /*----------------------------------------------------------------------------
18  | Specify whether an event may occur or not, and whether event callbacks
19  | never, sometimes, or always occur.
20  |
21  | The values for these constants are defined in section 6.1.2 of
22  | the OMPT TR. They are exposed to tools through ompt_set_callback.
23  +--------------------------------------------------------------------------*/
24 
25 #define ompt_event_NEVER ompt_set_result_event_never_occurs
26 #define ompt_event_UNIMPLEMENTED ompt_set_result_event_may_occur_no_callback
27 #define ompt_event_MAY_CONVENIENT ompt_set_result_event_may_occur_callback_some
28 #define ompt_event_MAY_ALWAYS ompt_set_result_event_may_occur_callback_always
29 
30 #if OMPT_TRACE
31 #define ompt_event_MAY_ALWAYS_TRACE ompt_event_MAY_ALWAYS
32 #else
33 #define ompt_event_MAY_ALWAYS_TRACE ompt_event_UNIMPLEMENTED
34 #endif
35 
36 #if OMPT_BLAME
37 #define ompt_event_MAY_ALWAYS_BLAME ompt_event_MAY_ALWAYS
38 #else
39 #define ompt_event_MAY_ALWAYS_BLAME ompt_event_UNIMPLEMENTED
40 #endif
41 
42 /*----------------------------------------------------------------------------
43  | Mandatory Events
44  +--------------------------------------------------------------------------*/
45 
46 #define ompt_event_parallel_begin_implemented ompt_event_MAY_ALWAYS
47 #define ompt_event_parallel_end_implemented ompt_event_MAY_ALWAYS
48 
49 #define ompt_event_task_begin_implemented ompt_event_MAY_ALWAYS
50 #define ompt_event_task_end_implemented ompt_event_MAY_ALWAYS
51 
52 #define ompt_event_thread_begin_implemented ompt_event_MAY_ALWAYS
53 #define ompt_event_thread_end_implemented ompt_event_MAY_ALWAYS
54 
55 #define ompt_event_control_implemented ompt_event_MAY_ALWAYS
56 
57 #define ompt_event_runtime_shutdown_implemented ompt_event_MAY_ALWAYS
58 
59 /*----------------------------------------------------------------------------
60  | Optional Events (blame shifting)
61  +--------------------------------------------------------------------------*/
62 
63 #define ompt_event_idle_begin_implemented ompt_event_MAY_ALWAYS_BLAME
64 #define ompt_event_idle_end_implemented ompt_event_MAY_ALWAYS_BLAME
65 
66 #define ompt_event_wait_barrier_begin_implemented ompt_event_MAY_ALWAYS_BLAME
67 #define ompt_event_wait_barrier_end_implemented ompt_event_MAY_ALWAYS_BLAME
68 
69 #define ompt_event_wait_taskwait_begin_implemented ompt_event_UNIMPLEMENTED
70 #define ompt_event_wait_taskwait_end_implemented ompt_event_UNIMPLEMENTED
71 
72 #define ompt_event_wait_taskgroup_begin_implemented ompt_event_UNIMPLEMENTED
73 #define ompt_event_wait_taskgroup_end_implemented ompt_event_UNIMPLEMENTED
74 
75 #define ompt_event_release_lock_implemented ompt_event_MAY_ALWAYS_BLAME
76 #define ompt_event_release_nest_lock_last_implemented \
77  ompt_event_MAY_ALWAYS_BLAME
78 #define ompt_event_release_critical_implemented ompt_event_MAY_ALWAYS_BLAME
79 #define ompt_event_release_atomic_implemented ompt_event_MAY_ALWAYS_BLAME
80 #define ompt_event_release_ordered_implemented ompt_event_MAY_ALWAYS_BLAME
81 
82 /*----------------------------------------------------------------------------
83  | Optional Events (synchronous events)
84  +--------------------------------------------------------------------------*/
85 
86 #define ompt_event_implicit_task_begin_implemented ompt_event_MAY_ALWAYS_TRACE
87 #define ompt_event_implicit_task_end_implemented ompt_event_MAY_ALWAYS_TRACE
88 
89 #define ompt_event_initial_task_begin_implemented ompt_event_UNIMPLEMENTED
90 #define ompt_event_initial_task_end_implemented ompt_event_UNIMPLEMENTED
91 
92 #define ompt_event_task_switch_implemented ompt_event_MAY_ALWAYS_TRACE
93 
94 #define ompt_event_loop_begin_implemented ompt_event_MAY_ALWAYS_TRACE
95 #define ompt_event_loop_end_implemented ompt_event_MAY_ALWAYS_TRACE
96 
97 #define ompt_event_sections_begin_implemented ompt_event_UNIMPLEMENTED
98 #define ompt_event_sections_end_implemented ompt_event_UNIMPLEMENTED
99 
100 #define ompt_event_single_in_block_begin_implemented ompt_event_MAY_ALWAYS_TRACE
101 #define ompt_event_single_in_block_end_implemented ompt_event_MAY_ALWAYS_TRACE
102 #define ompt_event_single_others_begin_implemented ompt_event_MAY_ALWAYS_TRACE
103 #define ompt_event_single_others_end_implemented ompt_event_MAY_ALWAYS_TRACE
104 
105 #define ompt_event_workshare_begin_implemented ompt_event_UNIMPLEMENTED
106 #define ompt_event_workshare_end_implemented ompt_event_UNIMPLEMENTED
107 
108 #define ompt_event_master_begin_implemented ompt_event_MAY_ALWAYS_TRACE
109 #define ompt_event_master_end_implemented ompt_event_MAY_ALWAYS_TRACE
110 
111 #define ompt_event_barrier_begin_implemented ompt_event_MAY_ALWAYS_TRACE
112 #define ompt_event_barrier_end_implemented ompt_event_MAY_ALWAYS_TRACE
113 
114 #define ompt_event_taskwait_begin_implemented ompt_event_MAY_ALWAYS_TRACE
115 #define ompt_event_taskwait_end_implemented ompt_event_MAY_ALWAYS_TRACE
116 
117 #define ompt_event_taskgroup_begin_implemented ompt_event_UNIMPLEMENTED
118 #define ompt_event_taskgroup_end_implemented ompt_event_UNIMPLEMENTED
119 
120 #define ompt_event_release_nest_lock_prev_implemented \
121  ompt_event_MAY_ALWAYS_TRACE
122 #define ompt_event_wait_lock_implemented ompt_event_UNIMPLEMENTED
123 #define ompt_event_wait_nest_lock_implemented ompt_event_UNIMPLEMENTED
124 #define ompt_event_wait_critical_implemented ompt_event_UNIMPLEMENTED
125 #define ompt_event_wait_atomic_implemented ompt_event_MAY_ALWAYS_TRACE
126 #define ompt_event_wait_ordered_implemented ompt_event_MAY_ALWAYS_TRACE
127 
128 #define ompt_event_acquired_lock_implemented ompt_event_MAY_ALWAYS_TRACE
129 #define ompt_event_acquired_nest_lock_first_implemented \
130  ompt_event_MAY_ALWAYS_TRACE
131 #define ompt_event_acquired_nest_lock_next_implemented \
132  ompt_event_MAY_ALWAYS_TRACE
133 #define ompt_event_acquired_critical_implemented ompt_event_UNIMPLEMENTED
134 #define ompt_event_acquired_atomic_implemented ompt_event_MAY_ALWAYS_TRACE
135 #define ompt_event_acquired_ordered_implemented ompt_event_MAY_ALWAYS_TRACE
136 
137 #define ompt_event_init_lock_implemented ompt_event_MAY_ALWAYS_TRACE
138 #define ompt_event_init_nest_lock_implemented ompt_event_MAY_ALWAYS_TRACE
139 
140 #define ompt_event_destroy_lock_implemented ompt_event_MAY_ALWAYS_TRACE
141 #define ompt_event_destroy_nest_lock_implemented ompt_event_MAY_ALWAYS_TRACE
142 
143 #define ompt_event_flush_implemented ompt_event_UNIMPLEMENTED
144 
145 #if OMP_40_ENABLED
146 #define ompt_event_task_dependences_implemented ompt_event_MAY_ALWAYS_TRACE
147 #define ompt_event_task_dependence_pair_implemented ompt_event_MAY_ALWAYS_TRACE
148 #else
149 #define ompt_event_task_dependences_implemented ompt_event_UNIMPLEMENTED
150 #define ompt_event_task_dependence_pair_implemented ompt_event_UNIMPLEMENTED
151 #endif /* OMP_40_ENABLED */
152 
153 #endif