2 template <typename T> T
8 template<typename T, int I> T
9 oacc_parallel_copy (T a)
17 #pragma acc parallel num_gangs (a) num_workers (a) vector_length (a) default (none) copyout (b) copyin (a)
18 #pragma acc loop gang worker vector
19 for (int i = 0; i < 1; i++)
22 #pragma acc parallel num_gangs (a) copy (w, x, y, z)
24 for (int i = 0; i < 1; i++)
26 w = accDouble<char>(w);
27 x = accDouble<int>(x);
28 y = accDouble<float>(y);
29 z = accDouble<double>(z);
32 #pragma acc parallel num_gangs (a) if (1)
34 #pragma acc loop independent collapse (2) gang
35 for (int i = 0; i < a; i++)
36 for (int j = 0; j < 5; j++)
39 #pragma acc loop auto tile (I, 3)
40 for (int i = 0; i < a; i++)
41 for (int j = 0; j < 5; j++)
45 for (int i = 0; i < a; i++)
51 #pragma acc parallel num_workers (10)
52 #pragma acc loop worker
53 for (int i = 0; i < 1; i++)
55 #pragma acc atomic capture
61 #pragma acc atomic read
64 #pragma acc atomic write
68 #pragma acc parallel reduction (+:c)
71 #pragma acc data if (1) copy (b)
79 #pragma acc enter data copyin (b)
80 #pragma acc parallel present (b)
85 #pragma acc update host (b)
86 #pragma acc update self (b)
87 #pragma acc update device (b)
88 #pragma acc exit data delete (b)
93 template<typename T> T
94 oacc_kernels_copy (T a)
103 #pragma acc kernels copy (w, x, y, z)
105 w = accDouble<char>(w);
106 x = accDouble<int>(x);
107 y = accDouble<float>(y);
108 z = accDouble<double>(z);
111 #pragma acc kernels copyout (b) copyin (a)
114 #pragma acc kernels loop reduction (+:c)
115 for (int i = 0; i < 10; i++)
118 #pragma acc data if (1) copy (b)
126 #pragma acc enter data copyin (b)
127 #pragma acc kernels present (b)
138 int b = oacc_parallel_copy<int, 4> (5);
139 int c = oacc_kernels_copy<int> (5);