#include #include /* static */ int device_arch_nvptx (void) { return GOMP_DEVICE_NVIDIA_PTX; } /* static */ int device_arch_intel_mic (void) { return GOMP_DEVICE_INTEL_MIC; } #pragma omp declare variant (device_arch_nvptx) match(construct={target},device={arch(nvptx)}) #pragma omp declare variant (device_arch_intel_mic) match(construct={target},device={arch(intel_mic)}) /* static */ int device_arch (void) { return GOMP_DEVICE_DEFAULT; } static int on_device_arch (int d) { int d_cur; #pragma omp target map(from:d_cur) d_cur = device_arch (); return d_cur == d; } int on_device_arch_nvptx () { return on_device_arch (GOMP_DEVICE_NVIDIA_PTX); } int on_device_arch_intel_mic () { return on_device_arch (GOMP_DEVICE_INTEL_MIC); } static int any_device_arch (int d) { int nd = omp_get_num_devices (); for (int i = 0; i < nd; ++i) { int d_cur; #pragma omp target device(i) map(from:d_cur) d_cur = device_arch (); if (d_cur == d) return 1; } return 0; } int any_device_arch_intel_mic () { return any_device_arch (GOMP_DEVICE_INTEL_MIC); }