Go to the documentation of this file.
14 int nin,
int *Nsize,
int *bc)
19 int Nyzt = Nsize[1] * Nsize[2] * Nsize[3];
23 int size = nin *
CEIL_NWP(Nx * Nyzt);
26 #pragma acc data present(v1[0:size], buf[0:size_b]), copyin(bc2, Nx, Nyzt)
27 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
30 #pragma acc loop gang worker vector
34 for(
int in = 0; in < nin; ++in){
35 buf[in + nin *
iyzt] =
bc2 * v1[
IDX2(nin, in, ist)];
45 int nin,
int *Nsize,
int *bc)
50 int Nyzt = Nsize[1] * Nsize[2] * Nsize[3];
52 int size = nin *
CEIL_NWP(Nx * Nyzt);
55 #pragma acc data present(v2[0:size], buf[0:size_b]), copyin(Nx, Nyzt)
56 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
59 #pragma acc loop gang worker vector
63 for(
int in = 0; in < nin; ++in){
64 v2[
IDX2(nin, in, ist)] = buf[in + nin *
iyzt];
74 int nin,
int *Nsize,
int *bc)
79 int Nyzt = Nsize[1] * Nsize[2] * Nsize[3];
82 int size = nin *
CEIL_NWP(Nx * Nyzt);
84 #pragma acc data present(v2[0:size], v1[0:size]), \
85 copyin(bc[0:4], Nx, Nyzt, Nst)
86 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
89 #pragma acc loop gang worker vector
90 for(
int ist = 0; ist < Nst; ++ist){
93 int nei = ((
ix+1) % Nx) + Nx *
iyzt;
95 if(
ix == Nx-1)
bc2 = bc[0];
97 for(
int in = 0; in < nin; ++in){
98 v2[
IDX2(nin, in, ist)] =
bc2 * v1[
IDX2(nin, in, nei)];
109 int nin,
int *Nsize,
int *bc)
114 int Nyzt = Nsize[1] * Nsize[2] * Nsize[3];
116 int size = nin *
CEIL_NWP(Nx * Nyzt);
119 #pragma acc data present(v1[0:size], buf[0:size_b]), copyin(Nx, Nyzt)
120 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
123 #pragma acc loop gang worker vector
127 for(
int in = 0; in < nin; ++in){
128 buf[in + nin *
iyzt] = v1[
IDX2(nin, in, ist)];
138 int nin,
int *Nsize,
int *bc)
143 int Nyzt = Nsize[1] * Nsize[2] * Nsize[3];
147 int size = nin *
CEIL_NWP(Nx * Nyzt);
150 #pragma acc data present(v2[0:size], buf[0:size_b]), copyin(bc2, Nx, Nyzt)
151 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
154 #pragma acc loop gang worker vector
158 for(
int in = 0; in < nin; ++in){
159 v2[
IDX2(nin, in, ist)] =
bc2 * buf[in + nin *
iyzt];
169 int nin,
int *Nsize,
int *bc)
174 int Nyzt = Nsize[1] * Nsize[2] * Nsize[3];
177 int size = nin *
CEIL_NWP(Nx * Nyzt);
179 #pragma acc data present(v2[0:size], v1[0:size]), \
180 copyin(bc[0:4], Nx, Nyzt, Nst)
181 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
184 #pragma acc loop gang worker vector
185 for(
int ist = 0; ist < Nst; ++ist){
188 int nei =
ix-1 + Nx *
iyzt;
189 if(
ix == 0) nei = Nx-1 + Nx *
iyzt;
191 if(
ix == 0)
bc2 = bc[0];
193 for(
int in = 0; in < nin; ++in){
194 v2[
IDX2(nin, in, ist)] =
bc2 * v1[
IDX2(nin, in, nei)];
205 int nin,
int *Nsize,
int *bc)
209 int Nzt = Nsize[2] * Nsize[3];
213 int size = nin *
CEIL_NWP(Nx * Ny * Nzt);
214 int size_b = nin *
CEIL_NWP(Nx * Nzt);
216 #pragma acc data present(v1[0:size], buf[0:size_b]), \
217 copyin(bc2, Nx, Ny, Nzt)
218 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
221 #pragma acc loop gang worker vector collapse(2)
223 for(
int ix = 0;
ix < Nx; ++
ix){
225 int ist =
ix + Nx * (
iy + Ny *
izt);
226 int ixzt =
ix + Nx *
izt;
227 for(
int in = 0; in < nin; ++in){
228 buf[in + nin * ixzt] =
bc2 * v1[
IDX2(nin, in, ist)];
239 int nin,
int *Nsize,
int *bc)
245 int Nzt = Nsize[2] * Nsize[3];
246 int Nst = Nx * Ny * Nzt;
248 int size = nin *
CEIL_NWP(Nx * Ny * Nzt);
249 int size_b = nin *
CEIL_NWP(Nx * Nzt);
251 #pragma acc data present(v2[0:size], buf[0:size_b]), \
252 copyin(Nx, Ny, Nzt, Nst, idir)
253 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
256 #pragma acc loop gang worker vector collapse(2)
258 for(
int ix = 0;
ix < Nx; ++
ix){
260 int ist =
ix + Nx * (
iy + Ny *
izt);
261 int ixzt =
ix + Nx *
izt;
263 for(
int in = 0; in < nin; ++in){
264 v2[
IDX2(nin, in, ist)] = buf[in + nin * ixzt];
275 int nin,
int *Nsize,
int *bc)
281 int Nzt = Nsize[2] * Nsize[3];
282 int Nst = Nx * Ny * Nzt;
284 int size = nin *
CEIL_NWP(Nx * Ny * Nzt);
286 #pragma acc data present(v2[0:size], v1[0:size]), \
287 copyin(bc[0:4], idir, Nx, Ny, Nzt, Nst)
288 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
291 #pragma acc loop gang worker vector
292 for(
int ist = 0; ist < Nst; ++ist){
294 int iy = (ist/Nx) % Ny;
295 int izt = ist/(Nx*Ny);
296 int iy2 = (
iy+1) % Ny;
297 int nei =
ix + Nx * (iy2 + Ny *
izt);
301 for(
int in = 0; in < nin; ++in){
302 v2[
IDX2(nin, in, ist)] =
bc2 * v1[
IDX2(nin, in, nei)];
312 int nin,
int *Nsize,
int *bc)
318 int Nzt = Nsize[2] * Nsize[3];
320 int size = nin *
CEIL_NWP(Nx * Ny * Nzt);
321 int size_b = nin *
CEIL_NWP(Nx * Nzt);
323 #pragma acc data present(v1[0:size], buf[0:size_b]), \
325 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
328 #pragma acc loop gang worker vector collapse(2)
330 for(
int ix = 0;
ix < Nx; ++
ix){
332 int ist =
ix + Nx * (
iy + Ny*
izt);
333 int ixzt =
ix + Nx *
izt;
335 for(
int in = 0; in < nin; ++in){
336 buf[in + nin * ixzt] = v1[
IDX2(nin, in, ist)];
348 int nin,
int *Nsize,
int *bc)
354 int Nzt = Nsize[2] * Nsize[3];
358 int size = nin *
CEIL_NWP(Nx * Ny * Nzt);
359 int size_b = nin *
CEIL_NWP(Nx * Nzt);
361 #pragma acc data present(v2[0:size], buf[0:size_b]), \
362 copyin(bc2, Nx, Ny, Nzt)
363 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
366 #pragma acc loop gang worker vector collapse(2)
368 for(
int ix = 0;
ix < Nx; ++
ix){
370 int ist =
ix + Nx*(
iy + Ny*
izt);
371 int ixzt =
ix + Nx *
izt;
373 for(
int in = 0; in < nin; ++in){
374 v2[
IDX2(nin, in, ist)] =
bc2 * buf[in + nin*ixzt];
386 int nin,
int *Nsize,
int *bc)
392 int Nzt = Nsize[2] * Nsize[3];
393 int Nst = Nx * Ny * Nzt;
395 int size = nin *
CEIL_NWP(Nx * Ny * Nzt);
397 #pragma acc data present(v2[0:size], v1[0:size]), \
398 copyin(bc[0:4], idir, Nx, Ny, Nzt, Nst)
399 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
402 #pragma acc loop gang worker vector
403 for(
int ist = 0; ist < Nst; ++ist){
405 int iy = (ist/Nx) % Ny;
406 int izt = ist/(Nx*Ny);
407 int iy2 = (
iy-1+Ny) % Ny;
408 int nei =
ix + Nx * (iy2 + Ny *
izt);
412 for(
int in = 0; in < nin; ++in){
413 v2[
IDX2(nin, in, ist)] =
bc2 * v1[
IDX2(nin, in, nei)];
424 int nin,
int *Nsize,
int *bc)
428 int Nxy = Nsize[0] * Nsize[1];
434 int size = nin *
CEIL_NWP(Nxy * Nz * Nt);
435 int size_b = nin *
CEIL_NWP(Nxy * Nt);
437 #pragma acc data present(v1[0:size], buf[0:size_b]), \
438 copyin(bc2, Nxy, Nz, Nt)
439 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
442 #pragma acc loop gang worker vector collapse(2)
443 for(
int it = 0;
it < Nt; ++
it){
446 int ist =
ixy + Nxy * (
iz + Nz *
it);
447 int ixyt =
ixy + Nxy *
it;
449 for(
int in = 0; in < nin; ++in){
450 buf[in + nin * ixyt] =
bc2 * v1[
IDX2(nin, in, ist)];
462 int nin,
int *Nsize,
int *bc)
466 int Nxy = Nsize[0] * Nsize[1];
469 int Nst = Nxy * Nz * Nt;
471 int size = nin *
CEIL_NWP(Nxy * Nz * Nt);
472 int size_b = nin *
CEIL_NWP(Nxy * Nt);
474 #pragma acc data present(v2[0:size], buf[0:size_b]), \
475 copyin(Nxy, Nz, Nt, Nst, idir)
476 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
479 #pragma acc loop gang worker vector collapse(2)
480 for(
int it = 0;
it < Nt; ++
it){
483 int ist =
ixy + Nxy * (
iz + Nz *
it);
484 int ixyt =
ixy + Nxy *
it;
486 for(
int in = 0; in < nin; ++in){
487 v2[
IDX2(nin, in, ist)] = buf[in + nin * ixyt];
499 int nin,
int *Nsize,
int *bc)
503 int Nxy = Nsize[0] * Nsize[1];
506 int Nst = Nxy * Nz * Nt;
508 int size = nin *
CEIL_NWP(Nxy * Nz * Nt);
510 #pragma acc data present(v2[0:size], v1[0:size]), \
511 copyin(bc[0:4], idir, Nxy, Nz, Nt, Nst)
512 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
515 #pragma acc loop gang worker vector
516 for(
int ist = 0; ist < Nst; ++ist){
518 int iz = (ist/Nxy) % Nz;
519 int it = ist/(Nxy*Nz);
520 int iz2 = (
iz+1) % Nz;
521 int nei =
ixy + Nxy * (iz2 + Nz *
it);
525 for(
int in = 0; in < nin; ++in){
526 v2[
IDX2(nin, in, ist)] =
bc2 * v1[
IDX2(nin, in, nei)];
537 int nin,
int *Nsize,
int *bc)
541 int Nxy = Nsize[0] * Nsize[1];
544 int Nst = Nxy * Nz * Nt;
546 int size = nin *
CEIL_NWP(Nxy * Nz * Nt);
547 int size_b = nin *
CEIL_NWP(Nxy * Nt);
549 #pragma acc data present(v1[0:size], buf[0:size_b]), \
550 copyin(Nxy, Nz, Nt, Nst, idir)
551 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
554 #pragma acc loop gang worker vector collapse(2)
555 for(
int it = 0;
it < Nt; ++
it){
558 int ist =
ixy + Nxy * (
iz + Nz *
it);
559 int ixyt =
ixy + Nxy *
it;
561 for(
int in = 0; in < nin; ++in){
562 buf[in + nin * ixyt] = v1[
IDX2(nin, in, ist)];
573 int nin,
int *Nsize,
int *bc)
577 int Nxy = Nsize[0] * Nsize[1];
583 int size = nin *
CEIL_NWP(Nxy * Nz * Nt);
584 int size_b = nin *
CEIL_NWP(Nxy * Nt);
586 #pragma acc data present(v2[0:size], buf[0:size_b]), \
587 copyin(bc2, Nxy, Nz, Nt)
588 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
591 #pragma acc loop gang worker vector collapse(2)
592 for(
int it = 0;
it < Nt; ++
it){
595 int ist =
ixy + Nxy * (
iz + Nz *
it);
596 int ixyt =
ixy + Nxy *
it;
598 for(
int in = 0; in < nin; ++in){
599 v2[
IDX2(nin, in, ist)] =
bc2 * buf[in + nin*ixyt];
611 int nin,
int *Nsize,
int *bc)
615 int Nxy = Nsize[0] * Nsize[1];
618 int Nst = Nxy * Nz * Nt;
620 int size = nin *
CEIL_NWP(Nxy * Nz * Nt);
622 #pragma acc data present(v2[0:size], v1[0:size]), \
623 copyin(bc[0:4], idir, Nxy, Nz, Nt, Nst)
624 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
627 #pragma acc loop gang worker vector
628 for(
int ist = 0; ist < Nst; ++ist){
630 int iz = (ist/Nxy) % Nz;
631 int it = ist/(Nxy*Nz);
632 int iz2 = (
iz-1+Nz) % Nz;
633 int nei =
ixy + Nxy * (iz2 + Nz *
it);
637 for(
int in = 0; in < nin; ++in){
638 v2[
IDX2(nin, in, ist)] =
bc2 * v1[
IDX2(nin, in, nei)];
649 int nin,
int *Nsize,
int *bc)
653 int Nxyz = Nsize[0] * Nsize[1] * Nsize[2];
658 int size = nin *
CEIL_NWP(Nxyz * Nt);
661 #pragma acc data present(v1[0:size], buf[0:size_b]), copyin(bc2, Nxyz)
662 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
665 #pragma acc loop gang worker vector
668 int ist =
ixyz + Nxyz *
it;
669 for(
int in = 0; in < nin; ++in){
670 buf[in + nin *
ixyz] =
bc2 * v1[
IDX2(nin, in, ist)];
680 int nin,
int *Nsize,
int *bc)
684 int Nxyz = Nsize[0] * Nsize[1] * Nsize[2];
688 int size = nin *
CEIL_NWP(Nxyz * Nt);
691 #pragma acc data present(v2[0:size], buf[0:size_b]), \
692 copyin(Nxyz, Nst, idir)
693 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
696 #pragma acc loop gang worker vector
699 int ist =
ixyz + Nxyz *
it;
700 for(
int in = 0; in < nin; ++in){
701 v2[
IDX2(nin, in, ist)] = buf[in + nin *
ixyz];
711 int nin,
int *Nsize,
int *bc)
715 int Nxyz = Nsize[0] * Nsize[1] * Nsize[2];
719 int size = nin *
CEIL_NWP(Nxyz * Nt);
721 #pragma acc data present(v2[0:size], v1[0:size]), \
722 copyin(bc[0:4], idir, Nxyz, Nt, Nst)
723 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
726 #pragma acc loop gang worker vector
727 for(
int ist = 0; ist < Nst; ++ist){
728 int ixyz = ist % Nxyz;
730 int it2 = (
it+1) % Nt;
731 int nei =
ixyz + Nxyz * it2;
735 for(
int in = 0; in < nin; ++in){
736 v2[
IDX2(nin, in, ist)] =
bc2 * v1[
IDX2(nin, in, nei)];
747 int nin,
int *Nsize,
int *bc)
751 int Nxyz = Nsize[0] * Nsize[1] * Nsize[2];
755 int size = nin *
CEIL_NWP(Nxyz * Nt);
758 #pragma acc data present(v1[0:size], buf[0:size_b]), \
759 copyin(Nxyz, Nt, Nst, idir)
760 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
763 #pragma acc loop gang worker vector
766 int ist =
ixyz + Nxyz *
it;
767 for(
int in = 0; in < nin; ++in){
768 buf[in + nin *
ixyz] = v1[
IDX2(nin, in, ist)];
778 int nin,
int *Nsize,
int *bc)
782 int Nxyz = Nsize[0] * Nsize[1] * Nsize[2];
787 int size = nin *
CEIL_NWP(Nxyz * Nt);
790 #pragma acc data present(v2[0:size], buf[0:size_b]), copyin(bc2, Nxyz)
791 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
794 #pragma acc loop gang worker vector
797 int ist =
ixyz + Nxyz *
it;
798 for(
int in = 0; in < nin; ++in){
799 v2[
IDX2(nin, in, ist)] =
bc2 * buf[in + nin *
ixyz];
809 int nin,
int *Nsize,
int *bc)
813 int Nxyz = Nsize[0] * Nsize[1] * Nsize[2];
817 int size = nin *
CEIL_NWP(Nxyz * Nt);
819 #pragma acc data present(v2[0:size], v1[0:size]), \
820 copyin(bc[0:4], idir, Nxyz, Nt, Nst)
821 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
824 #pragma acc loop gang worker vector
825 for(
int ist = 0; ist < Nst; ++ist){
826 int ixyz = ist % Nxyz;
828 int it2 = (
it-1+Nt) % Nt;
829 int nei =
ixyz + Nxyz * it2;
833 for(
int in = 0; in < nin; ++in){
834 v2[
IDX2(nin, in, ist)] =
bc2 * v1[
IDX2(nin, in, nei)];
void shift_lex_tm1(real_t *RESTRICT buf, real_t *RESTRICT v1, int nin, int *Nsize, int *bc)
void shift_lex_tp1(real_t *RESTRICT buf, real_t *RESTRICT v1, int nin, int *Nsize, int *bc)
void shift_lex_ym2(real_t *RESTRICT v2, real_t *RESTRICT buf, int nin, int *Nsize, int *bc)
void shift_lex_zp1(real_t *RESTRICT buf, real_t *RESTRICT v1, int nin, int *Nsize, int *bc)
void shift_lex_zmb(real_t *RESTRICT v2, real_t *RESTRICT v1, int nin, int *Nsize, int *bc)
void shift_lex_tpb(real_t *RESTRICT v2, real_t *RESTRICT v1, int nin, int *Nsize, int *bc)
void shift_lex_zm1(real_t *RESTRICT buf, real_t *RESTRICT v1, int nin, int *Nsize, int *bc)
void shift_lex_xmb(real_t *RESTRICT v2, real_t *RESTRICT v1, int nin, int *Nsize, int *bc)
void shift_lex_tp2(real_t *RESTRICT v2, real_t *RESTRICT buf, int nin, int *Nsize, int *bc)
void shift_lex_ypb(real_t *RESTRICT v2, real_t *RESTRICT v1, int nin, int *Nsize, int *bc)
void shift_lex_xm2(real_t *RESTRICT v2, real_t *RESTRICT buf, int nin, int *Nsize, int *bc)
void shift_lex_tmb(real_t *RESTRICT v2, real_t *RESTRICT v1, int nin, int *Nsize, int *bc)
void shift_lex_xpb(real_t *RESTRICT v2, real_t *RESTRICT v1, int nin, int *Nsize, int *bc)
void shift_lex_xp1(real_t *RESTRICT buf, real_t *RESTRICT v1, int nin, int *Nsize, int *bc)
void shift_lex_yp1(real_t *RESTRICT buf, real_t *RESTRICT v1, int nin, int *Nsize, int *bc)
void shift_lex_ym1(real_t *RESTRICT buf, real_t *RESTRICT v1, int nin, int *Nsize, int *bc)
void shift_lex_zm2(real_t *RESTRICT v2, real_t *RESTRICT buf, int nin, int *Nsize, int *bc)
#define IDX2(nin, in, ist)
void shift_lex_zpb(real_t *RESTRICT v2, real_t *RESTRICT v1, int nin, int *Nsize, int *bc)
void shift_lex_xp2(real_t *RESTRICT v2, real_t *RESTRICT buf, int nin, int *Nsize, int *bc)
void shift_lex_ymb(real_t *RESTRICT v2, real_t *RESTRICT v1, int nin, int *Nsize, int *bc)
void shift_lex_zp2(real_t *RESTRICT v2, real_t *RESTRICT buf, int nin, int *Nsize, int *bc)
void shift_lex_xm1(real_t *RESTRICT buf, real_t *RESTRICT v1, int nin, int *Nsize, int *bc)
void shift_lex_tm2(real_t *RESTRICT v2, real_t *RESTRICT buf, int nin, int *Nsize, int *bc)
void shift_lex_yp2(real_t *RESTRICT v2, real_t *RESTRICT buf, int nin, int *Nsize, int *bc)