LLVM OpenMP 22.0.0git
print.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: PRINT_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
42// clang-format off
43// Check if libomp supports the callbacks for this test.
44// CHECK-NOT: {{^}}0: Could not register callback
45
46// CHECK: {{^}}0: NULL_POINTER=[[NULL:.*$]]
47// CHECK: {{^}}0: NULL_POINTER=[[NULL]]
48// CHECK: {{^}}0: ompt_event_runtime_shutdown
49// CHECK: {{^}}0: ompt_event_runtime_shutdown
50
51// CHECK: {{^}}[[_1ST_MSTR_TID:[0-9]+]]: _first_tool: ompt_event_thread_begin:
52// CHECK-SAME: thread_type=ompt_thread_initial=1, 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]+]],
57// CHECK-SAME: actual_parallelism=1, index=1, flags=1
58
59// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: ompt_event_parallel_begin:
60// CHECK-SAME: parent_task_id=[[_FIRST_INITIAL_TASK_ID]],
61// CHECK-SAME: parent_task_frame.exit=[[NULL]],
62// CHECK-SAME: parent_task_frame.reenter={{(0x)?[0-f]+}},
63// CHECK-SAME: parallel_id=[[_FIRST_PARALLEL_ID:[0-f]+]],
64// CHECK-SAME: requested_team_size=2, codeptr_ra={{(0x)?[0-f]+}}, invoker
65
66// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: ompt_event_implicit_task_begin:
67// CHECK-SAME: parallel_id=[[_FIRST_PARALLEL_ID]],
68// CHECK-SAME: task_id=[[_FIRST_MASTER_IMPLICIT_TASK_ID:[0-f]+]], team_size=2,
69// CHECK-SAME: thread_num=0
70
71// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: ompt_event_masked_begin:
72// CHECK-SAME: parallel_id=[[_FIRST_PARALLEL_ID]],
73// CHECK-SAME: task_id=[[_FIRST_MASTER_IMPLICIT_TASK_ID]],
74// CHECK-SAME: codeptr_ra={{(0x)?[0-f]+}}
75
76// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: ompt_event_task_create:
77// CHECK-SAME: parent_task_id=[[_FIRST_MASTER_IMPLICIT_TASK_ID]],
78// CHECK-SAME: parent_task_frame.exit={{(0x)?[0-f]+}},
79// CHECK-SAME: parent_task_frame.reenter={{(0x)?[0-f]+}},
80// CHECK-SAME: new_task_id=[[_FIRST_EXPLICIT_TASK_ID:[0-f]+]],
81// CHECK-SAME: codeptr_ra={{(0x)?[0-f]+}}, task_type=ompt_task_explicit=4,
82// CHECK-SAME: has_dependences=no
83
84// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: ompt_event_masked_end:
85// CHECK-SAME: parallel_id=[[_FIRST_PARALLEL_ID]],
86// CHECK-SAME: task_id=[[_FIRST_MASTER_IMPLICIT_TASK_ID]],
87// CHECK-SAME: codeptr_ra={{(0x)?[0-f]+}}
88
89// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool:
90// CHECK-SAME: ompt_event_barrier_implicit_parallel_begin:
91// CHECK-SAME: parallel_id=[[_FIRST_PARALLEL_ID]],
92// CHECK-SAME: task_id=[[_FIRST_MASTER_IMPLICIT_TASK_ID]],
93// CHECK-SAME: codeptr_ra={{(0x)?[0-f]+}}
94
95// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool:
96// CHECK-SAME: ompt_event_wait_barrier_implicit_parallel_begin:
97// CHECK-SAME: parallel_id=[[_FIRST_PARALLEL_ID]],
98// CHECK-SAME: task_id=[[_FIRST_MASTER_IMPLICIT_TASK_ID]],
99// CHECK-SAME: codeptr_ra={{(0x)?[0-f]+}}
100
101// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: ompt_event_task_schedule:
102// CHECK-SAME: first_task_id=[[_FIRST_MASTER_IMPLICIT_TASK_ID]],
103// CHECK-SAME: second_task_id=[[_FIRST_EXPLICIT_TASK_ID]],
104// CHECK-SAME: prior_task_status=ompt_task_switch=7
105
106// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: ompt_event_control_tool:
107// CHECK-SAME: command=5, modifier=1, arg=[[NULL]], 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]]: _first_tool: parallel level 0:
119// CHECK-SAME: 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]]: _first_tool: ompt_event_task_schedule:
125// CHECK-SAME: first_task_id=[[_FIRST_EXPLICIT_TASK_ID]],
126// CHECK-SAME: second_task_id=[[_FIRST_MASTER_IMPLICIT_TASK_ID]],
127// CHECK-SAME: prior_task_status=ompt_task_complete=1
128
129// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: ompt_event_task_end:
130// CHECK-SAME: task_id=[[_FIRST_EXPLICIT_TASK_ID]]
131
132// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool:
133// CHECK-SAME: ompt_event_wait_barrier_implicit_parallel_end:
134// CHECK-SAME: parallel_id=0, task_id=[[_FIRST_MASTER_IMPLICIT_TASK_ID]],
135// CHECK-SAME: codeptr_ra=[[NULL]]
136
137// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool:
138// CHECK-SAME: ompt_event_barrier_implicit_parallel_end:
139// CHECK-SAME: parallel_id=0, task_id=[[_FIRST_MASTER_IMPLICIT_TASK_ID]],
140// CHECK-SAME: codeptr_ra=[[NULL]]
141
142// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: ompt_event_implicit_task_end:
143// CHECK-SAME: parallel_id=0, task_id=[[_FIRST_MASTER_IMPLICIT_TASK_ID]],
144// CHECK-SAME: team_size=2, thread_num=0
145
146// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: ompt_event_parallel_end:
147// CHECK-SAME: parallel_id=[[_FIRST_PARALLEL_ID]],
148// CHECK-SAME: task_id=[[_FIRST_INITIAL_TASK_ID]], invoker
149// CHECK-SAME: codeptr_ra={{(0x)?[0-f]+}}
150
151// CHECK: {{^}}[[_1ST_MSTR_TID]]: _first_tool: ompt_event_thread_end:
152// CHECK-SAME: thread_id=[[_1ST_MSTR_TID]]
153// CHECK: {{^}}[[_2ND_MSTR_TID:[0-9]+]]: second_tool: ompt_event_thread_begin:
154// CHECK-SAME: thread_type=ompt_thread_initial=1, 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-f]+]],
158// CHECK-SAME: task_id=[[SECOND_INITIAL_TASK_ID:[0-f]+]],
159// CHECK-SAME: actual_parallelism=1, 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=[[NULL]],
164// CHECK-SAME: parent_task_frame.reenter={{(0x)?[0-f]+}},
165// CHECK-SAME: parallel_id=[[SECOND_PARALLEL_ID:[0-f]+]],
166// CHECK-SAME: requested_team_size=2, 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-f]+]], 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-f]+]],
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=[[NULL]], codeptr_ra={{(0x)?[0-f]+}}
210
211// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: task level 0:
212// CHECK-SAME: task_id=[[SECOND_EXPLICIT_TASK_ID]]
213
214// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: task level 1:
215// CHECK-SAME: task_id=[[SECOND_MASTER_IMPLICIT_TASK_ID]]
216
217// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: task level 2:
218// CHECK-SAME: task_id=[[SECOND_INITIAL_TASK_ID]]
219
220// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: parallel level 0:
221// CHECK-SAME: parallel_id=[[SECOND_PARALLEL_ID]]
222
223// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: parallel level 1:
224// CHECK-SAME: parallel_id={{[0-9]+}}
225
226// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: ompt_event_task_schedule:
227// CHECK-SAME: first_task_id=[[SECOND_EXPLICIT_TASK_ID]],
228// CHECK-SAME: second_task_id=[[SECOND_MASTER_IMPLICIT_TASK_ID]],
229// CHECK-SAME: prior_task_status=ompt_task_complete=1
230
231// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: ompt_event_task_end:
232// CHECK-SAME: task_id=[[SECOND_EXPLICIT_TASK_ID]]
233
234// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool:
235// CHECK-SAME: ompt_event_wait_barrier_implicit_parallel_end:
236// CHECK-SAME: parallel_id=0, task_id=[[SECOND_MASTER_IMPLICIT_TASK_ID]],
237// CHECK-SAME: codeptr_ra=[[NULL]]
238
239// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool:
240// CHECK-SAME: ompt_event_barrier_implicit_parallel_end:
241// CHECK-SAME: parallel_id=0, task_id=[[SECOND_MASTER_IMPLICIT_TASK_ID]],
242// CHECK-SAME: codeptr_ra=[[NULL]]
243
244// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: ompt_event_implicit_task_end:
245// CHECK-SAME: parallel_id=0, task_id=[[SECOND_MASTER_IMPLICIT_TASK_ID]],
246// CHECK-SAME: team_size=2, thread_num=0
247
248// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: ompt_event_parallel_end:
249// CHECK-SAME: parallel_id=[[SECOND_PARALLEL_ID]],
250// CHECK-SAME: task_id=[[SECOND_INITIAL_TASK_ID]], invoker
251// CHECK-SAME: codeptr_ra={{(0x)?[0-f]+}}
252
253// CHECK: {{^}}[[_2ND_MSTR_TID]]: second_tool: ompt_event_thread_end:
254// CHECK-SAME: thread_id=[[_2ND_MSTR_TID]]
255
256// CHECK: {{^}}[[_1ST_WRKR_TID:[0-9]+]]: _first_tool: ompt_event_thread_begin:
257// CHECK-SAME: thread_type=ompt_thread_worker=2, thread_id=[[_1ST_WRKR_TID]]
258
259// CHECK: {{^}}[[_1ST_WRKR_TID]]: _first_tool: ompt_event_implicit_task_begin:
260// CHECK-SAME: parallel_id=[[_FIRST_PARALLEL_ID]],
261// CHECK-SAME: task_id=[[_FIRST_WORKER_IMPLICIT_TASK_ID:[0-f]+]], team_size=2,
262// CHECK-SAME: thread_num=1
263
264// CHECK: {{^}}[[_1ST_WRKR_TID]]: _first_tool:
265// CHECK-SAME: ompt_event_barrier_implicit_parallel_begin:
266// CHECK-SAME: parallel_id=[[_FIRST_PARALLEL_ID]],
267// CHECK-SAME: task_id=[[_FIRST_WORKER_IMPLICIT_TASK_ID]], codeptr_ra=[[NULL]]
268
269// CHECK: {{^}}[[_1ST_WRKR_TID]]: _first_tool:
270// CHECK-SAME: ompt_event_wait_barrier_implicit_parallel_begin:
271// CHECK-SAME: parallel_id=[[_FIRST_PARALLEL_ID]],
272// CHECK-SAME: task_id=[[_FIRST_WORKER_IMPLICIT_TASK_ID]], codeptr_ra=[[NULL]]
273
274// CHECK: {{^}}[[_1ST_WRKR_TID]]: _first_tool:
275// CHECK-SAME: ompt_event_wait_barrier_implicit_parallel_end:
276// CHECK-SAME: parallel_id=0, task_id=[[_FIRST_WORKER_IMPLICIT_TASK_ID]],
277// CHECK-SAME: codeptr_ra=[[NULL]]
278
279// CHECK: {{^}}[[_1ST_WRKR_TID]]: _first_tool:
280// CHECK-SAME: ompt_event_barrier_implicit_parallel_end:
281// CHECK-SAME: parallel_id=0, task_id=[[_FIRST_WORKER_IMPLICIT_TASK_ID]],
282// CHECK-SAME: codeptr_ra=[[NULL]]
283
284// CHECK: {{^}}[[_1ST_WRKR_TID]]: _first_tool: ompt_event_implicit_task_end:
285// CHECK-SAME: parallel_id=0, task_id=[[_FIRST_WORKER_IMPLICIT_TASK_ID]],
286// CHECK-SAME: team_size=0, thread_num=1
287
288// CHECK: {{^}}[[_1ST_WRKR_TID]]: _first_tool: ompt_event_thread_end:
289// CHECK-SAME: thread_id=[[_1ST_WRKR_TID]]
290
291// CHECK: {{^}}[[_2ND_WRKR_TID:[0-9]+]]: second_tool: ompt_event_thread_begin:
292// CHECK-SAME: thread_type=ompt_thread_worker=2,
293// CHECK-SAME: thread_id=[[_2ND_WRKR_TID]]
294
295// CHECK: {{^}}[[_2ND_WRKR_TID]]: second_tool: ompt_event_implicit_task_begin:
296// CHECK-SAME: parallel_id=[[SECOND_PARALLEL_ID]],
297// CHECK-SAME: task_id=[[SECOND_WORKER_IMPLICIT_TASK_ID:[0-f]+]],
298// CHECK-SAME: team_size=2, thread_num=1
299
300// CHECK: {{^}}[[_2ND_WRKR_TID]]: second_tool:
301// CHECK-SAME: ompt_event_barrier_implicit_parallel_begin:
302// CHECK-SAME: parallel_id=[[SECOND_PARALLEL_ID]],
303// CHECK-SAME: task_id=[[SECOND_WORKER_IMPLICIT_TASK_ID]], codeptr_ra=[[NULL]]
304
305// CHECK: {{^}}[[_2ND_WRKR_TID]]: second_tool:
306// CHECK-SAME: ompt_event_wait_barrier_implicit_parallel_begin:
307// CHECK-SAME: parallel_id=[[SECOND_PARALLEL_ID]],
308// CHECK-SAME: task_id=[[SECOND_WORKER_IMPLICIT_TASK_ID]], codeptr_ra=[[NULL]]
309
310// CHECK: {{^}}[[_2ND_WRKR_TID]]: second_tool:
311// CHECK-SAME: ompt_event_wait_barrier_implicit_parallel_end:
312// CHECK-SAME: parallel_id=0, task_id=[[SECOND_WORKER_IMPLICIT_TASK_ID]],
313// CHECK-SAME: codeptr_ra=[[NULL]]
314
315// CHECK: {{^}}[[_2ND_WRKR_TID]]: second_tool:
316// CHECK-SAME: ompt_event_barrier_implicit_parallel_end:
317// CHECK-SAME: parallel_id=0, task_id=[[SECOND_WORKER_IMPLICIT_TASK_ID]],
318// CHECK-SAME: codeptr_ra=[[NULL]]
319
320// CHECK: {{^}}[[_2ND_WRKR_TID]]: second_tool: ompt_event_implicit_task_end:
321// CHECK-SAME: parallel_id=0, task_id=[[SECOND_WORKER_IMPLICIT_TASK_ID]],
322// CHECK-SAME: team_size=0, thread_num=1
323
324// CHECK: {{^}}[[_2ND_WRKR_TID]]: second_tool: ompt_event_thread_end:
325// CHECK-SAME: thread_id=[[_2ND_WRKR_TID]]
326// clang-format on
327
328#endif /* APP */
void const char const char int ITT_FORMAT __itt_group_sync s
int main()
Definition print.c:24
#define OMPT_WAIT(s, v)
Definition ompt-signal.h:20
#define OMPT_SIGNAL(s)
Definition ompt-signal.h:13