1 // RUN: %libomp-compile-and-run | %sort-threads | FileCheck %s
4 // GCC doesn't call runtime for static schedule
14 #pragma omp parallel num_threads(4)
17 int team_size
= omp_get_num_threads();
18 #pragma omp for schedule(static, WORK_SIZE / 4)
19 for (i
= 0; i
< WORK_SIZE
; i
++) {}
21 #pragma omp for schedule(dynamic)
22 for (i
= 0; i
< WORK_SIZE
; i
++) {
24 // Wait until every thread has at least one iteration assigned
26 OMPT_WAIT(wait_s
, team_size
);
31 #pragma omp for schedule(guided)
32 for (i
= 0; i
< WORK_SIZE
; i
++) {
34 // Wait until every thread has at least one iteration assigned
36 OMPT_WAIT(wait_s
, 2 * team_size
);
45 // CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_parallel_begin'
46 // CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_implicit_task'
47 // CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_work'
48 // CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_dispatch'
50 // CHECK: 0: NULL_POINTER=[[NULL:.*$]]
51 // CHECK: {{^}}[[THREAD_ID0:[0-9]+]]: ompt_event_parallel_begin:
52 // CHECK-SAME: parallel_id=[[PARALLEL_ID:[0-9]+]]
54 // Each thread should have at least one ws-loop-chunk-begin event for each
57 // CHECK: {{^}}[[THREAD_ID0]]: ompt_event_implicit_task_begin:
58 // CHECK-SAME: task_id=[[TASK_ID0:[0-9]+]]
59 // CHECK: {{^}}[[THREAD_ID0]]: ompt_event_loop_begin:
60 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], parent_task_id=[[TASK_ID0]]
61 // CHECK: {{^}}[[THREAD_ID0]]: ompt_event_ws_loop_chunk_begin:
62 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID0]]
63 // CHECK-SAME: chunk_start={{[0-9]+}}, chunk_iterations=16
64 // CHECK: {{^}}[[THREAD_ID0]]: ompt_event_loop_begin:
65 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], parent_task_id=[[TASK_ID0]]
66 // CHECK: {{^}}[[THREAD_ID0]]: ompt_event_ws_loop_chunk_begin:
67 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID0]]
68 // CHECK-SAME: chunk_start={{[0-9]+}}, chunk_iterations=1
69 // CHECK: {{^}}[[THREAD_ID0]]: ompt_event_loop_begin:
70 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], parent_task_id=[[TASK_ID0]]
71 // CHECK: {{^}}[[THREAD_ID0]]: ompt_event_ws_loop_chunk_begin:
72 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID0]]
73 // CHECK-SAME: chunk_start={{[0-9]+}}, chunk_iterations={{[1-9][0-9]*}}
75 // CHECK: {{^}}[[THREAD_ID1:[0-9]+]]: ompt_event_implicit_task_begin:
76 // CHECK-SAME: task_id=[[TASK_ID1:[0-9]+]]
77 // CHECK: {{^}}[[THREAD_ID1]]: ompt_event_loop_begin:
78 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], parent_task_id=[[TASK_ID1]]
79 // CHECK: {{^}}[[THREAD_ID1]]: ompt_event_ws_loop_chunk_begin:
80 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID1]]
81 // CHECK-SAME: chunk_start={{[0-9]+}}, chunk_iterations=16
82 // CHECK: {{^}}[[THREAD_ID1]]: ompt_event_loop_begin:
83 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], parent_task_id=[[TASK_ID1]]
84 // CHECK: {{^}}[[THREAD_ID1]]: ompt_event_ws_loop_chunk_begin:
85 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID1]]
86 // CHECK-SAME: chunk_start={{[0-9]+}}, chunk_iterations=1
87 // CHECK: {{^}}[[THREAD_ID1]]: ompt_event_loop_begin:
88 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], parent_task_id=[[TASK_ID1]]
89 // CHECK: {{^}}[[THREAD_ID1]]: ompt_event_ws_loop_chunk_begin:
90 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID1]]
91 // CHECK-SAME: chunk_start={{[0-9]+}}, chunk_iterations={{[1-9][0-9]*}}
93 // CHECK: {{^}}[[THREAD_ID2:[0-9]+]]: ompt_event_implicit_task_begin:
94 // CHECK-SAME: task_id=[[TASK_ID2:[0-9]+]]
95 // CHECK: {{^}}[[THREAD_ID2]]: ompt_event_loop_begin:
96 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], parent_task_id=[[TASK_ID2]]
97 // CHECK: {{^}}[[THREAD_ID2]]: ompt_event_ws_loop_chunk_begin:
98 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID2]]
99 // CHECK-SAME: chunk_start={{[0-9]+}}, chunk_iterations=16
100 // CHECK: {{^}}[[THREAD_ID2]]: ompt_event_loop_begin:
101 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], parent_task_id=[[TASK_ID2]]
102 // CHECK: {{^}}[[THREAD_ID2]]: ompt_event_ws_loop_chunk_begin:
103 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID2]]
104 // CHECK-SAME: chunk_start={{[0-9]+}}, chunk_iterations=1
105 // CHECK: {{^}}[[THREAD_ID2]]: ompt_event_loop_begin:
106 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], parent_task_id=[[TASK_ID2]]
107 // CHECK: {{^}}[[THREAD_ID2]]: ompt_event_ws_loop_chunk_begin:
108 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID2]]
109 // CHECK-SAME: chunk_start={{[0-9]+}}, chunk_iterations={{[1-9][0-9]*}}
111 // CHECK: {{^}}[[THREAD_ID3:[0-9]+]]: ompt_event_implicit_task_begin:
112 // CHECK-SAME: task_id=[[TASK_ID3:[0-9]+]]
113 // CHECK: {{^}}[[THREAD_ID3]]: ompt_event_loop_begin:
114 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], parent_task_id=[[TASK_ID3]]
115 // CHECK: {{^}}[[THREAD_ID3]]: ompt_event_ws_loop_chunk_begin:
116 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID3]]
117 // CHECK-SAME: chunk_start={{[0-9]+}}, chunk_iterations=16
118 // CHECK: {{^}}[[THREAD_ID3]]: ompt_event_loop_begin:
119 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], parent_task_id=[[TASK_ID3]]
120 // CHECK: {{^}}[[THREAD_ID3]]: ompt_event_ws_loop_chunk_begin:
121 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID3]]
122 // CHECK-SAME: chunk_start={{[0-9]+}}, chunk_iterations=1
123 // CHECK: {{^}}[[THREAD_ID3]]: ompt_event_loop_begin:
124 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], parent_task_id=[[TASK_ID3]]
125 // CHECK: {{^}}[[THREAD_ID3]]: ompt_event_ws_loop_chunk_begin:
126 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID3]]
127 // CHECK-SAME: chunk_start={{[0-9]+}}, chunk_iterations={{[1-9][0-9]*}}