111
|
1 extern void abort (void);
|
|
2
|
|
3 void
|
|
4 foo (int n)
|
|
5 {
|
|
6 int a[n], i, err;
|
|
7 for (i = 0; i < n; i++)
|
|
8 a[i] = 7 * i;
|
|
9 #pragma omp target firstprivate (a) map(from:err) private (i)
|
|
10 {
|
|
11 err = 0;
|
|
12 for (i = 0; i < n; i++)
|
|
13 if (a[i] != 7 * i)
|
|
14 err = 1;
|
|
15 }
|
|
16 if (err)
|
|
17 abort ();
|
|
18 }
|
|
19
|
|
20 void
|
|
21 bar (int n)
|
|
22 {
|
|
23 int a[n], i, err;
|
|
24 #pragma omp target private (a) map(from:err)
|
|
25 {
|
|
26 #pragma omp parallel for
|
|
27 for (i = 0; i < n; i++)
|
|
28 a[i] = 7 * i;
|
|
29 err = 0;
|
|
30 #pragma omp parallel for reduction(|:err)
|
|
31 for (i = 0; i < n; i++)
|
|
32 if (a[i] != 7 * i)
|
|
33 err |= 1;
|
|
34 }
|
|
35 if (err)
|
|
36 abort ();
|
|
37 }
|
|
38
|
|
39 int
|
|
40 main ()
|
|
41 {
|
|
42 foo (7);
|
|
43 bar (7);
|
|
44 return 0;
|
|
45 }
|