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