|  | #include <omp.h> | 
|  | #include <stdlib.h> | 
|  |  | 
|  | int | 
|  | main () | 
|  | { | 
|  | int d = omp_get_default_device (); | 
|  | int id = omp_get_initial_device (); | 
|  | int err; | 
|  | void *p; | 
|  |  | 
|  | if (d < 0 || d >= omp_get_num_devices ()) | 
|  | d = id; | 
|  |  | 
|  | p = omp_target_alloc (128 * sizeof (int), d); | 
|  | if (p == NULL) | 
|  | return 0; | 
|  |  | 
|  | #pragma omp target is_device_ptr (p) if (d >= 0) device (d >= 0 ? d : 0) | 
|  | { | 
|  | int i, *q = (int *) p; | 
|  | for (i = 0; i < 128; i++) | 
|  | q[i] = i + 7; | 
|  | } | 
|  | #pragma omp target is_device_ptr (p) if (d >= 0) device (d >= 0 ? d : 0) map(from:err) | 
|  | { | 
|  | int i; | 
|  | err = 0; | 
|  | for (i = 0; i < 128; i++) | 
|  | if (((int *) p)[i] != i + 7) | 
|  | err = 1; | 
|  | } | 
|  | if (err) | 
|  | abort (); | 
|  |  | 
|  | omp_target_free (p, d); | 
|  | return 0; | 
|  | } |