| #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; |
| } |