LLVM OpenMP
22.0.0git
runtime
test
ompt
parallel
nested_thread_num.c
Go to the documentation of this file.
1
// clang-format off
2
// RUN: %libomp-compile-and-run | FileCheck %s
3
// RUN: %libomp-compile-and-run | %sort-threads | FileCheck --check-prefix=THREADS %s
4
// REQUIRES: ompt
5
// UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
6
// clang-format on
7
#define TEST_NEED_PRINT_FRAME_FROM_OUTLINED_FN
8
#include "
callback.h
"
9
#include <omp.h>
10
#include <unistd.h>
11
12
int
main
() {
13
int
condition
= 0;
14
omp_set_nested
(1);
15
print_frame
(0);
16
17
#pragma omp parallel num_threads(2)
18
{
19
print_frame_from_outlined_fn(1);
20
print_ids
(0);
21
print_ids
(1);
22
print_frame
(0);
23
24
// get all implicit task events before starting nested:
25
#pragma omp barrier
26
27
#pragma omp parallel num_threads(2)
28
{
29
print_frame_from_outlined_fn(1);
30
print_ids
(0);
31
print_ids
(1);
32
print_ids
(2);
33
print_frame
(0);
34
OMPT_SIGNAL
(
condition
);
35
OMPT_WAIT
(
condition
, 4);
36
#pragma omp barrier
37
print_fuzzy_address
(1);
38
print_ids
(0);
39
}
40
print_fuzzy_address
(2);
41
print_ids
(0);
42
}
43
print_fuzzy_address
(3);
44
45
return
0;
46
}
47
// clang-format off
48
// Check if libomp supports the callbacks for this test.
49
// CHECK-NOT: {{^}}0: Could not register callback
50
51
// CHECK: 0: NULL_POINTER=[[NULL:.*$]]
52
53
// make sure initial data pointers are null
54
// CHECK-NOT: 0: parallel_data initially not null
55
// CHECK-NOT: 0: task_data initially not null
56
// CHECK-NOT: 0: thread_data initially not null
57
58
// CHECK: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_parallel_begin:
59
// CHECK-SAME: parent_task_id=[[PARENT_TASK_ID:[0-f]+]],
60
// CHECK-SAME: parent_task_frame.exit=[[NULL]],
61
// CHECK-SAME: parent_task_frame.reenter={{(0x)?[0-f]+}},
62
// CHECK-SAME: parallel_id=[[PARALLEL_ID:[0-f]+]],
63
// CHECK-SAME: requested_team_size=2,
64
// CHECK-SAME: codeptr_ra=[[RETURN_ADDRESS:(0x)?[0-f]+]]{{[0-f][0-f]}},
65
// CHECK-SAME: invoker=[[PARALLEL_INVOKER:[0-9]+]]
66
67
// CHECK-DAG: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_begin:
68
// CHECK-DAG: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_end:
69
70
// Note that we cannot ensure that the worker threads have already called
71
// barrier_end and implicit_task_end before parallel_end!
72
73
// CHECK-DAG: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_implicit_task_begin:
74
// CHECK-DAG: {{^}}[[THREAD_ID]]: ompt_event_barrier_implicit_parallel_begin:
75
76
// CHECK: ompt_event_parallel_end: parallel_id=[[PARALLEL_ID]],
77
// CHECK-SAME: task_id=[[PARENT_TASK_ID]], invoker=[[PARALLEL_INVOKER]]
78
// CHECK: {{^}}[[MASTER_ID]]: fuzzy_address={{.*}}[[RETURN_ADDRESS]]
79
80
// THREADS: {{^}}0: NULL_POINTER=[[NULL:.*$]]
81
// THREADS: __builtin_frame_address(0)=[[MAIN_REENTER:(0x)?[0-f]+]]
82
// THREADS: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_parallel_begin:
83
// THREADS-SAME: parent_task_id=[[PARENT_TASK_ID:[0-f]+]],
84
// THREADS-SAME: parent_task_frame.exit=[[NULL]],
85
// THREADS-SAME: parent_task_frame.reenter={{(0x)?[0-f]+}},
86
// THREADS-SAME: parallel_id=[[PARALLEL_ID:[0-f]+]], requested_team_size=2,
87
// THREADS-SAME: codeptr_ra=[[RETURN_ADDRESS:(0x)?[0-f]+]]{{[0-f][0-f]}},
88
// THREADS-SAME: invoker=[[PARALLEL_INVOKER:[0-9]+]]
89
90
// nested parallel masters
91
// THREADS: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_begin:
92
// THREADS-SAME: parallel_id=[[PARALLEL_ID]],
93
// THREADS-SAME: task_id=[[IMPLICIT_TASK_ID:[0-f]+]],
94
// THREADS-SAME: team_size=2, thread_num=0
95
96
// THREADS: __builtin_frame_address({{.}})=[[EXIT:(0x)?[0-f]+]]
97
98
// THREADS: {{^}}[[MASTER_ID]]: task level 0: parallel_id=[[PARALLEL_ID]],
99
// THREADS-SAME: task_id=[[IMPLICIT_TASK_ID]], exit_frame=[[EXIT]],
100
// THREADS-SAME: reenter_frame=[[NULL]],
101
// THREADS-SAME: thread_num=0
102
103
// THREADS: {{^}}[[MASTER_ID]]: task level 1:
104
// THREADS-SAME: parallel_id=[[IMPLICIT_PARALLEL_ID:[0-f]+]],
105
// THREADS-SAME: task_id=[[PARENT_TASK_ID]], exit_frame=[[NULL]],
106
// THREADS-SAME: reenter_frame={{(0x)?[0-f]+}}
107
108
// THREADS: __builtin_frame_address(0)=[[REENTER:(0x)?[0-f]+]]
109
110
// THREADS: {{^}}[[MASTER_ID]]: ompt_event_parallel_begin:
111
// THREADS-SAME: parent_task_id=[[IMPLICIT_TASK_ID]],
112
// THREADS-SAME: parent_task_frame.exit=[[EXIT]],
113
// THREADS-SAME: parent_task_frame.reenter={{(0x)?[0-f]+}},
114
// THREADS-SAME: parallel_id=[[NESTED_PARALLEL_ID:[0-f]+]],
115
// THREADS-SAME: requested_team_size=2,
116
// THREADS-SAME: codeptr_ra=[[NESTED_RETURN_ADDRESS:(0x)?[0-f]+]]{{[0-f][0-f]}},
117
// THREADS-SAME: invoker=[[PARALLEL_INVOKER]]
118
119
// THREADS: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_begin:
120
// THREADS-SAME: parallel_id=[[NESTED_PARALLEL_ID]],
121
// THREADS-SAME: task_id=[[NESTED_IMPLICIT_TASK_ID:[0-f]+]], team_size=2,
122
// THREADS-SAME: thread_num=0
123
124
// THREADS: __builtin_frame_address({{.}})=[[NESTED_EXIT:(0x)?[0-f]+]]
125
126
// THREADS: {{^}}[[MASTER_ID]]: task level 0:
127
// THREADS-SAME: parallel_id=[[NESTED_PARALLEL_ID]],
128
// THREADS-SAME: task_id=[[NESTED_IMPLICIT_TASK_ID]],
129
// THREADS-SAME: exit_frame=[[NESTED_EXIT]], reenter_frame=[[NULL]],
130
// THREADS-SAME: thread_num=0
131
132
// THREADS: {{^}}[[MASTER_ID]]: task level 1: parallel_id=[[PARALLEL_ID]],
133
// THREADS-SAME: task_id=[[IMPLICIT_TASK_ID]], exit_frame=[[EXIT]],
134
// THREADS-SAME: reenter_frame={{(0x)?[0-f]+}}
135
136
// THREADS: {{^}}[[MASTER_ID]]: task level 2:
137
// THREADS-SAME: parallel_id=[[IMPLICIT_PARALLEL_ID]],
138
// THREADS-SAME: task_id=[[PARENT_TASK_ID]], exit_frame=[[NULL]],
139
// THREADS-SAME: reenter_frame={{(0x)?[0-f]+}}
140
141
// THREADS: __builtin_frame_address(0)=[[NESTED_REENTER:(0x)?[0-f]+]]
142
143
// THREADS-NOT: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_end
144
// explicit barrier
145
146
// THREADS: {{^}}[[MASTER_ID]]: ompt_event_barrier_explicit_begin:
147
// THREADS-SAME: parallel_id=[[NESTED_PARALLEL_ID]],
148
// THREADS-SAME: task_id=[[NESTED_IMPLICIT_TASK_ID]],
149
// THREADS-SAME: codeptr_ra=[[BARRIER_RETURN_ADDRESS:(0x)?[0-f]+]]{{[0-f][0-f]}}
150
151
// THREADS: {{^}}[[MASTER_ID]]: task level 0:
152
// THREADS-SAME: parallel_id=[[NESTED_PARALLEL_ID]],
153
// THREADS-SAME: task_id=[[NESTED_IMPLICIT_TASK_ID]],
154
// THREADS-SAME: exit_frame=[[NESTED_EXIT]], reenter_frame={{(0x)?[0-f]+}}
155
156
// THREADS: {{^}}[[MASTER_ID]]: ompt_event_barrier_explicit_end:
157
// THREADS-SAME: parallel_id=[[NESTED_PARALLEL_ID]],
158
// THREADS-SAME: task_id=[[NESTED_IMPLICIT_TASK_ID]]
159
160
// THREADS: {{^}}[[MASTER_ID]]: fuzzy_address={{.*}}[[BARRIER_RETURN_ADDRESS]]
161
162
// THREADS: {{^}}[[MASTER_ID]]: task level 0:
163
// THREADS-SAME: parallel_id=[[NESTED_PARALLEL_ID]],
164
// THREADS-SAME: task_id=[[NESTED_IMPLICIT_TASK_ID]],
165
// THREADS-SAME: exit_frame=[[NESTED_EXIT]], reenter_frame=[[NULL]]
166
167
// implicit barrier
168
// THREADS: {{^}}[[MASTER_ID]]: ompt_event_barrier_implicit_parallel_begin:
169
// THREADS-SAME: parallel_id=[[NESTED_PARALLEL_ID]],
170
// THREADS-SAME: task_id=[[NESTED_IMPLICIT_TASK_ID]],
171
// THREADS-SAME: codeptr_ra=[[NESTED_RETURN_ADDRESS]]{{[0-f][0-f]}}
172
173
// THREADS: {{^}}[[MASTER_ID]]: task level 0:
174
// THREADS-SAME: parallel_id=[[NESTED_PARALLEL_ID]],
175
// THREADS-SAME: task_id=[[NESTED_IMPLICIT_TASK_ID]],
176
// THREADS-SAME: exit_frame=[[NULL]], reenter_frame=[[NULL]]
177
178
// THREADS: {{^}}[[MASTER_ID]]: ompt_event_barrier_implicit_parallel_end:
179
// THREADS-SAME: parallel_id={{[0-f]+}}, task_id=[[NESTED_IMPLICIT_TASK_ID]],
180
// THREADS-SAME: codeptr_ra=[[NESTED_RETURN_ADDRESS]]{{[0-f][0-f]}}
181
182
// THREADS: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_end:
183
// THREADS-SAME: parallel_id={{[0-f]+}}, task_id=[[NESTED_IMPLICIT_TASK_ID]]
184
185
// THREADS: {{^}}[[MASTER_ID]]: ompt_event_parallel_end:
186
// THREADS-SAME: parallel_id=[[NESTED_PARALLEL_ID]],
187
// THREADS-SAME: task_id=[[IMPLICIT_TASK_ID]],
188
// THREADS-SAME: invoker=[[PARALLEL_INVOKER]],
189
// THREADS-SAME: codeptr_ra=[[NESTED_RETURN_ADDRESS]]{{[0-f][0-f]}}
190
191
// THREADS: {{^}}[[MASTER_ID]]: fuzzy_address={{.*}}[[NESTED_RETURN_ADDRESS]]
192
193
// THREADS-NOT: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_end
194
195
// THREADS: {{^}}[[MASTER_ID]]: task level 0: parallel_id=[[PARALLEL_ID]],
196
// THREADS-SAME: task_id=[[IMPLICIT_TASK_ID]], exit_frame=[[EXIT]],
197
// THREADS-SAME: reenter_frame=[[NULL]]
198
199
// implicit barrier
200
// THREADS: {{^}}[[MASTER_ID]]: ompt_event_barrier_implicit_parallel_begin:
201
// THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]],
202
// THREADS-SAME: codeptr_ra=[[RETURN_ADDRESS]]{{[0-f][0-f]}}
203
204
// THREADS: {{^}}[[MASTER_ID]]: task level 0: parallel_id=[[PARALLEL_ID]],
205
// THREADS-SAME: task_id=[[IMPLICIT_TASK_ID]], exit_frame=[[NULL]],
206
// THREADS-SAME: reenter_frame=[[NULL]]
207
208
// THREADS: {{^}}[[MASTER_ID]]: ompt_event_barrier_implicit_parallel_end:
209
// THREADS-SAME: parallel_id={{[0-f]+}}, task_id=[[IMPLICIT_TASK_ID]],
210
// THREADS-SAME: codeptr_ra=[[RETURN_ADDRESS]]{{[0-f][0-f]}}
211
212
// THREADS: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_end:
213
// THREADS-SAME: parallel_id={{[0-f]+}}, task_id=[[IMPLICIT_TASK_ID]]
214
215
// THREADS: {{^}}[[MASTER_ID]]: ompt_event_parallel_end:
216
// THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[PARENT_TASK_ID]],
217
// THREADS-SAME: invoker=[[PARALLEL_INVOKER]],
218
// THREADS-SAME: codeptr_ra=[[RETURN_ADDRESS]]{{[0-f][0-f]}}
219
220
// THREADS: {{^}}[[MASTER_ID]]: fuzzy_address={{.*}}[[RETURN_ADDRESS]]
221
222
// Worker of first nesting level
223
224
// THREADS: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_implicit_task_begin:
225
// THREADS-SAME: parallel_id=[[PARALLEL_ID]],
226
// THREADS-SAME: task_id=[[IMPLICIT_TASK_ID:[0-f]+]], team_size=2,
227
// THREADS-SAME: thread_num=[[OUTER_THREADNUM:[0-9]+]]
228
229
// THREADS: {{^}}[[THREAD_ID]]: task level 0: parallel_id=[[PARALLEL_ID]],
230
// THREADS-SAME: task_id=[[IMPLICIT_TASK_ID]],
231
// THREADS-SAME: thread_num=[[OUTER_THREADNUM]]
232
233
// THREADS: {{^}}[[THREAD_ID]]: task level 1:
234
// THREADS-SAME: parallel_id=[[IMPLICIT_PARALLEL_ID]],
235
// THREADS-SAME: task_id=[[PARENT_TASK_ID]]
236
237
// THREADS: {{^}}[[THREAD_ID]]: ompt_event_parallel_begin:
238
// THREADS-SAME: parent_task_id=[[IMPLICIT_TASK_ID]],
239
// THREADS-SAME: parent_task_frame.exit={{(0x)?[0-f]+}},
240
// THREADS-SAME: parent_task_frame.reenter={{(0x)?[0-f]+}},
241
// THREADS-SAME: parallel_id=[[NESTED_PARALLEL_ID:[0-f]+]], requested_team_size=2,
242
// THREADS-SAME: codeptr_ra=[[NESTED_RETURN_ADDRESS]]{{[0-f][0-f]}},
243
// THREADS-SAME: invoker=[[PARALLEL_INVOKER]]
244
245
// THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_begin:
246
// THREADS-SAME: parallel_id=[[NESTED_PARALLEL_ID]],
247
// THREADS-SAME: task_id=[[NESTED_IMPLICIT_TASK_ID:[0-f]+]], team_size=2,
248
// THREADS-SAME: thread_num=[[INNER_THREADNUM:[0-9]+]]
249
250
// THREADS: {{^}}[[THREAD_ID]]: task level 0:
251
// THREADS-SAME: parallel_id=[[NESTED_PARALLEL_ID]],
252
// THREADS-SAME: task_id=[[NESTED_IMPLICIT_TASK_ID]],
253
// THREADS-SAME: thread_num=[[INNER_THREADNUM]]
254
255
// THREADS: {{^}}[[THREAD_ID]]: task level 1: parallel_id=[[PARALLEL_ID]],
256
// THREADS-SAME: task_id=[[IMPLICIT_TASK_ID]],
257
// THREADS-SAME: thread_num=[[OUTER_THREADNUM]]
258
259
// THREADS: {{^}}[[THREAD_ID]]: task level 2:
260
// THREADS-SAME: parallel_id=[[IMPLICIT_PARALLEL_ID]],
261
// THREADS-SAME: task_id=[[PARENT_TASK_ID]]
262
263
// THREADS-NOT: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_end
264
265
// THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_implicit_parallel_begin:
266
// THREADS-SAME: parallel_id=[[NESTED_PARALLEL_ID]],
267
// THREADS-SAME: task_id=[[NESTED_IMPLICIT_TASK_ID]]
268
269
// THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_implicit_parallel_end:
270
// THREADS-SAME: parallel_id={{[0-f]+}}, task_id=[[NESTED_IMPLICIT_TASK_ID]]
271
272
// THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_end:
273
// THREADS-SAME: parallel_id={{[0-f]+}}, task_id=[[NESTED_IMPLICIT_TASK_ID]]
274
275
// THREADS: {{^}}[[THREAD_ID]]: ompt_event_parallel_end:
276
// THREADS-SAME: parallel_id=[[NESTED_PARALLEL_ID]],
277
// THREADS-SAME: task_id=[[IMPLICIT_TASK_ID]], invoker=[[PARALLEL_INVOKER]]
278
279
// THREADS-NOT: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_end
280
281
// THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_implicit_parallel_begin:
282
// THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
283
284
// THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_implicit_parallel_end:
285
// THREADS-SAME: parallel_id={{[0-f]+}}, task_id=[[IMPLICIT_TASK_ID]]
286
287
// THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_end:
288
// THREADS-SAME: parallel_id={{[0-f]+}}, task_id=[[IMPLICIT_TASK_ID]]
289
290
// nested parallel worker threads
291
292
// THREADS: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_implicit_task_begin:
293
// THREADS-SAME: parallel_id=[[NESTED_PARALLEL_ID:[0-f]+]],
294
// THREADS-SAME: task_id=[[IMPLICIT_TASK_ID:[0-f]+]]
295
// THREADS-SAME: thread_num=[[THREADNUM:[0-9]+]]
296
297
// THREADS: {{^}}[[THREAD_ID]]: task level 0:
298
// THREADS-SAME: parallel_id=[[NESTED_PARALLEL_ID]],
299
// THREADS-SAME: task_id=[[IMPLICIT_TASK_ID]]
300
// THREADS-SAME: thread_num=[[THREADNUM]]
301
302
// can't reliably tell which parallel region is the parent...
303
304
// THREADS: {{^}}[[THREAD_ID]]: task level 1: parallel_id={{[0-f]+}},
305
// THREADS-SAME: task_id={{[0-f]+}}
306
// THREADS-SAME: thread_num={{[01]}}
307
308
// THREADS: {{^}}[[THREAD_ID]]: task level 2:
309
// THREADS-SAME: parallel_id=[[IMPLICIT_PARALLEL_ID]],
310
// THREADS-SAME: task_id=[[PARENT_TASK_ID]]
311
// THREADS-SAME: thread_num=0
312
313
// THREADS-NOT: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_end
314
315
// THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_implicit_parallel_begin:
316
// THREADS-SAME: parallel_id=[[NESTED_PARALLEL_ID]],
317
// THREADS-SAME: task_id=[[IMPLICIT_TASK_ID]]
318
319
// THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_implicit_parallel_end:
320
// THREADS-SAME: parallel_id={{[0-f]+}}, task_id=[[IMPLICIT_TASK_ID]]
321
322
// THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_end:
323
// THREADS-SAME: parallel_id={{[0-f]+}}, task_id=[[IMPLICIT_TASK_ID]]
324
325
// other nested parallel worker threads
326
327
// THREADS: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_implicit_task_begin:
328
// THREADS-SAME: parallel_id=[[NESTED_PARALLEL_ID:[0-f]+]],
329
// THREADS-SAME: task_id=[[IMPLICIT_TASK_ID:[0-f]+]]
330
// THREADS-SAME: thread_num=[[THREADNUM:[0-9]+]]
331
332
// THREADS: {{^}}[[THREAD_ID]]: task level 0:
333
// THREADS-SAME: parallel_id=[[NESTED_PARALLEL_ID]],
334
// THREADS-SAME: task_id=[[IMPLICIT_TASK_ID]]
335
// THREADS-SAME: thread_num=[[THREADNUM]]
336
337
// can't reliably tell which parallel region is the parent...
338
339
// THREADS: {{^}}[[THREAD_ID]]: task level 1: parallel_id={{[0-f]+}},
340
// THREADS-SAME: task_id={{[0-f]+}}
341
// THREADS-SAME: thread_num={{[01]}}
342
343
// THREADS: {{^}}[[THREAD_ID]]: task level 2:
344
// THREADS-SAME: parallel_id=[[IMPLICIT_PARALLEL_ID]],
345
// THREADS-SAME: task_id=[[PARENT_TASK_ID]]
346
// THREADS-SAME: thread_num=0
347
348
// THREADS-NOT: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_end
349
350
// THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_implicit_parallel_begin:
351
// THREADS-SAME: parallel_id=[[NESTED_PARALLEL_ID]],
352
// THREADS-SAME: task_id=[[IMPLICIT_TASK_ID]]
353
354
// THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_implicit_parallel_end:
355
// THREADS-SAME: parallel_id={{[0-f]+}}, task_id=[[IMPLICIT_TASK_ID]]
356
357
// THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_end:
358
// THREADS-SAME: parallel_id={{[0-f]+}}, task_id=[[IMPLICIT_TASK_ID]]
359
// clang-format on
callback.h
print_frame
#define print_frame(level)
Definition
callback.h:210
print_fuzzy_address
#define print_fuzzy_address(id)
Definition
callback.h:360
print_ids
static void print_ids(int level)
Definition
callback.h:187
condition
int condition
Definition
interoperability.cpp:17
omp_set_nested
#define omp_set_nested
Definition
kmp_stub.cpp:36
main
int main()
Definition
nested_thread_num.c:12
OMPT_WAIT
#define OMPT_WAIT(s, v)
Definition
ompt-signal.h:20
OMPT_SIGNAL
#define OMPT_SIGNAL(s)
Definition
ompt-signal.h:13
Generated on
for LLVM OpenMP by
1.14.0