LLVM OpenMP 22.0.0git
custom_data_storage.c
Go to the documentation of this file.
1// clang-format off
2// RUN: %libomp-tool -DFIRST_TOOL -o %t.first.tool.so %s && \
3// RUN: %libomp-tool -DSECOND_TOOL -o %t.second.tool.so %s && \
4// RUN: %libomp-compile && \
5// RUN: env OMP_TOOL_LIBRARIES=%t.first.tool.so \
6// RUN: CUSTOM_DATA_STORAGE_TOOL_LIBRARIES=%t.second.tool.so \
7// RUN: %libomp-run | %sort-threads | FileCheck %s
8
9// For GCC we don't get an event for master,
10// see runtime/test/ompt/sycnchronization/master.c
11// UNSUPPORTED: gcc
12// clang-format on
13
14#if defined(FIRST_TOOL)
15#include "first-tool.h"
16#elif defined(SECOND_TOOL)
17#include "second-tool.h"
18#else /* APP */
19
20#include "../ompt-signal.h"
21#include "omp.h"
22#include <stdio.h>
23
24int main() {
25 int x, s = 0;
26#pragma omp parallel num_threads(2) shared(s)
27 {
28#pragma omp master
29 {
30#pragma omp task shared(s)
31 {
32 omp_control_tool(5, 1, NULL);
34 }
35 }
36 if (omp_get_thread_num() == 1)
37 OMPT_WAIT(s, 1);
38 }
39 return 0;
40}
41// clang-format off
42// Check if libomp supports the callbacks for this test.
43// CHECK-NOT: {{^}}0: Could not register callback
44
45// CHECK: {{^}}0: NULL_POINTER=[[NULL:.*$]]
46// CHECK: {{^}}0: NULL_POINTER=[[NULL]]
47// CHECK: {{^}}0: ompt_event_runtime_shutdown
48// CHECK: {{^}}0: ompt_event_runtime_shutdown
49
50// CHECK: {{^}}[[_1ST_MSTR_TID:[0-9]+]]: _first_tool: ompt_event_thread_begin:
51// CHECK-SAME: thread_type=ompt_thread_initial=1,
52// CHECK-SAME: thread_id=[[_1ST_MSTR_TID]]
53
54// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: ompt_event_initial_task_begin:
55// CHECK-SAME: parallel_id=[[_FIRST_INIT_PARALLEL_ID:[0-f]+]],
56// CHECK-SAME: task_id=[[_FIRST_INITIAL_TASK_ID:[0-f]+]], actual_parallelism=1,
57
58// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: ompt_event_parallel_begin:
59// CHECK-SAME: parent_task_id=[[_FIRST_INITIAL_TASK_ID]],
60// CHECK-SAME: parent_task_frame.exit=[[NULL]],
61// CHECK-SAME: parent_task_frame.reenter={{(0x)?[0-f]+}},
62// CHECK-SAME: parallel_id=[[_FIRST_PARALLEL_ID:[0-f]+]], requested_team_size=2,
63// CHECK-SAME: codeptr_ra={{(0x)?[0-f]+}}, invoker
64
65// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: ompt_event_implicit_task_begin:
66// CHECK-SAME: parallel_id=[[_FIRST_PARALLEL_ID]],
67// CHECK-SAME: task_id=[[_FIRST_MASTER_IMPLICIT_TASK_ID:[0-f]+]], team_size=2,
68// CHECK-SAME: thread_num=0
69
70// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: ompt_event_masked_begin:
71// CHECK-SAME: parallel_id=[[_FIRST_PARALLEL_ID]],
72// CHECK-SAME: task_id=[[_FIRST_MASTER_IMPLICIT_TASK_ID]],
73// CHECK-SAME: codeptr_ra={{(0x)?[0-f]+}}
74
75// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: ompt_event_task_create:
76// CHECK-SAME: parent_task_id=[[_FIRST_MASTER_IMPLICIT_TASK_ID]],
77// CHECK-SAME: parent_task_frame.exit={{(0x)?[0-f]+}},
78// CHECK-SAME: parent_task_frame.reenter={{(0x)?[0-f]+}},
79// CHECK-SAME: new_task_id=[[_FIRST_EXPLICIT_TASK_ID:[0-f]+]],
80// CHECK-SAME: codeptr_ra={{(0x)?[0-f]+}}, task_type=ompt_task_explicit=4,
81// CHECK-SAME: has_dependences=no
82
83// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: ompt_event_masked_end:
84// CHECK-SAME: parallel_id=[[_FIRST_PARALLEL_ID]],
85// CHECK-SAME: task_id=[[_FIRST_MASTER_IMPLICIT_TASK_ID]],
86// CHECK-SAME: codeptr_ra={{(0x)?[0-f]+}}
87
88// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool:
89// CHECK-SAME: ompt_event_barrier_implicit_parallel_begin:
90// CHECK-SAME: parallel_id=[[_FIRST_PARALLEL_ID]],
91// CHECK-SAME: task_id=[[_FIRST_MASTER_IMPLICIT_TASK_ID]],
92// CHECK-SAME: codeptr_ra={{(0x)?[0-f]+}}
93
94// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool:
95// CHECK-SAME: ompt_event_wait_barrier_implicit_parallel_begin:
96// CHECK-SAME: parallel_id=[[_FIRST_PARALLEL_ID]],
97// CHECK-SAME: task_id=[[_FIRST_MASTER_IMPLICIT_TASK_ID]],
98// CHECK-SAME: codeptr_ra={{(0x)?[0-f]+}}
99
100// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: ompt_event_task_schedule:
101// CHECK-SAME: first_task_id=[[_FIRST_MASTER_IMPLICIT_TASK_ID]],
102// CHECK-SAME: second_task_id=[[_FIRST_EXPLICIT_TASK_ID]],
103// CHECK-SAME: prior_task_status=ompt_task_switch=7
104
105// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: ompt_event_control_tool:
106// CHECK-SAME: command=5, modifier=1, arg=[[NULL]],
107// CHECK-SAME: codeptr_ra={{(0x)?[0-f]+}}
108
109// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: task level 0:
110// CHECK-SAME: task_id=[[_FIRST_EXPLICIT_TASK_ID]]
111
112// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: task level 1:
113// CHECK-SAME: task_id=[[_FIRST_MASTER_IMPLICIT_TASK_ID]]
114
115// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: task level 2:
116// CHECK-SAME: task_id=[[_FIRST_INITIAL_TASK_ID]]
117
118// CHECK: {{^}}[[_1ST_MSTR_TID]]:
119// CHECK-SAME: _first_tool: parallel level 0: parallel_id=[[_FIRST_PARALLEL_ID]]
120
121// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: parallel level 1:
122// CHECK-SAME: parallel_id={{[0-9]+}}
123
124// CHECK: {{^}}[[_1ST_MSTR_TID]]:
125// CHECK-SAME: _first_tool: ompt_event_task_schedule:
126// CHECK-SAME: first_task_id=[[_FIRST_EXPLICIT_TASK_ID]],
127// CHECK-SAME: second_task_id=[[_FIRST_MASTER_IMPLICIT_TASK_ID]],
128// CHECK-SAME: prior_task_status=ompt_task_complete=1
129
130// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: ompt_event_task_end:
131// CHECK-SAME: task_id=[[_FIRST_EXPLICIT_TASK_ID]]
132
133// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool:
134// CHECK-SAME: ompt_event_wait_barrier_implicit_parallel_end:
135// CHECK-SAME: parallel_id=0,
136// CHECK-SAME: task_id=[[_FIRST_MASTER_IMPLICIT_TASK_ID]], codeptr_ra=[[NULL]]
137
138// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool:
139// CHECK-SAME: ompt_event_barrier_implicit_parallel_end:
140// CHECK-SAME: parallel_id=0,
141// CHECK-SAME: task_id=[[_FIRST_MASTER_IMPLICIT_TASK_ID]], codeptr_ra=[[NULL]]
142
143// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: ompt_event_implicit_task_end:
144// CHECK-SAME: parallel_id=0, task_id=[[_FIRST_MASTER_IMPLICIT_TASK_ID]],
145// CHECK-SAME: team_size=2, thread_num=0
146
147// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: ompt_event_parallel_end:
148// CHECK-SAME: parallel_id=[[_FIRST_PARALLEL_ID]],
149// CHECK-SAME: task_id=[[_FIRST_INITIAL_TASK_ID]], invoker
150// CHECK-SAME: codeptr_ra={{(0x)?[0-f]+}}
151
152// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: ompt_event_thread_end:
153// CHECK-SAME: thread_id=[[_1ST_MSTR_TID]]
154
155// CHECK: {{^}}[[_2ND_MSTR_TID:[0-9]+]]: second_tool: ompt_event_thread_begin:
156// CHECK-SAME: thread_type=ompt_thread_initial=1,
157// CHECK-SAME: thread_id=[[_2ND_MSTR_TID]]
158
159// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: ompt_event_initial_task_begin:
160// CHECK-SAME: parallel_id=[[SECOND_INIT_PARALLEL_ID:[0-f]+]],
161// CHECK-SAME: task_id=[[SECOND_INITIAL_TASK_ID:[0-f]+]], actual_parallelism=1,
162// CHECK-SAME: index=1, flags=1
163
164// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: ompt_event_parallel_begin:
165// CHECK-SAME: parent_task_id=[[SECOND_INITIAL_TASK_ID]],
166// CHECK-SAME: parent_task_frame.exit=[[NULL]],
167// CHECK-SAME: parent_task_frame.reenter={{(0x)?[0-f]+}},
168// CHECK-SAME: parallel_id=[[SECOND_PARALLEL_ID:[0-f]+]], requested_team_size=2,
169// CHECK-SAME: codeptr_ra={{(0x)?[0-f]+}}, invoker
170
171// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: ompt_event_implicit_task_begin:
172// CHECK-SAME: parallel_id=[[SECOND_PARALLEL_ID]],
173// CHECK-SAME: task_id=[[SECOND_MASTER_IMPLICIT_TASK_ID:[0-f]+]], team_size=2,
174// CHECK-SAME: thread_num=0
175
176// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: ompt_event_masked_begin:
177// CHECK-SAME: parallel_id=[[SECOND_PARALLEL_ID]],
178// CHECK-SAME: task_id=[[SECOND_MASTER_IMPLICIT_TASK_ID]],
179// CHECK-SAME: codeptr_ra={{(0x)?[0-f]+}}
180
181// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: ompt_event_task_create:
182// CHECK-SAME: parent_task_id=[[SECOND_MASTER_IMPLICIT_TASK_ID]],
183// CHECK-SAME: parent_task_frame.exit={{(0x)?[0-f]+}},
184// CHECK-SAME: parent_task_frame.reenter={{(0x)?[0-f]+}},
185// CHECK-SAME: new_task_id=[[SECOND_EXPLICIT_TASK_ID:[0-f]+]],
186// CHECK-SAME: codeptr_ra={{(0x)?[0-f]+}}, task_type=ompt_task_explicit=4,
187// CHECK-SAME: has_dependences=no
188
189// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: ompt_event_masked_end:
190// CHECK-SAME: parallel_id=[[SECOND_PARALLEL_ID]],
191// CHECK-SAME: task_id=[[SECOND_MASTER_IMPLICIT_TASK_ID]],
192// CHECK-SAME: codeptr_ra={{(0x)?[0-f]+}}
193
194// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool:
195// CHECK-SAME: ompt_event_barrier_implicit_parallel_begin:
196// CHECK-SAME: parallel_id=[[SECOND_PARALLEL_ID]],
197// CHECK-SAME: task_id=[[SECOND_MASTER_IMPLICIT_TASK_ID]],
198// CHECK-SAME: codeptr_ra={{(0x)?[0-f]+}}
199
200// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool:
201// CHECK-SAME: ompt_event_wait_barrier_implicit_parallel_begin:
202// CHECK-SAME: parallel_id=[[SECOND_PARALLEL_ID]],
203// CHECK-SAME: task_id=[[SECOND_MASTER_IMPLICIT_TASK_ID]],
204// CHECK-SAME: codeptr_ra={{(0x)?[0-f]+}}
205
206// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: ompt_event_task_schedule:
207// CHECK-SAME: first_task_id=[[SECOND_MASTER_IMPLICIT_TASK_ID]],
208// CHECK-SAME: second_task_id=[[SECOND_EXPLICIT_TASK_ID]],
209// CHECK-SAME: prior_task_status=ompt_task_switch=7
210
211// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: ompt_event_control_tool:
212// CHECK-SAME: command=5, modifier=1, arg=[[NULL]],
213// CHECK-SAME: codeptr_ra={{(0x)?[0-f]+}}
214
215// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: task level 0:
216// CHECK-SAME: task_id=[[SECOND_EXPLICIT_TASK_ID]]
217
218// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: task level 1:
219// CHECK-SAME: task_id=[[SECOND_MASTER_IMPLICIT_TASK_ID]]
220
221// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: task level 2:
222// CHECK-SAME: task_id=[[SECOND_INITIAL_TASK_ID]]
223
224// CHECK: {{^}}[[_2ND_MSTR_TID]]:
225// CHECK-SAME: second_tool: parallel level 0: parallel_id=[[SECOND_PARALLEL_ID]]
226
227// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: parallel level 1:
228// CHECK-SAME: parallel_id={{[0-9]+}}
229
230// CHECK: {{^}}[[_2ND_MSTR_TID]]:
231// CHECK-SAME: second_tool: ompt_event_task_schedule:
232// CHECK-SAME: first_task_id=[[SECOND_EXPLICIT_TASK_ID]],
233// CHECK-SAME: second_task_id=[[SECOND_MASTER_IMPLICIT_TASK_ID]],
234// CHECK-SAME: prior_task_status=ompt_task_complete=1
235
236// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: ompt_event_task_end:
237// CHECK-SAME: task_id=[[SECOND_EXPLICIT_TASK_ID]]
238
239// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool:
240// CHECK-SAME: ompt_event_wait_barrier_implicit_parallel_end:
241// CHECK-SAME: parallel_id=0,
242// CHECK-SAME: task_id=[[SECOND_MASTER_IMPLICIT_TASK_ID]], codeptr_ra=[[NULL]]
243
244// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool:
245// CHECK-SAME: ompt_event_barrier_implicit_parallel_end:
246// CHECK-SAME: parallel_id=0,
247// CHECK-SAME: task_id=[[SECOND_MASTER_IMPLICIT_TASK_ID]], codeptr_ra=[[NULL]]
248
249// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: ompt_event_implicit_task_end:
250// CHECK-SAME: parallel_id=0,
251// CHECK-SAME: task_id=[[SECOND_MASTER_IMPLICIT_TASK_ID]], team_size=2,
252// CHECK-SAME: thread_num=0
253
254// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: ompt_event_parallel_end:
255// CHECK-SAME: parallel_id=[[SECOND_PARALLEL_ID]],
256// CHECK-SAME: task_id=[[SECOND_INITIAL_TASK_ID]], invoker
257// CHECK-SAME: codeptr_ra={{(0x)?[0-f]+}}
258
259// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: ompt_event_thread_end:
260// CHECK-SAME: thread_id=[[_2ND_MSTR_TID]]
261
262// CHECK: {{^}}[[_1ST_WRKR_TID:[0-9]+]]: _first_tool: ompt_event_thread_begin:
263// CHECK-SAME: thread_type=ompt_thread_worker=2,
264// CHECK-SAME: thread_id=[[_1ST_WRKR_TID]]
265
266// CHECK: {{^}}[[_1ST_WRKR_TID]]: _first_tool: ompt_event_implicit_task_begin:
267// CHECK-SAME: parallel_id=[[_FIRST_PARALLEL_ID]],
268// CHECK-SAME: task_id=[[_FIRST_WORKER_IMPLICIT_TASK_ID:[0-f]+]], team_size=2,
269// CHECK-SAME: thread_num=1
270
271// CHECK: {{^}}[[_1ST_WRKR_TID]]: _first_tool:
272// CHECK-SAME: ompt_event_barrier_implicit_parallel_begin:
273// CHECK-SAME: parallel_id=[[_FIRST_PARALLEL_ID]],
274// CHECK-SAME: task_id=[[_FIRST_WORKER_IMPLICIT_TASK_ID]], codeptr_ra=[[NULL]]
275
276// CHECK: {{^}}[[_1ST_WRKR_TID]]: _first_tool:
277// CHECK-SAME: ompt_event_wait_barrier_implicit_parallel_begin:
278// CHECK-SAME: parallel_id=[[_FIRST_PARALLEL_ID]],
279// CHECK-SAME: task_id=[[_FIRST_WORKER_IMPLICIT_TASK_ID]], codeptr_ra=[[NULL]]
280
281// CHECK: {{^}}[[_1ST_WRKR_TID]]: _first_tool:
282// CHECK-SAME: ompt_event_wait_barrier_implicit_parallel_end:
283// CHECK-SAME: parallel_id=0,
284// CHECK-SAME: task_id=[[_FIRST_WORKER_IMPLICIT_TASK_ID]], codeptr_ra=[[NULL]]
285
286// CHECK: {{^}}[[_1ST_WRKR_TID]]: _first_tool:
287// CHECK-SAME: ompt_event_barrier_implicit_parallel_end:
288// CHECK-SAME: parallel_id=0,
289// CHECK-SAME: task_id=[[_FIRST_WORKER_IMPLICIT_TASK_ID]], codeptr_ra=[[NULL]]
290
291// CHECK: {{^}}[[_1ST_WRKR_TID]]: _first_tool: ompt_event_implicit_task_end:
292// CHECK-SAME: parallel_id=0,
293// CHECK-SAME: task_id=[[_FIRST_WORKER_IMPLICIT_TASK_ID]], team_size=0,
294// thread_num=1
295
296// CHECK: {{^}}[[_1ST_WRKR_TID]]: _first_tool: ompt_event_thread_end:
297// CHECK-SAME: thread_id=[[_1ST_WRKR_TID]]
298
299// CHECK: {{^}}[[_2ND_WRKR_TID:[0-9]+]]: second_tool: ompt_event_thread_begin:
300// CHECK-SAME: thread_type=ompt_thread_worker=2,
301// CHECK-SAME: thread_id=[[_2ND_WRKR_TID]]
302
303// CHECK: {{^}}[[_2ND_WRKR_TID]]: second_tool: ompt_event_implicit_task_begin:
304// CHECK-SAME: parallel_id=[[SECOND_PARALLEL_ID]],
305// CHECK-SAME: task_id=[[SECOND_WORKER_IMPLICIT_TASK_ID:[0-f]+]], team_size=2,
306// CHECK-SAME: thread_num=1
307
308// CHECK: {{^}}[[_2ND_WRKR_TID]]: second_tool:
309// CHECK-SAME: ompt_event_barrier_implicit_parallel_begin:
310// CHECK-SAME: parallel_id=[[SECOND_PARALLEL_ID]],
311// CHECK-SAME: task_id=[[SECOND_WORKER_IMPLICIT_TASK_ID]], codeptr_ra=[[NULL]]
312
313// CHECK: {{^}}[[_2ND_WRKR_TID]]: second_tool:
314// CHECK-SAME: ompt_event_wait_barrier_implicit_parallel_begin:
315// CHECK-SAME: parallel_id=[[SECOND_PARALLEL_ID]],
316// CHECK-SAME: task_id=[[SECOND_WORKER_IMPLICIT_TASK_ID]], codeptr_ra=[[NULL]]
317
318// CHECK: {{^}}[[_2ND_WRKR_TID]]: second_tool:
319// CHECK-SAME: ompt_event_wait_barrier_implicit_parallel_end:
320// CHECK-SAME: parallel_id=0,
321// CHECK-SAME: task_id=[[SECOND_WORKER_IMPLICIT_TASK_ID]], codeptr_ra=[[NULL]]
322
323// CHECK: {{^}}[[_2ND_WRKR_TID]]: second_tool:
324// CHECK-SAME: ompt_event_barrier_implicit_parallel_end:
325// CHECK-SAME: parallel_id=0,
326// CHECK-SAME: task_id=[[SECOND_WORKER_IMPLICIT_TASK_ID]], codeptr_ra=[[NULL]]
327
328// CHECK: {{^}}[[_2ND_WRKR_TID]]: second_tool: ompt_event_implicit_task_end:
329// CHECK-SAME: parallel_id=0,
330// CHECK-SAME: task_id=[[SECOND_WORKER_IMPLICIT_TASK_ID]], team_size=0,
331// CHECK-SAME: thread_num=1
332
333// CHECK: {{^}}[[_2ND_WRKR_TID]]: second_tool: ompt_event_thread_end:
334// CHECK-SAME: thread_id=[[_2ND_WRKR_TID]]
335// clang-format on
336
337#endif /* APP */
int main()
void const char const char int ITT_FORMAT __itt_group_sync s
#define OMPT_WAIT(s, v)
Definition ompt-signal.h:20
#define OMPT_SIGNAL(s)
Definition ompt-signal.h:13