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 } 46