1  #include <omp.h>
       2  #include <stdlib.h>
       3  
       4  int
       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  }