LLVM OpenMP 22.0.0git
ordered_dependences.c
Go to the documentation of this file.
1// clang-format off
2// RUN: %libomp-c99-compile-and-run | %sort-threads | FileCheck %s
3// REQUIRES: ompt
4// UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
5// clang-format on
6#include "callback.h"
7#include <omp.h>
8
9int main() {
10 int a[10][10];
11#pragma omp parallel num_threads(2)
12#pragma omp for ordered(2) schedule(static)
13 for (int i = 0; i < 2; i++)
14 for (int j = 0; j < 2; j++) {
15 a[i][j] = i + j + 1;
16 printf("%d, %d\n", i, j);
17#pragma omp ordered depend(sink : i - 1, j) depend(sink : i, j - 1)
18 if (i > 0 && j > 0)
19 a[i][j] = a[i - 1][j] + a[i][j - 1] + 1;
20 printf("%d, %d\n", i, j);
21#pragma omp ordered depend(source)
22 }
23
24 return 0;
25}
26// clang-format off
27// CHECK: 0: NULL_POINTER=[[NULL:.*$]]
28
29// CHECK: {{^}}[[MASTER:[0-9]+]]: ompt_event_loop_static_begin:
30// CHECK-SAME: parallel_id={{[0-f]+}}, task_id=[[ITASK:[0-9]+]],
31
32// CHECK: {{^}}[[MASTER]]: ompt_event_dependences: task_id=[[ITASK]],
33// CHECK-SAME: deps=[(0, ompt_dependence_type_source), (0,
34// CHECK-SAME: ompt_dependence_type_source)], ndeps=2
35
36// CHECK: {{^}}[[MASTER]]: ompt_event_dependences: task_id=[[ITASK]],
37// CHECK-SAME: deps=[(0, ompt_dependence_type_sink), (0,
38// CHECK-SAME: ompt_dependence_type_sink)], ndeps=2
39
40// CHECK: {{^}}[[MASTER]]: ompt_event_dependences: task_id=[[ITASK]],
41// CHECK-SAME: deps=[(0, ompt_dependence_type_source), (1,
42// CHECK-SAME: ompt_dependence_type_source)], ndeps=2
43
44// CHECK: {{^}}[[WORKER:[0-9]+]]: ompt_event_loop_static_begin:
45// CHECK-SAME: parallel_id={{[0-f]+}}, task_id=[[ITASK:[0-9]+]],
46
47// CHECK: {{^}}[[WORKER]]: ompt_event_dependences: task_id=[[ITASK]],
48// CHECK-SAME: deps=[(0, ompt_dependence_type_sink), (0,
49// CHECK-SAME: ompt_dependence_type_sink)], ndeps=2
50
51// CHECK: {{^}}[[WORKER]]: ompt_event_dependences: task_id=[[ITASK]],
52// CHECK-SAME: deps=[(1, ompt_dependence_type_source), (0,
53// CHECK-SAME: ompt_dependence_type_source)], ndeps=2
54
55// either can be first for last iteration
56
57// CHECK-DAG: [[ITASK]]{{.*}}deps=[(0{{.*}}sink), (1,{{.*}}sink)]
58
59// CHECK-DAG: [[ITASK]]{{.*}}deps=[(1{{.*}}sink), (0,{{.*}}sink)]
60
61// CHECK: {{^}}[[WORKER]]: ompt_event_dependences: task_id=[[ITASK]],
62// CHECK-SAME: deps=[(1, ompt_dependence_type_source), (1,
63// CHECK-SAME: ompt_dependence_type_source)], ndeps=2
64// clang-format on
#define i
Definition kmp_stub.cpp:87
int a
int main()