LLVM OpenMP 22.0.0git
not_enough_threads.c
Go to the documentation of this file.
1// clang-format off
2// RUN: %libomp-compile && env OMP_THREAD_LIMIT=2 %libomp-run | FileCheck %s
3// RUN: %libomp-compile && env OMP_THREAD_LIMIT=2 %libomp-run | %sort-threads \
4// RUN: | FileCheck --check-prefix=THREADS %s
5
6// REQUIRES: ompt
7// clang-format on
8
9#include "callback.h"
10
11int main() {
12#pragma omp parallel num_threads(4)
13 {
14 print_ids(0);
15 print_ids(1);
16 }
18
19 // clang-format off
20 // Check if libomp supports the callbacks for this test.
21 // CHECK-NOT: {{^}}0: Could not register callback
22
23 // Make sure initial data pointers are null.
24 // CHECK-NOT: 0: parallel_data initially not null
25 // CHECK-NOT: 0: task_data initially not null
26 // CHECK-NOT: 0: thread_data initially not null
27
28 // Only check callback names, arguments are verified in THREADS below.
29 // CHECK: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_parallel_begin
30
31 // CHECK-DAG: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_begin
32 // CHECK-DAG: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_end
33
34 // Note that we cannot ensure that the worker threads have already called
35 // barrier_end and implicit_task_end before parallel_end!
36
37 // CHECK-DAG: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_implicit_task_begin
38 // CHECK-DAG: {{^}}[[THREAD_ID]]: ompt_event_barrier_implicit_parallel_begin
39
40 // CHECK: {{^}}[[MASTER_ID]]: ompt_event_parallel_end
41
42 // THREADS: 0: NULL_POINTER=[[NULL:.*$]]
43 // THREADS: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_thread_begin
44 // THREADS-SAME: thread_type=ompt_thread_initial=1, thread_id=[[MASTER_ID]]
45 // THREADS: {{^}}[[MASTER_ID]]: ompt_event_parallel_begin
46 // THREADS-SAME: parent_task_id=[[PARENT_TASK_ID:[0-f]+]]
47 // THREADS-SAME: parent_task_frame.exit=[[NULL]]
48 // THREADS-SAME: parent_task_frame.reenter={{(0x)?[0-f]+}}
49 // THREADS-SAME: parallel_id=[[PARALLEL_ID:[0-f]+]], requested_team_size=4
50 // THREADS-SAME: codeptr_ra=[[RETURN_ADDRESS:(0x)?[0-f]+]]{{[0-f][0-f]}}
51
52 // THREADS: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_begin
53 // THREADS-SAME: parallel_id=[[PARALLEL_ID]]
54 // THREADS-SAME: task_id=[[IMPLICIT_TASK_ID:[0-f]+]]
55 // THREADS: {{^}}[[MASTER_ID]]: task level 0
56 // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
57 // THREADS: {{^}}[[MASTER_ID]]: task level 1
58 // THREADS-SAME: parallel_id=[[IMPLICIT_PARALLEL_ID:[0-f]+]]
59 // THREADS-SAME: task_id=[[PARENT_TASK_ID]]
60
61 // THREADS-NOT: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_end
62 // THREADS: {{^}}[[MASTER_ID]]: ompt_event_barrier_implicit_parallel_begin
63 // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
64 // parallel_id is 0 because the region ended in the barrier!
65 // THREADS: {{^}}[[MASTER_ID]]: ompt_event_barrier_implicit_parallel_end
66 // THREADS-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]
67 // THREADS: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_end
68 // THREADS-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]
69 // THREADS: {{^}}[[MASTER_ID]]: ompt_event_parallel_end
70 // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[PARENT_TASK_ID]]
71 // THREADS: {{^}}[[MASTER_ID]]: fuzzy_address={{.*}}[[RETURN_ADDRESS]]
72
73 // THREADS: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_thread_begin
74 // THREADS-SAME: thread_type=ompt_thread_worker=2, thread_id=[[THREAD_ID]]
75 // THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_begin
76 // THREADS-SAME: parallel_id=[[PARALLEL_ID]]
77 // THREADS-SAME: task_id=[[IMPLICIT_TASK_ID:[0-f]+]]
78 // THREADS: {{^}}[[THREAD_ID]]: task level 0
79 // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
80 // THREADS: {{^}}[[THREAD_ID]]: task level 1
81 // THREADS-SAME: parallel_id=[[IMPLICIT_PARALLEL_ID]]
82 // THREADS-SAME: task_id=[[PARENT_TASK_ID]]
83 // THREADS-NOT: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_end
84 // THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_implicit_parallel_begin
85 // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]
86 // parallel_id is 0 because the region ended in the barrier!
87 // THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_implicit_parallel_end
88 // THREADS-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]
89 // THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_end
90 // THREADS-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]
91 // clang-format on
92
93 return 0;
94}
#define print_fuzzy_address(id)
Definition callback.h:360
static void print_ids(int level)
Definition callback.h:187
int main()