target-17.c 726 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. extern void abort (void);
  2. void
  3. foo (int n)
  4. {
  5. int a[n], i, err;
  6. for (i = 0; i < n; i++)
  7. a[i] = 5 * i;
  8. #pragma omp target map(to:a) map(from:err) private(i)
  9. {
  10. err = 0;
  11. for (i = 0; i < n; i++)
  12. if (a[i] != 5 * i)
  13. err = 1;
  14. }
  15. if (err)
  16. abort ();
  17. for (i = 0; i < n; i++)
  18. a[i] += i;
  19. #pragma omp target map(from:err) private(i)
  20. {
  21. err = 0;
  22. for (i = 0; i < n; i++)
  23. if (a[i] != 6 * i)
  24. err = 1;
  25. }
  26. if (err)
  27. abort ();
  28. for (i = 0; i < n; i++)
  29. a[i] += i;
  30. #pragma omp target firstprivate (a) map(from:err) private(i)
  31. {
  32. err = 0;
  33. for (i = 0; i < n; i++)
  34. if (a[i] != 7 * i)
  35. err = 1;
  36. }
  37. if (err)
  38. abort ();
  39. }
  40. int
  41. main ()
  42. {
  43. foo (9);
  44. return 0;
  45. }