target-14.c 709 B

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