blob: fdf121371a08b51bdb005be51e54d61378083762 [file] [log] [blame]
Andrey Churbanove5f44922015-04-29 16:22:07 +00001#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
Jonathan Peytonadee8c52015-11-11 17:49:50 +000094#define ompt_event_task_switch_implemented ompt_event_MAY_ALWAYS_TRACE
Andrey Churbanove5f44922015-04-29 16:22:07 +000095
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
Jonathan Peyton960ea2f2015-11-09 15:57:04 +0000116#define ompt_event_taskwait_begin_implemented ompt_event_MAY_ALWAYS_TRACE
117#define ompt_event_taskwait_end_implemented ompt_event_MAY_ALWAYS_TRACE
Andrey Churbanove5f44922015-04-29 16:22:07 +0000118
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
Jonathan Peyton0e6d4572015-10-16 16:52:58 +0000129#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
Andrey Churbanove5f44922015-04-29 16:22:07 +0000132#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
Jonathan Peyton0e6d4572015-10-16 16:52:58 +0000136#define ompt_event_init_lock_implemented ompt_event_MAY_ALWAYS_TRACE
137#define ompt_event_init_nest_lock_implemented ompt_event_MAY_ALWAYS_TRACE
Andrey Churbanove5f44922015-04-29 16:22:07 +0000138
Jonathan Peyton0e6d4572015-10-16 16:52:58 +0000139#define ompt_event_destroy_lock_implemented ompt_event_MAY_ALWAYS_TRACE
140#define ompt_event_destroy_nest_lock_implemented ompt_event_MAY_ALWAYS_TRACE
Andrey Churbanove5f44922015-04-29 16:22:07 +0000141
142#define ompt_event_flush_implemented ompt_event_UNIMPLEMENTED
143
Jonas Hahnfeld39b68622016-01-28 10:39:52 +0000144#if OMP_40_ENABLED
145# define ompt_event_task_dependences_implemented ompt_event_MAY_ALWAYS_TRACE
146# define ompt_event_task_dependence_pair_implemented ompt_event_MAY_ALWAYS_TRACE
147#else
148# define ompt_event_task_dependences_implemented ompt_event_UNIMPLEMENTED
149# define ompt_event_task_dependence_pair_implemented ompt_event_UNIMPLEMENTED
150#endif /* OMP_40_ENABLED */
151
Andrey Churbanove5f44922015-04-29 16:22:07 +0000152#endif