target-42.c 618 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #include <stdio.h>
  2. int
  3. on_nvptx (void)
  4. {
  5. return 1;
  6. }
  7. int
  8. on_gcn (void)
  9. {
  10. return 2;
  11. }
  12. #pragma omp declare variant (on_nvptx) match(construct={target},device={arch(nvptx)})
  13. #pragma omp declare variant (on_gcn) match(construct={target},device={arch(gcn)})
  14. int
  15. on (void)
  16. {
  17. return 0;
  18. }
  19. int
  20. main ()
  21. {
  22. int v;
  23. #pragma omp target map(from:v)
  24. v = on ();
  25. switch (v)
  26. {
  27. default:
  28. printf ("Host fallback or unknown offloading\n");
  29. break;
  30. case 1:
  31. printf ("Offloading to NVidia PTX\n");
  32. break;
  33. case 2:
  34. printf ("Offloading to AMD GCN\n");
  35. break;
  36. }
  37. return 0;
  38. }