12 #pragma acc parallel async \
13 num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
15 int Nyzt = Ny * Nz * Nt;
22 for(
int ic = 0; ic <
NC; ++ic){
37 #pragma acc parallel async \
38 num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
40 int Nyzt = Ny * Nz * Nt;
48 for(
int ic = 0; ic <
NC; ++ic){
59 for(
int ic = 0; ic <
NC; ++ic){
61 for(
int ic2 = 0; ic2 <
NC; ++ic2){
62 ut[2*ic2 ] = u[
IDX2_G_R(ic, ic2, ist)];
63 ut[2*ic2+1] = - u[
IDX2_G_I(ic, ic2, ist)];
66 wt1[0] =
MULT_UV_R(ut[0], ut[1], ut[2], ut[3], ut[4], ut[5],
68 wt1[1] =
MULT_UV_I(ut[0], ut[1], ut[2], ut[3], ut[4], ut[5],
70 wt2[0] =
MULT_UV_R(ut[0], ut[1], ut[2], ut[3], ut[4], ut[5],
72 wt2[1] =
MULT_UV_I(ut[0], ut[1], ut[2], ut[3], ut[4], ut[5],
91 #pragma acc parallel async \
92 num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
96 #pragma acc loop collapse(2)
98 for(
int ix = 0;
ix < Nx; ++
ix){
100 int ist =
ix + Nx * (
iy + Ny *
izt);
101 int ixzt =
ix + Nx *
izt;
104 for(
int ic = 0; ic <
NC; ++ic){
121 #pragma acc parallel async \
122 num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
126 #pragma acc loop collapse(2)
128 for(
int ix = 0;
ix < Nx; ++
ix){
130 int ist =
ix + Nx * (
iy + Ny*
izt);
131 int istu = ist + Nst_pad;
132 int ixzt =
ix + Nx *
izt;
135 for(
int ic = 0; ic <
NC; ++ic){
144 for(
int ic = 0; ic <
NC; ++ic){
147 for(
int ic2 = 0; ic2 <
NC; ++ic2){
148 ut[2*ic2 ] = u[
IDX2_G_R(ic, ic2, istu)];
149 ut[2*ic2+1] = - u[
IDX2_G_I(ic, ic2, istu)];
153 wt1[0] =
MULT_UV_R(ut[0], ut[1], ut[2], ut[3], ut[4], ut[5],
155 wt1[1] =
MULT_UV_I(ut[0], ut[1], ut[2], ut[3], ut[4], ut[5],
157 wt2[0] =
MULT_UV_R(ut[0], ut[1], ut[2], ut[3], ut[4], ut[5],
159 wt2[1] =
MULT_UV_I(ut[0], ut[1], ut[2], ut[3], ut[4], ut[5],
162 buf_ym[
IDXBF_R(ic, 0, ixzt)] = wt1[0];
163 buf_ym[
IDXBF_I(ic, 0, ixzt)] = wt1[1];
164 buf_ym[
IDXBF_R(ic, 1, ixzt)] = wt2[0];
165 buf_ym[
IDXBF_I(ic, 1, ixzt)] = wt2[1];
179 #pragma acc parallel async \
180 num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
184 #pragma acc loop collapse(2)
185 for(
int it = 0;
it < Nt; ++
it){
188 int ist =
ixy + Nxy * (
iz + Nz *
it);
189 int ixyt =
ixy + Nxy *
it;
192 for(
int ic = 0; ic <
NC; ++ic){
209 #pragma acc parallel async \
210 num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
214 #pragma acc loop collapse(2)
215 for(
int it = 0;
it < Nt; ++
it){
218 int ist =
ixy + Nxy * (
iz + Nz *
it);
219 int istu = ist + Nst_pad * 2;
220 int ixyt =
ixy + Nxy *
it;
223 for(
int ic = 0; ic <
NC; ++ic){
232 for(
int ic = 0; ic <
NC; ++ic){
235 for(
int ic2 = 0; ic2 <
NC; ++ic2){
236 ut[2*ic2 ] = u[
IDX2_G_R(ic, ic2, istu)];
237 ut[2*ic2+1] = - u[
IDX2_G_I(ic, ic2, istu)];
241 wt1[0] =
MULT_UV_R(ut[0], ut[1], ut[2], ut[3], ut[4], ut[5],
243 wt1[1] =
MULT_UV_I(ut[0], ut[1], ut[2], ut[3], ut[4], ut[5],
245 wt2[0] =
MULT_UV_R(ut[0], ut[1], ut[2], ut[3], ut[4], ut[5],
247 wt2[1] =
MULT_UV_I(ut[0], ut[1], ut[2], ut[3], ut[4], ut[5],
249 buf_zm[
IDXBF_R(ic, 0, ixyt)] = wt1[0];
250 buf_zm[
IDXBF_I(ic, 0, ixyt)] = wt1[1];
251 buf_zm[
IDXBF_R(ic, 1, ixyt)] = wt2[0];
252 buf_zm[
IDXBF_I(ic, 1, ixyt)] = wt2[1];