]>
Commit | Line | Data |
---|---|---|
d97364aa | 1 | #include <omp.h> |
d99111fd TS |
2 | #include <gomp-constants.h> |
3 | ||
4 | /* static */ int | |
5 | device_arch_nvptx (void) | |
6 | { | |
7 | return GOMP_DEVICE_NVIDIA_PTX; | |
8 | } | |
9 | ||
12d9f5af TB |
10 | /* static */ int |
11 | device_arch_gcn (void) | |
12 | { | |
13 | return GOMP_DEVICE_GCN; | |
14 | } | |
15 | ||
bb75b22a TS |
16 | /* static */ int |
17 | device_arch_intel_mic (void) | |
18 | { | |
19 | return GOMP_DEVICE_INTEL_MIC; | |
20 | } | |
21 | ||
d99111fd | 22 | #pragma omp declare variant (device_arch_nvptx) match(construct={target},device={arch(nvptx)}) |
12d9f5af | 23 | #pragma omp declare variant (device_arch_gcn) match(construct={target},device={arch(gcn)}) |
bb75b22a | 24 | #pragma omp declare variant (device_arch_intel_mic) match(construct={target},device={arch(intel_mic)}) |
d99111fd TS |
25 | /* static */ int |
26 | device_arch (void) | |
27 | { | |
28 | return GOMP_DEVICE_DEFAULT; | |
29 | } | |
30 | ||
31 | static int | |
32 | on_device_arch (int d) | |
33 | { | |
34 | int d_cur; | |
35 | #pragma omp target map(from:d_cur) | |
36 | d_cur = device_arch (); | |
37 | ||
38 | return d_cur == d; | |
39 | } | |
40 | ||
41 | int | |
42 | on_device_arch_nvptx () | |
43 | { | |
44 | return on_device_arch (GOMP_DEVICE_NVIDIA_PTX); | |
45 | } | |
bb75b22a | 46 | |
12d9f5af TB |
47 | int |
48 | on_device_arch_gcn () | |
49 | { | |
50 | return on_device_arch (GOMP_DEVICE_GCN); | |
51 | } | |
52 | ||
bb75b22a TS |
53 | int |
54 | on_device_arch_intel_mic () | |
55 | { | |
56 | return on_device_arch (GOMP_DEVICE_INTEL_MIC); | |
57 | } | |
d97364aa TS |
58 | |
59 | static int | |
60 | any_device_arch (int d) | |
61 | { | |
62 | int nd = omp_get_num_devices (); | |
63 | for (int i = 0; i < nd; ++i) | |
64 | { | |
65 | int d_cur; | |
66 | #pragma omp target device(i) map(from:d_cur) | |
67 | d_cur = device_arch (); | |
68 | if (d_cur == d) | |
69 | return 1; | |
70 | } | |
71 | ||
72 | return 0; | |
73 | } | |
74 | ||
75 | int | |
76 | any_device_arch_intel_mic () | |
77 | { | |
78 | return any_device_arch (GOMP_DEVICE_INTEL_MIC); | |
79 | } |