1 #include <omp.h>
2 #include <stdlib.h>
3 
4 int
main()5 main ()
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