7 int d
= omp_get_default_device ();
8 int id
= omp_get_initial_device ();
13 if (d
< 0 || d
>= omp_get_num_devices ())
16 for (i
= 0; i
< 128; i
++)
19 p
= omp_target_alloc (130 * sizeof (int), d
);
23 if (omp_target_memcpy_rect (NULL
, NULL
, 0, 0, NULL
, NULL
, NULL
, NULL
, NULL
,
25 || omp_target_memcpy_rect (NULL
, NULL
, 0, 0, NULL
, NULL
, NULL
, NULL
,
27 || omp_target_memcpy_rect (NULL
, NULL
, 0, 0, NULL
, NULL
, NULL
, NULL
,
31 if (omp_target_associate_ptr (q
, p
, 128 * sizeof (int), sizeof (int), d
) == 0)
33 size_t volume
[3] = { 128, 0, 0 };
34 size_t dst_offsets
[3] = { 0, 0, 0 };
35 size_t src_offsets
[3] = { 1, 0, 0 };
36 size_t dst_dimensions
[3] = { 128, 0, 0 };
37 size_t src_dimensions
[3] = { 128, 0, 0 };
39 if (omp_target_associate_ptr (q
, p
, 128 * sizeof (int), sizeof (int), d
) != 0)
42 if (omp_target_is_present (q
, d
) != 1
43 || omp_target_is_present (&q
[32], d
) != 1
44 || omp_target_is_present (&q
[127], d
) != 1)
47 if (omp_target_memcpy (p
, q
, 128 * sizeof (int), sizeof (int), 0,
51 #pragma omp target if (d >= 0) device (d >= 0 ? d : 0) map(alloc:q[0:32]) map(from:err)
55 for (j
= 0; j
< 128; j
++)
65 if (omp_target_memcpy_rect (q
, p
, sizeof (int), 1, volume
,
66 dst_offsets
, src_offsets
, dst_dimensions
,
67 src_dimensions
, id
, d
) != 0)
70 for (i
= 0; i
< 128; i
++)
83 dst_dimensions
[2] = 2;
84 dst_dimensions
[1] = 3;
85 dst_dimensions
[0] = 6;
86 src_dimensions
[2] = 3;
87 src_dimensions
[1] = 4;
88 src_dimensions
[0] = 6;
89 if (omp_target_memcpy_rect (p
, q
, sizeof (int), 3, volume
,
90 dst_offsets
, src_offsets
, dst_dimensions
,
91 src_dimensions
, d
, id
) != 0)
94 #pragma omp target if (d >= 0) device (d >= 0 ? d : 0) map(alloc:q[0:32]) map(from:err)
98 for (j
= 0; j
< 6; j
++)
99 for (k
= 0; k
< 3; k
++)
100 for (l
= 0; l
< 2; l
++)
101 if (q
[j
* 6 + k
* 2 + l
] != 3 * 12 + 4 + 1 + l
+ k
* 3 + j
* 12)
108 if (omp_target_memcpy (p
, p
, 10 * sizeof (int), 51 * sizeof (int),
109 111 * sizeof (int), d
, d
) != 0)
112 #pragma omp target if (d >= 0) device (d >= 0 ? d : 0) map(alloc:q[0:32]) map(from:err)
116 for (j
= 0; j
< 10; j
++)
117 if (q
[50 + j
] != q
[110 + j
])
124 if (omp_target_disassociate_ptr (q
, d
) != 0)
128 omp_target_free (p
, d
);