]>
Commit | Line | Data |
---|---|---|
bc7bff74 | 1 | #include <omp.h> |
2 | #include <stdlib.h> | |
3 | ||
4 | volatile int v; | |
5 | ||
6 | void | |
7 | foo (int f) | |
8 | { | |
9 | int d = f ? omp_get_num_devices () : omp_get_default_device (); | |
10 | int h = 5; | |
11 | #pragma omp target device (d) | |
12 | if (omp_get_level () != 0) | |
13 | abort (); | |
14 | #pragma omp target if (v > 1) | |
15 | if (omp_get_level () != 0 || !omp_is_initial_device ()) | |
16 | abort (); | |
17 | #pragma omp target device (d) if (v > 1) | |
18 | if (omp_get_level () != 0 || !omp_is_initial_device ()) | |
19 | abort (); | |
20 | #pragma omp target if (v <= 1) | |
23525216 | 21 | if (omp_get_level () != 0) |
bc7bff74 | 22 | abort (); |
23 | #pragma omp target device (d) if (v <= 1) | |
24 | if (omp_get_level () != 0 || (f && !omp_is_initial_device ())) | |
25 | abort (); | |
26 | #pragma omp target if (0) | |
27 | if (omp_get_level () != 0 || !omp_is_initial_device ()) | |
28 | abort (); | |
29 | #pragma omp target device (d) if (0) | |
30 | if (omp_get_level () != 0 || !omp_is_initial_device ()) | |
31 | abort (); | |
32 | #pragma omp target if (1) | |
23525216 | 33 | if (omp_get_level () != 0) |
bc7bff74 | 34 | abort (); |
35 | #pragma omp target device (d) if (1) | |
36 | if (omp_get_level () != 0 || (f && !omp_is_initial_device ())) | |
37 | abort (); | |
38 | #pragma omp target data device (d) map (to: h) | |
39 | { | |
43895be5 | 40 | #pragma omp target device (d) map (h) |
bc7bff74 | 41 | if (omp_get_level () != 0 || (f && !omp_is_initial_device ()) || h++ != 5) |
42 | abort (); | |
43 | #pragma omp target update device (d) from (h) | |
44 | } | |
45 | #pragma omp target data if (v > 1) map (to: h) | |
46 | { | |
43895be5 | 47 | #pragma omp target if (v > 1) map(h) |
bc7bff74 | 48 | if (omp_get_level () != 0 || !omp_is_initial_device () || h++ != 6) |
49 | abort (); | |
50 | #pragma omp target update if (v > 1) from (h) | |
51 | } | |
52 | #pragma omp target data device (d) if (v > 1) map (to: h) | |
53 | { | |
43895be5 | 54 | #pragma omp target device (d) if (v > 1) map(h) |
bc7bff74 | 55 | if (omp_get_level () != 0 || !omp_is_initial_device () || h++ != 7) |
56 | abort (); | |
57 | #pragma omp target update device (d) if (v > 1) from (h) | |
58 | } | |
59 | #pragma omp target data if (v <= 1) map (to: h) | |
60 | { | |
43895be5 | 61 | #pragma omp target if (v <= 1) map (tofrom: h) |
23525216 | 62 | if (omp_get_level () != 0 || h++ != 8) |
bc7bff74 | 63 | abort (); |
64 | #pragma omp target update if (v <= 1) from (h) | |
65 | } | |
66 | #pragma omp target data device (d) if (v <= 1) map (to: h) | |
67 | { | |
43895be5 | 68 | #pragma omp target device (d) if (v <= 1) map (h) |
bc7bff74 | 69 | if (omp_get_level () != 0 || (f && !omp_is_initial_device ()) || h++ != 9) |
70 | abort (); | |
71 | #pragma omp target update device (d) if (v <= 1) from (h) | |
72 | } | |
73 | #pragma omp target data if (0) map (to: h) | |
74 | { | |
43895be5 | 75 | #pragma omp target if (0) map (h) |
bc7bff74 | 76 | if (omp_get_level () != 0 || !omp_is_initial_device () || h++ != 10) |
77 | abort (); | |
78 | #pragma omp target update if (0) from (h) | |
79 | } | |
80 | #pragma omp target data device (d) if (0) map (to: h) | |
81 | { | |
43895be5 | 82 | #pragma omp target device (d) if (0) map (h) |
bc7bff74 | 83 | if (omp_get_level () != 0 || !omp_is_initial_device () || h++ != 11) |
84 | abort (); | |
85 | #pragma omp target update device (d) if (0) from (h) | |
86 | } | |
87 | #pragma omp target data if (1) map (to: h) | |
88 | { | |
43895be5 | 89 | #pragma omp target if (1) map (tofrom: h) |
23525216 | 90 | if (omp_get_level () != 0 || h++ != 12) |
bc7bff74 | 91 | abort (); |
92 | #pragma omp target update if (1) from (h) | |
93 | } | |
94 | #pragma omp target data device (d) if (1) map (to: h) | |
95 | { | |
43895be5 | 96 | #pragma omp target device (d) if (1) map (tofrom: h) |
bc7bff74 | 97 | if (omp_get_level () != 0 || (f && !omp_is_initial_device ()) || h++ != 13) |
98 | abort (); | |
99 | #pragma omp target update device (d) if (1) from (h) | |
100 | } | |
101 | if (h != 14) | |
102 | abort (); | |
103 | } | |
104 | ||
105 | int | |
106 | main () | |
107 | { | |
108 | foo (0); | |
109 | foo (1); | |
110 | return 0; | |
111 | } |