16 #pragma acc enter data create(data[0:size])
18 #pragma acc data present(data[0:size]) copyin(size)
19 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
21 #pragma acc loop gang worker vector
22 for(
int i = 0; i < size; ++i){
32 #pragma acc exit data delete(data[0:size])
39 int nv = nin * Nst_pad;
40 #pragma acc data present(v[0:nv]) copyin(a, nin, nst)
41 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
43 #pragma acc loop gang worker vector
44 for(
int ist = 0; ist < nst; ++ist){
46 for(
int in = 0; in < nin; ++in){
47 v[
IDX2(nin, in, ist)] = a;
58 #pragma acc update device(v[0:nv])
64 #pragma acc update device(v[nv1:nv])
70 #pragma acc update host(v[0:nv])
77 #pragma acc update host(v[nv1:nv])
82 int nin,
int nvol,
int nvol_pad)
86 int nv2 = nin * nvol_pad;
88 #pragma acc data present(v[0:nv2]) copyin(w[0:nv1], nin, nvol, nvol_pad)
89 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
91 #pragma acc loop gang worker vector
92 for(
int ist = 0; ist < nvol_pad; ++ist){
94 for(
int in = 0; in < nin; ++in){
98 for(
int in = 0; in < nin; ++in){
99 v[
IDX2(nin, in, ist)] = 0.0;
109 int nin,
int nvol,
int nvol_pad)
112 int nv1 = nin * nvol;
113 int nv2 = nin * nvol_pad;
115 #pragma acc data present(w[0:nv2]) copyin(nin, nvol, nvol_pad) \
117 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
119 #pragma acc loop gang worker vector
120 for(
int ist = 0; ist < nvol; ++ist){
121 for(
int in = 0; in < nin; ++in){
133 int nv = nin * Nvol_pad;
135 #pragma acc data present(v[0:nv], w[0:nv]) copyin(nin, nvol)
136 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
138 #pragma acc loop gang worker vector
139 for(
int ist = 0; ist < nvol; ++ist){
140 for(
int in = 0; in < nin; ++in){
141 v[
IDX2(nin, in, ist)] = w[
IDX2(nin, in, ist)];
153 int nv = nin * Nvol_pad;
155 #pragma acc data present(v[nv1:nv], w[nv2:nv]) \
156 copyin(nin, nvol, nv1, nv2)
158 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
160 #pragma acc loop gang worker vector
161 for(
int ist = 0; ist < nvol; ++ist){
162 for(
int in = 0; in < nin; ++in){
163 v[nv1 +
IDX2(nin, in, ist)] = w[nv2 +
IDX2(nin, in, ist)];
172 real_t *RESTRICT w,
int nv2,
int nin,
int nvol)
175 int nv = nin * Nvol_pad;
177 #pragma acc data present(v[nv1:nv],w[nv2:nv]) \
178 copyin(a, nin, nvol, nv1, nv2)
179 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
181 #pragma acc loop gang worker vector
182 for(
int ist = 0; ist < nvol; ++ist){
183 for(
int in = 0; in < nin; ++in){
184 v[nv1 +
IDX2(nin, in, ist)] += a * w[nv2 +
IDX2(nin, in, ist)];
193 real_t *RESTRICT w,
int nv2,
int nin,
int nvol)
196 int nv = nin * Nvol_pad;
198 #pragma acc data present(v[nv1:nv],w[nv2:nv]) \
199 copyin(ar, ai, nin, nvol, nv1, nv2)
200 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
204 #pragma acc loop gang worker vector
205 for(
int ist = 0; ist < nvol; ++ist){
206 for(
int in = 0; in < nin2; ++in){
209 v[nv1 +
IDX2(nin, 2*in, ist)] += ar * wr - ai * wi;
210 v[nv1 +
IDX2(nin, 2*in+1, ist)] += ai * wr + ar * wi;
219 real_t *RESTRICT w,
int nv2,
int nin,
int nvol)
222 int nv = nin * Nvol_pad;
224 #pragma acc data present(v[nv1:nv],w[nv2:nv])
225 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
227 #pragma acc loop gang worker vector
228 for(
int ist = 0; ist < nvol; ++ist){
229 for(
int in = 0; in < nin; ++in){
230 v[nv1 +
IDX2(nin, in, ist)] = a * v[nv1 +
IDX2(nin, in, ist)]
231 + w[nv2 +
IDX2(nin, in, ist)];
240 real_t *RESTRICT w,
int nv2,
int nin,
int nvol)
243 int nv = nin * Nvol_pad;
245 #pragma acc data present(v[nv1:nv],w[nv2:nv]) \
246 copyin(ar, ai, nin, nvol)
247 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
250 #pragma acc loop gang worker vector
251 for(
int ist = 0; ist < nvol; ++ist){
252 for(
int in = 0; in < nin2; ++in){
255 v[nv1 +
IDX2(nin, 2*in, ist)] = ar * vr - ai * vi
256 + w[nv2 +
IDX2(nin, 2*in, ist)];
257 v[nv1 +
IDX2(nin, 2*in+1, ist)] = ai * vr + ar * vi
258 + w[nv2 +
IDX2(nin, 2*in+1, ist)];
270 int nv = nin * Nvol_pad;
272 #pragma acc data present(v[nv1:nv]) copyin(a, nin, nvol)
273 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
275 #pragma acc loop gang worker vector
276 for(
int ist = 0; ist < nvol; ++ist){
277 for(
int in = 0; in < nin; ++in){
278 v[nv1 +
IDX2(nin, in, ist)] *= a;
290 int nv = nin * Nvol_pad;
293 #pragma acc data present(v[nv1:nv]) copyin(ar, ai, nin, nvol)
294 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
296 #pragma acc loop gang worker vector
297 for(
int ist = 0; ist < nvol; ++ist){
298 for(
int in = 0; in < nin2; ++in){
301 v[nv1 +
IDX2(nin, 2*in, ist)] = ar * vr - ai * vi;
302 v[nv1 +
IDX2(nin, 2*in+1, ist)] = ai * vr + ar * vi;
315 int nv = nin * Nvol_pad;
319 #pragma acc data present(v1[0:nv], v2[0:nv]) copyin(nin, nvol)
320 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
322 #pragma acc loop gang worker vector reduction(+:a)
323 for(
int ist = 0; ist < nvol; ++ist){
324 for(
int in = 0; in < nin; ++in){
325 a += v1[
IDX2(nin, in, ist)] * v2[
IDX2(nin, in, ist)];
338 int nv = nin * Nvol_pad;
342 #pragma acc data present(v1[0:nv])
343 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
345 #pragma acc loop gang worker vector reduction(+:a)
346 for(
int ist = 0; ist < nvol; ++ist){
347 for(
int in = 0; in < nin; ++in){
348 a += double(v1[
IDX2(nin, in, ist)] * v1[
IDX2(nin, in, ist)]);
367 int nv = nin * Nst_pad;
369 #pragma acc data present(v1[0:nv], v2[0:nv]) copyin(nst, nin)
370 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
374 #pragma acc loop gang worker vector reduction(+:ar2,ai2)
375 for(
int ist = 0; ist < nst; ++ist){
379 for(
int in = 0; in < nin2; ++in){
384 ar1 += double(v1r * v2r + v1i * v2i);
385 ai1 += double(v1r * v2i - v1i * v2r);
402 int nv = nin * Nst_pad;
404 #pragma acc data present(v1[0:nv]) copyin(nin, nst)
405 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
409 #pragma acc loop gang worker vector
410 for(
int ist = 0; ist < nst; ++ist){
411 for(
int in = 0; in < nin2; ++in){
414 v1[
IDX2(nin, 2*in, ist)] = -vi;
415 v1[
IDX2(nin, 2*in+1, ist)] = vr;
427 int nv = nin * Nst_pad;
429 #pragma acc data present(v1[0:nv]) copyin(nin, nst)
430 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
434 #pragma acc loop gang worker vector
435 for(
int ist = 0; ist < nst; ++ist){
436 for(
int in = 0; in < nin2; ++in){
438 v1[
IDX2(nin, 2*in+1, ist)] = -vi;