1 #include <omp.h>
2 #include <stdlib.h>
3
4 int main (void)
5 {
6
7 int host_device_num = omp_get_device_num ();
8
9 if (host_device_num != omp_get_initial_device ())
10 abort ();
11
12 int device_num;
13 int initial_device;
14
15 for (int i = 0; i <= omp_get_num_devices (); i++)
16 {
17 #pragma omp target map(from: device_num, initial_device) device(i)
18 {
19 initial_device = omp_is_initial_device ();
20 device_num = omp_get_device_num ();
21 }
22
23 if (i != device_num)
24 abort ();
25
26 if (initial_device && host_device_num != device_num)
27 abort ();
28
29 if (!initial_device && host_device_num == device_num)
30 abort ();
31 }
32
33 return 0;
34 }