3 /* Test of vector-private variables declared on loop directive. */
6 main (int argc
, char* argv
[])
8 int x
, i
, arr
[32 * 32 * 32];
10 for (i
= 0; i
< 32 * 32 * 32; i
++)
13 #pragma acc kernels copy(arr)
17 #pragma acc loop gang(num:32)
18 for (i
= 0; i
< 32; i
++)
20 #pragma acc loop worker(num:32)
21 for (j
= 0; j
< 32; j
++)
25 #pragma acc loop vector(length:32) private(x)
26 for (k
= 0; k
< 32; k
++)
29 arr
[i
* 1024 + j
* 32 + k
] += x
* k
;
32 #pragma acc loop vector(length:32) private(x)
33 for (k
= 0; k
< 32; k
++)
36 arr
[i
* 1024 + j
* 32 + k
] += x
* k
;
42 for (i
= 0; i
< 32; i
++)
43 for (int j
= 0; j
< 32; j
++)
44 for (int k
= 0; k
< 32; k
++)
46 int idx
= i
* 1024 + j
* 32 + k
;
47 assert (arr
[idx
] == idx
+ (i
^ j
* 3) * k
+ (i
| j
* 5) * k
);