xref: /llvm-project/openmp/tools/multiplex/tests/custom_data_storage/custom_data_storage.c (revision 7a72856af8b30f50e546b8368596fdc5f44cbca9)
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 
22 int 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);
31         OMPT_SIGNAL(s);
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 */
334