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] = 5 * i;
|
|
9 #pragma omp target map(to:a) map(from:err) private(i)
|
|
10 {
|
|
11 err = 0;
|
|
12 for (i = 0; i < n; i++)
|
|
13 if (a[i] != 5 * i)
|
|
14 err = 1;
|
|
15 }
|
|
16 if (err)
|
|
17 abort ();
|
|
18 for (i = 0; i < n; i++)
|
|
19 a[i] += i;
|
|
20 #pragma omp target map(from:err) private(i)
|
|
21 {
|
|
22 err = 0;
|
|
23 for (i = 0; i < n; i++)
|
|
24 if (a[i] != 6 * i)
|
|
25 err = 1;
|
|
26 }
|
|
27 if (err)
|
|
28 abort ();
|
|
29 for (i = 0; i < n; i++)
|
|
30 a[i] += i;
|
|
31 #pragma omp target firstprivate (a) map(from:err) private(i)
|
|
32 {
|
|
33 err = 0;
|
|
34 for (i = 0; i < n; i++)
|
|
35 if (a[i] != 7 * i)
|
|
36 err = 1;
|
|
37 }
|
|
38 if (err)
|
|
39 abort ();
|
|
40 }
|
|
41
|
|
42 int
|
|
43 main ()
|
|
44 {
|
|
45 foo (9);
|
|
46 return 0;
|
|
47 }
|