2 /* { dg-set-target-env-var OMP_NUM_TEAMS_ALL "3" } */
3 /* { dg-set-target-env-var OMP_NUM_TEAMS_DEV "4" } */
4 /* { dg-set-target-env-var OMP_NUM_TEAMS "5" } */
5 /* { dg-set-target-env-var OMP_NUM_TEAMS_DEV_0 "6" } */
6 /* { dg-set-target-env-var OMP_NUM_TEAMS_DEV_1 "7" } */
7 /* { dg-set-target-env-var OMP_NUM_TEAMS_DEV_2 "8" } */
8 /* { dg-set-target-env-var OMP_TEAMS_THREAD_LIMIT_ALL "2" } */
9 /* { dg-set-target-env-var OMP_TEAMS_THREAD_LIMIT_DEV "3" } */
10 /* { dg-set-target-env-var OMP_TEAMS_THREAD_LIMIT "4" } */
11 /* { dg-set-target-env-var OMP_TEAMS_THREAD_LIMIT_DEV_0 "5" } */
12 /* { dg-set-target-env-var OMP_TEAMS_THREAD_LIMIT_DEV_1 "6" } */
13 /* { dg-set-target-env-var OMP_TEAMS_THREAD_LIMIT_DEV_2 "7" } */
22 if (omp_get_max_teams () != 5
23 || omp_get_teams_thread_limit () != 4)
28 if (omp_get_num_teams () > 5
29 || omp_get_team_num () >= 5)
32 if (omp_get_thread_limit () > 4
33 || omp_get_thread_num () >= 4)
37 omp_set_num_teams (4);
38 omp_set_teams_thread_limit (3);
39 if (omp_get_max_teams () != 4
40 || omp_get_teams_thread_limit () != 3)
45 if (omp_get_num_teams () > 4
46 || omp_get_team_num () >= 4)
49 if (omp_get_thread_limit () > 3
50 || omp_get_thread_num () >= 3)
54 #pragma omp teams num_teams(3) thread_limit(2)
56 if (omp_get_num_teams () != 3
57 || omp_get_team_num () >= 3)
60 if (omp_get_thread_limit () > 2
61 || omp_get_thread_num () >= 2)
65 #pragma omp teams num_teams(5) thread_limit(4)
67 if (omp_get_num_teams () != 5
68 || omp_get_team_num () >= 5)
71 if (omp_get_thread_limit () > 4
72 || omp_get_thread_num () >= 4)
76 int num_devices
= omp_get_num_devices () > 3 ? 3 : omp_get_num_devices ();
78 for (int i
= 0; i
< num_devices
; i
++)
80 #pragma omp target device (i)
81 if (omp_get_max_teams () != 6 + i
82 || omp_get_teams_thread_limit () != 5 + i
)
85 #pragma omp target device (i)
88 if (omp_get_thread_limit () > 5 + i
89 || omp_get_thread_num () >= 5 + i
)
92 #pragma omp target device (i)
94 omp_set_num_teams (5 + i
);
95 omp_set_teams_thread_limit (4 + i
);
96 if (omp_get_max_teams () != 5 + i
97 || omp_get_teams_thread_limit () != 4 + i
)
101 /* omp_set_num_teams and omp_set_teams_thread_limit above set the value
102 of nteams-var and teams-thread-limit-var ICVs on device 'i', which has
103 scope 'device' and should be avaible in subsequent target regions. */
104 #pragma omp target device (i)
105 if (omp_get_max_teams () != 5 + i
106 || omp_get_teams_thread_limit () != 4 + i
)
109 #pragma omp target device (i)
112 if (omp_get_num_teams () > 5 + i
113 || omp_get_team_num () >= 5 + i
)
116 if (omp_get_thread_limit () > 4 + i
117 || omp_get_thread_num () >= 4 + i
)
121 #pragma omp target device (i)
122 #pragma omp teams num_teams(6 + i) thread_limit(5 + i)
124 if (omp_get_num_teams () > 6 + i
125 || omp_get_team_num () >= 6 + i
)
128 if (omp_get_thread_limit () > 5 + i
129 || omp_get_thread_num () >= 5 + i
130 || omp_get_num_teams () > 6 + i
131 || omp_get_team_num () >= 6 + i
)
135 #pragma omp target device (i)
136 #pragma omp teams num_teams(4 + i) thread_limit(3 + i)
138 if (omp_get_num_teams () > 4 + i
139 || omp_get_team_num () >= 4 + i
)
142 if (omp_get_thread_limit () > 3 + i
143 || omp_get_thread_num () >= 3 + i
144 || omp_get_num_teams () > 4 + i
145 || omp_get_team_num () >= 4 + i
)
149 #pragma omp target device (i)
150 #pragma omp teams thread_limit(3 + i) num_teams(4 + i)
152 if (omp_get_num_teams () > 4 + i
153 || omp_get_team_num () >= 4 + i
)
156 if (omp_get_thread_limit () > 3 + i
157 || omp_get_thread_num () >= 3 + i
158 || omp_get_num_teams () > 4 + i
159 || omp_get_team_num () >= 4 + i
)
163 /* The NUM_TEAMS and THREAD_LIMIT clauses should not change the values
164 of the corresponding ICVs. */
165 #pragma omp target device (i)
166 if (omp_get_max_teams () != 5 + i
167 || omp_get_teams_thread_limit () != 4 + i
)
170 /* This tests a large number of teams and threads. If it is larger than
171 2^15+1 then the according argument in the kernels arguments list
172 is encoded with two items instead of one. */
173 intptr_t large_num_teams
= 66000;
174 intptr_t large_threads_limit
= 67000;
175 #pragma omp target device (i)
177 omp_set_num_teams (large_num_teams
+ i
);
178 omp_set_teams_thread_limit (large_threads_limit
+ i
);
179 if (omp_get_max_teams () != large_num_teams
+ i
180 || omp_get_teams_thread_limit () != large_threads_limit
+ i
)
184 #pragma omp target device (i)
185 if (omp_get_max_teams () != large_num_teams
+ i
186 || omp_get_teams_thread_limit () != large_threads_limit
+ i
)
189 #pragma omp target device (i)
192 if (omp_get_num_teams () > large_num_teams
+ i
193 || omp_get_team_num () >= large_num_teams
+ i
)
196 if (omp_get_thread_limit () > large_threads_limit
+ i
197 || omp_get_thread_num () >= large_threads_limit
+ i
)