LLVM OpenMP
22.0.0git
tools
multiplex
tests
custom_data_storage
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
24
int
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);
33
OMPT_SIGNAL
(
s
);
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 */
first-tool.h
second-tool.h
main
int main()
Definition
custom_data_storage.c:24
s
void const char const char int ITT_FORMAT __itt_group_sync s
Definition
ittnotify_static.h:154
OMPT_WAIT
#define OMPT_WAIT(s, v)
Definition
ompt-signal.h:20
OMPT_SIGNAL
#define OMPT_SIGNAL(s)
Definition
ompt-signal.h:13
ompt-signal.h
Generated on
for LLVM OpenMP by
1.14.0