1 #include <omp.h> 2 #include <stdlib.h> 3 4 int main()5main () 6 { 7 int d = omp_get_default_device (); 8 int id = omp_get_initial_device (); 9 int err; 10 void *p; 11 12 if (d < 0 || d >= omp_get_num_devices ()) 13 d = id; 14 15 p = omp_target_alloc (128 * sizeof (int), d); 16 if (p == NULL) 17 return 0; 18 19 #pragma omp target is_device_ptr (p) if (d >= 0) device (d >= 0 ? d : 0) 20 { 21 int i, *q = (int *) p; 22 for (i = 0; i < 128; i++) 23 q[i] = i + 7; 24 } 25 #pragma omp target is_device_ptr (p) if (d >= 0) device (d >= 0 ? d : 0) map(from:err) 26 { 27 int i; 28 err = 0; 29 for (i = 0; i < 128; i++) 30 if (((int *) p)[i] != i + 7) 31 err = 1; 32 } 33 if (err) 34 abort (); 35 36 omp_target_free (p, d); 37 return 0; 38 } 39