145
|
1 void bar (int *);
|
|
2
|
|
3 void
|
|
4 foo (int *a)
|
|
5 {
|
|
6 int i, j, k, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0;
|
|
7 #pragma omp parallel master default(none) private (k)
|
|
8 bar (&k);
|
|
9 #pragma omp parallel default(none) firstprivate(a) shared(x, y, z)
|
|
10 {
|
|
11 #pragma omp master taskloop reduction (+:x) default(none) firstprivate(a)
|
|
12 for (i = 0; i < 64; i++)
|
|
13 x += a[i];
|
|
14 #pragma omp master taskloop simd reduction (+:y) default(none) firstprivate(a) private (i)
|
|
15 for (i = 0; i < 64; i++)
|
|
16 y += a[i];
|
|
17 #pragma omp master taskloop simd collapse(2) reduction (+:z) default(none) firstprivate(a) private (i, j)
|
|
18 for (j = 0; j < 1; j++)
|
|
19 for (i = 0; i < 64; ++i)
|
|
20 z += a[i];
|
|
21 }
|
|
22 #pragma omp parallel master taskloop reduction (+:u) default(none) firstprivate(a)
|
|
23 for (i = 0; i < 64; i++)
|
|
24 u += a[i];
|
|
25 #pragma omp parallel master taskloop simd reduction (+:v) default(none) firstprivate(a)
|
|
26 for (i = 0; i < 64; i++)
|
|
27 v += a[i];
|
|
28 #pragma omp parallel master taskloop simd collapse(2) reduction (+:w) default(none) firstprivate(a)
|
|
29 for (j = 0; j < 1; j++)
|
|
30 for (i = 0; i < 64; ++i)
|
|
31 w += a[i];
|
|
32 }
|