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 /*----------------------------------------------------------------------------
19  | Specify whether an event may occur or not, and whether event callbacks
20  | never, sometimes, or always occur.
21  |
22  | The values for these constants are defined in section 6.1.2 of
23  | the OMPT TR. They are exposed to tools through ompt_set_callback.
24  +--------------------------------------------------------------------------*/
25 
26 #define ompt_event_NEVER ompt_set_result_event_never_occurs
27 #define ompt_event_UNIMPLEMENTED ompt_set_result_event_may_occur_no_callback
28 #define ompt_event_MAY_CONVENIENT ompt_set_result_event_may_occur_callback_some
29 #define ompt_event_MAY_ALWAYS ompt_set_result_event_may_occur_callback_always
30 
31 #if OMPT_TRACE
32 #define ompt_event_MAY_ALWAYS_TRACE ompt_event_MAY_ALWAYS
33 #else
34 #define ompt_event_MAY_ALWAYS_TRACE ompt_event_UNIMPLEMENTED
35 #endif
36 
37 #if OMPT_BLAME
38 #define ompt_event_MAY_ALWAYS_BLAME ompt_event_MAY_ALWAYS
39 #else
40 #define ompt_event_MAY_ALWAYS_BLAME ompt_event_UNIMPLEMENTED
41 #endif
42 
43 /*----------------------------------------------------------------------------
44  | Mandatory Events
45  +--------------------------------------------------------------------------*/
46 
47 #define ompt_event_parallel_begin_implemented ompt_event_MAY_ALWAYS
48 #define ompt_event_parallel_end_implemented ompt_event_MAY_ALWAYS
49 
50 #define ompt_event_task_begin_implemented ompt_event_MAY_ALWAYS
51 #define ompt_event_task_end_implemented ompt_event_MAY_ALWAYS
52 
53 #define ompt_event_thread_begin_implemented ompt_event_MAY_ALWAYS
54 #define ompt_event_thread_end_implemented ompt_event_MAY_ALWAYS
55 
56 #define ompt_event_control_implemented ompt_event_MAY_ALWAYS
57 
58 #define ompt_event_runtime_shutdown_implemented ompt_event_MAY_ALWAYS
59 
60 
61 /*----------------------------------------------------------------------------
62  | Optional Events (blame shifting)
63  +--------------------------------------------------------------------------*/
64 
65 #define ompt_event_idle_begin_implemented ompt_event_MAY_ALWAYS_BLAME
66 #define ompt_event_idle_end_implemented ompt_event_MAY_ALWAYS_BLAME
67 
68 #define ompt_event_wait_barrier_begin_implemented ompt_event_MAY_ALWAYS_BLAME
69 #define ompt_event_wait_barrier_end_implemented ompt_event_MAY_ALWAYS_BLAME
70 
71 #define ompt_event_wait_taskwait_begin_implemented ompt_event_UNIMPLEMENTED
72 #define ompt_event_wait_taskwait_end_implemented ompt_event_UNIMPLEMENTED
73 
74 #define ompt_event_wait_taskgroup_begin_implemented ompt_event_UNIMPLEMENTED
75 #define ompt_event_wait_taskgroup_end_implemented ompt_event_UNIMPLEMENTED
76 
77 #define ompt_event_release_lock_implemented ompt_event_MAY_ALWAYS_BLAME
78 #define ompt_event_release_nest_lock_last_implemented ompt_event_MAY_ALWAYS_BLAME
79 #define ompt_event_release_critical_implemented ompt_event_MAY_ALWAYS_BLAME
80 #define ompt_event_release_atomic_implemented ompt_event_MAY_ALWAYS_BLAME
81 #define ompt_event_release_ordered_implemented ompt_event_MAY_ALWAYS_BLAME
82 
83 
84 /*----------------------------------------------------------------------------
85  | Optional Events (synchronous events)
86  +--------------------------------------------------------------------------*/
87 
88 #define ompt_event_implicit_task_begin_implemented ompt_event_MAY_ALWAYS_TRACE
89 #define ompt_event_implicit_task_end_implemented ompt_event_MAY_ALWAYS_TRACE
90 
91 #define ompt_event_initial_task_begin_implemented ompt_event_UNIMPLEMENTED
92 #define ompt_event_initial_task_end_implemented ompt_event_UNIMPLEMENTED
93 
94 #define ompt_event_task_switch_implemented ompt_event_MAY_ALWAYS_TRACE
95 
96 #define ompt_event_loop_begin_implemented ompt_event_MAY_ALWAYS_TRACE
97 #define ompt_event_loop_end_implemented ompt_event_MAY_ALWAYS_TRACE
98 
99 #define ompt_event_sections_begin_implemented ompt_event_UNIMPLEMENTED
100 #define ompt_event_sections_end_implemented ompt_event_UNIMPLEMENTED
101 
102 #define ompt_event_single_in_block_begin_implemented ompt_event_MAY_ALWAYS_TRACE
103 #define ompt_event_single_in_block_end_implemented ompt_event_MAY_ALWAYS_TRACE
104 #define ompt_event_single_others_begin_implemented ompt_event_MAY_ALWAYS_TRACE
105 #define ompt_event_single_others_end_implemented ompt_event_MAY_ALWAYS_TRACE
106 
107 #define ompt_event_workshare_begin_implemented ompt_event_UNIMPLEMENTED
108 #define ompt_event_workshare_end_implemented ompt_event_UNIMPLEMENTED
109 
110 #define ompt_event_master_begin_implemented ompt_event_MAY_ALWAYS_TRACE
111 #define ompt_event_master_end_implemented ompt_event_MAY_ALWAYS_TRACE
112 
113 #define ompt_event_barrier_begin_implemented ompt_event_MAY_ALWAYS_TRACE
114 #define ompt_event_barrier_end_implemented ompt_event_MAY_ALWAYS_TRACE
115 
116 #define ompt_event_taskwait_begin_implemented ompt_event_MAY_ALWAYS_TRACE
117 #define ompt_event_taskwait_end_implemented ompt_event_MAY_ALWAYS_TRACE
118 
119 #define ompt_event_taskgroup_begin_implemented ompt_event_UNIMPLEMENTED
120 #define ompt_event_taskgroup_end_implemented ompt_event_UNIMPLEMENTED
121 
122 #define ompt_event_release_nest_lock_prev_implemented ompt_event_MAY_ALWAYS_TRACE
123 #define ompt_event_wait_lock_implemented ompt_event_UNIMPLEMENTED
124 #define ompt_event_wait_nest_lock_implemented ompt_event_UNIMPLEMENTED
125 #define ompt_event_wait_critical_implemented ompt_event_UNIMPLEMENTED
126 #define ompt_event_wait_atomic_implemented ompt_event_MAY_ALWAYS_TRACE
127 #define ompt_event_wait_ordered_implemented ompt_event_MAY_ALWAYS_TRACE
128 
129 #define ompt_event_acquired_lock_implemented ompt_event_MAY_ALWAYS_TRACE
130 #define ompt_event_acquired_nest_lock_first_implemented ompt_event_MAY_ALWAYS_TRACE
131 #define ompt_event_acquired_nest_lock_next_implemented ompt_event_MAY_ALWAYS_TRACE
132 #define ompt_event_acquired_critical_implemented ompt_event_UNIMPLEMENTED
133 #define ompt_event_acquired_atomic_implemented ompt_event_MAY_ALWAYS_TRACE
134 #define ompt_event_acquired_ordered_implemented ompt_event_MAY_ALWAYS_TRACE
135 
136 #define ompt_event_init_lock_implemented ompt_event_MAY_ALWAYS_TRACE
137 #define ompt_event_init_nest_lock_implemented ompt_event_MAY_ALWAYS_TRACE
138 
139 #define ompt_event_destroy_lock_implemented ompt_event_MAY_ALWAYS_TRACE
140 #define ompt_event_destroy_nest_lock_implemented ompt_event_MAY_ALWAYS_TRACE
141 
142 #define ompt_event_flush_implemented ompt_event_UNIMPLEMENTED
143 
144 #endif