Go to the documentation of this file.
10 #ifndef MULT_DOMAINWALL_5DIN_DIR_ACC_INCLUDED
11 #define MULT_DOMAINWALL_5DIN_DIR_ACC_INCLUDED
16 int Ns,
int *bc,
int *Nsize,
int *do_comm,
int flag)
22 int Nst = Nx * Ny * Nz * Nt;
27 int size = Nin5 * Nst_pad;
28 int size_u =
NDF * Nst_pad *
NDIM;
30 #pragma acc data present(vp[0:size], up[0:size_u], wp[0:size]) \
31 copyin(Nst, Nst_pad, Nx, Ny, Nz, Nt, Nin5, Ns, \
32 bc[0:NDIM], do_comm[0:NDIM])
34 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
37 #pragma acc loop gang worker vector
38 for (
int site = 0; site < Nst; ++site) {
44 for(
int is = 0; is < Ns; ++is){
49 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
53 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
54 vL[ivcd] = vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)];
60 if ((
ix < Nx-1) || (do_comm[
idir] == 0)) {
61 int ix2 = (
ix + 1) % Nx;
64 if(
ix == Nx-1)
bc2 = bc[0];
70 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
76 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
77 vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)] = vL[ivcd];
92 int Ns,
int *bc,
int *Nsize,
int *do_comm,
int flag)
98 int Nst = Nx * Ny * Nz * Nt;
101 int Nin5 =
NVCD * Ns;
103 int size = Nin5 * Nst_pad;
104 int size_u =
NDF * Nst_pad *
NDIM;
106 #pragma acc data present(vp[0:size], up[0:size_u], wp[0:size]) \
107 copyin(Nst, Nst_pad, Nx, Ny, Nz, Nt, Nin5, Ns,\
108 bc[0:NDIM], do_comm[0:NDIM])
110 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
113 #pragma acc loop gang worker vector
114 for (
int site = 0; site < Nst; ++site) {
117 int iyzt = site / Nx;
121 for(
int is = 0; is < Ns; ++is){
126 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
130 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
131 vL[ivcd] = vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)];
137 if ((
ix > 0) || (do_comm[
idir] == 0)) {
138 int ix2 = (
ix - 1 + Nx) % Nx;
141 if(
ix == 0)
bc2 = bc[0];
147 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
153 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
154 vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)] = vL[ivcd];
169 int Ns,
int *bc,
int *Nsize,
int *do_comm,
int flag)
175 int Nst = Nx * Ny * Nz * Nt;
178 int Nin5 =
NVCD * Ns;
180 int size = Nin5 * Nst_pad;
181 int size_u =
NDF * Nst_pad *
NDIM;
183 #pragma acc data present(vp[0:size], up[0:size_u], wp[0:size]) \
184 copyin(Nst, Nst_pad, Nx, Ny, Nz, Nt, Nin5, Ns, \
185 bc[0:NDIM], do_comm[0:NDIM])
187 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
190 #pragma acc loop gang worker vector
191 for (
int site = 0; site < Nst; ++site) {
194 int iyzt = site / Nx;
198 for(
int is = 0; is < Ns; ++is){
203 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
207 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
208 vL[ivcd] = vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)];
214 if ((
iy < Ny-1) || (do_comm[
idir] == 0)) {
215 int iy2 = (
iy + 1) % Ny;
216 int nei =
ix + Nx * (iy2 + Ny *
izt);
224 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
231 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
232 vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)] = vL[ivcd];
247 int Ns,
int *bc,
int *Nsize,
int *do_comm,
int flag)
253 int Nst = Nx * Ny * Nz * Nt;
256 int Nin5 =
NVCD * Ns;
258 int size = Nin5 * Nst_pad;
259 int size_u =
NDF * Nst_pad *
NDIM;
261 #pragma acc data present(vp[0:size], up[0:size_u], wp[0:size]) \
262 copyin(Nst, Nst_pad, Nx, Ny, Nz, Nt, Nin5, Ns, \
263 bc[0:NDIM], do_comm[0:NDIM])
265 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
268 #pragma acc loop gang worker vector
269 for (
int site = 0; site < Nst; ++site) {
273 int iyzt = site / Nx;
275 int izt = site / Nxy;
279 for(
int is = 0; is < Ns; ++is){
284 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
288 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
289 vL[ivcd] = vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)];
295 if ((
iy > 0) || (do_comm[
idir] == 0)) {
296 int iy2 = (
iy - 1 + Ny) % Ny;
297 int nei =
ix + Nx * (iy2 + Ny *
izt);
299 if(
iy == 0)
bc2 = bc[1];
305 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
311 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
312 vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)] = vL[ivcd];
327 int Ns,
int *bc,
int *Nsize,
int *do_comm,
int flag)
333 int Nst = Nx * Ny * Nz * Nt;
336 int Nin5 =
NVCD * Ns;
338 int size = Nin5 * Nst_pad;
339 int size_u =
NDF * Nst_pad *
NDIM;
341 #pragma acc data present(vp[0:size], up[0:size_u], wp[0:size]) \
342 copyin(Nst, Nst_pad, Nx, Ny, Nz, Nt, Nin5, Ns, \
343 bc[0:NDIM], do_comm[0:NDIM])
345 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
348 #pragma acc loop gang worker vector
349 for (
int site = 0; site < Nst; ++site) {
352 int ixy = site % Nxy;
353 int izt = site / Nxy;
359 for(
int is = 0; is < Ns; ++is){
364 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
368 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
369 vL[ivcd] = vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)];
375 if ((
iz < Nz-1) || (do_comm[
idir] == 0)) {
376 int iz2 = (
iz + 1) % Nz;
377 int nei =
ixy + Nxy * (iz2 + Nz *
it);
379 if(
iz == Nz-1)
bc2 = bc[2];
385 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
391 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
392 vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)] = vL[ivcd];
407 int Ns,
int *bc,
int *Nsize,
int *do_comm,
int flag)
413 int Nst = Nx * Ny * Nz * Nt;
416 int Nin5 =
NVCD * Ns;
418 int size = Nin5 * Nst_pad;
419 int size_u =
NDF * Nst_pad *
NDIM;
421 #pragma acc data present(vp[0:size], up[0:size_u], wp[0:size]) \
422 copyin(Nst, Nst_pad, Nx, Ny, Nz, Nt, Nin5, Ns, \
423 bc[0:NDIM], do_comm[0:NDIM])
425 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
428 #pragma acc loop gang worker vector
429 for (
int site = 0; site < Nst; ++site) {
432 int ixy = site % Nxy;
433 int izt = site / Nxy;
439 for(
int is = 0; is < Ns; ++is){
444 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
448 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
449 vL[ivcd] = vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)];
455 if ((
iz > 0) || (do_comm[
idir] == 0)) {
456 int iz2 = (
iz - 1 + Nz) % Nz;
457 int nei =
ixy + Nxy * (iz2 + Nz *
it);
459 if(
iz == 0)
bc2 = bc[2];
465 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
471 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
472 vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)] = vL[ivcd];
487 int Ns,
int *bc,
int *Nsize,
int *do_comm,
int flag)
493 int Nst = Nx * Ny * Nz * Nt;
496 int Nin5 =
NVCD * Ns;
498 int size = Nin5 * Nst_pad;
499 int size_u =
NDF * Nst_pad *
NDIM;
501 #pragma acc data present(vp[0:size], up[0:size_u], wp[0:size]) \
502 copyin(Nst, Nst_pad, Nx, Ny, Nz, Nt, Nin5, Ns, \
503 bc[0:NDIM], do_comm[0:NDIM])
505 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
508 #pragma acc loop gang worker vector
509 for (
int site = 0; site < Nst; ++site) {
513 int izt = site / Nxy;
515 int ixyz = site % Nxyz;
519 for(
int is = 0; is < Ns; ++is){
524 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
528 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
529 vL[ivcd] = vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)];
535 if ((
it < Nt-1) || (do_comm[
idir] == 0)) {
536 int it2 = (
it + 1) % Nt;
537 int nei =
ixyz + Nxyz * it2;
539 if(
it == Nt-1)
bc2 = bc[3];
545 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
551 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
552 vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)] = vL[ivcd];
567 int Ns,
int *bc,
int *Nsize,
int *do_comm,
int flag)
573 int Nst = Nx * Ny * Nz * Nt;
576 int Nin5 =
NVCD * Ns;
578 int size = Nin5 * Nst_pad;
579 int size_u =
NDF * Nst_pad *
NDIM;
581 #pragma acc data present(vp[0:size], up[0:size_u], wp[0:size]) \
582 copyin(Nst, Nst_pad, Nx, Ny, Nz, Nt, Nin5, Ns, \
583 bc[0:NDIM], do_comm[0:NDIM])
585 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
588 #pragma acc loop gang worker vector
589 for (
int site = 0; site < Nst; ++site) {
593 int izt = site / Nxy;
595 int ixyz = site % Nxyz;
599 for(
int is = 0; is < Ns; ++is){
604 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
608 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
609 vL[ivcd] = vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)];
615 if ((
it > 0) || (do_comm[
idir] == 0)) {
616 int it2 = (
it - 1 + Nt) % Nt;
617 int nei =
ixyz + Nxyz * it2;
619 if(
it == 0)
bc2 = bc[3];
625 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
631 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
632 vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)] = vL[ivcd];
647 int Ns,
int *bc,
int *Nsize)
653 int Nst = Nx * Ny * Nz * Nt;
656 int Nin5 =
NVCD * Ns;
657 int Nin5bd =
NVC *
ND2 * Ns;
659 int size = Nin5 * Nst_pad;
660 int size_u =
NDF * Nst_pad *
NDIM;
662 int size_bx = Nin5bd *
CEIL_NWP(Ny * Nz * Nt);
664 #pragma acc data present(up[0:size_u], wp[0:size], \
666 copyin(Nst, Nst_pad, Nx, Ny, Nz, Nt, Nin5, Ns, bc[0:NDIM])
669 int Nyzt = Ny * Nz * Nt;
671 #pragma acc parallel \
672 num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
673 #pragma acc loop gang worker vector
676 int site =
ix + Nx *
iyzt;
678 for (
int is = 0; is < Ns; ++is) {
680 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
681 wt[ivcd] = wp[
IDX2(Nin5, (ivcd +
NVCD * is), site)];
684 for(
int ivcd = 0; ivcd <
NVC *
ND2; ++ivcd){
685 buf_xp[
IDX2(Nin5bd, (ivcd + NVCD2 * is),
iyzt)] =
bc2 * vt[ivcd];
696 int Ns,
int *bc,
int *Nsize)
702 int Nst = Nx * Ny * Nz * Nt;
705 int Nin5 =
NVCD * Ns;
706 int Nin5bd =
NVC *
ND2 * Ns;
708 int size = Nin5 * Nst_pad;
709 int size_u =
NDF * Nst_pad *
NDIM;
710 int size_bx = Nin5bd *
CEIL_NWP(Ny * Nz * Nt);
712 #pragma acc data present(up[0:size_u], wp[0:size], \
714 copyin(Nst, Nst_pad, Nx, Ny, Nz, Nt, Nin5, Ns, bc[0:NDIM])
718 int Nyzt = Ny * Nz * Nt;
720 #pragma acc parallel \
721 num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
722 #pragma acc loop gang worker vector
725 int site =
ix + Nx *
iyzt;
728 for (
int is = 0; is < Ns; ++is) {
730 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
731 wt[ivcd] = wp[
IDX2(Nin5, (ivcd +
NVCD * is), site)];
734 for(
int ivcd = 0; ivcd <
NVC *
ND2; ++ivcd){
735 buf_xm[
IDX2(Nin5bd, (ivcd + NVCD2 * is),
iyzt)] = vt[ivcd];
746 int Ns,
int *bc,
int *Nsize)
752 int Nst = Nx * Ny * Nz * Nt;
755 int Nin5 =
NVCD * Ns;
756 int Nin5bd =
NVC *
ND2 * Ns;
758 int size = Nin5 * Nst_pad;
759 int size_u =
NDF * Nst_pad *
NDIM;
760 int size_by = Nin5bd *
CEIL_NWP(Nx * Nz * Nt);
762 #pragma acc data present(up[0:size_u], wp[0:size], \
764 copyin(Nst, Nst_pad, Nx, Ny, Nz, Nt, Nin5, Ns, bc[0:NDIM])
767 int Nxzt = Nx * Nz * Nt;
769 #pragma acc parallel \
770 num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
771 #pragma acc loop gang worker vector
772 for (
int ixzt = 0; ixzt < Nxzt; ++ixzt) {
776 int site =
ix + Nx * (
iy + Ny *
izt);
778 for (
int is = 0; is < Ns; ++is) {
780 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
781 wt[ivcd] = wp[
IDX2(Nin5, (ivcd +
NVCD * is), site)];
784 for(
int ivcd = 0; ivcd <
NVC *
ND2; ++ivcd){
785 buf_yp[
IDX2(Nin5bd, (ivcd + NVCD2 * is), ixzt)] =
bc2 * vt[ivcd];
795 int Ns,
int *bc,
int *Nsize)
801 int Nst = Nx * Ny * Nz * Nt;
804 int Nin5 =
NVCD * Ns;
805 int Nin5bd =
NVC *
ND2 * Ns;
807 int size = Nin5 * Nst_pad;
808 int size_u =
NDF * Nst_pad *
NDIM;
809 int size_by = Nin5bd *
CEIL_NWP(Nx * Nz * Nt);
811 #pragma acc data present(up[0:size_u], wp[0:size], \
813 copyin(Nst, Nst_pad, Nx, Ny, Nz, Nt, Nin5, Ns, bc[0:NDIM])
817 int Nxzt = Nx * Nz * Nt;
819 #pragma acc parallel \
820 num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
821 #pragma acc loop gang worker vector
822 for (
int ixzt = 0; ixzt < Nxzt; ++ixzt) {
826 int site =
ix + Nx * (
iy + Ny *
izt);
829 for (
int is = 0; is < Ns; ++is) {
831 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
832 wt[ivcd] = wp[
IDX2(Nin5, (ivcd +
NVCD * is), site)];
835 for(
int ivcd = 0; ivcd <
NVC *
ND2; ++ivcd){
836 buf_ym[
IDX2(Nin5bd, (ivcd + NVCD2 * is), ixzt)] = vt[ivcd];
847 int Ns,
int *bc,
int *Nsize)
853 int Nst = Nx * Ny * Nz * Nt;
856 int Nin5 =
NVCD * Ns;
857 int Nin5bd =
NVC *
ND2 * Ns;
859 int size = Nin5 * Nst_pad;
860 int size_u =
NDF * Nst_pad *
NDIM;
861 int size_bz = Nin5bd *
CEIL_NWP(Nx * Ny * Nt);
863 #pragma acc data present(up[0:size_u], wp[0:size], buf_zp[0:size_bz])\
864 copyin(Nst, Nst_pad, Nx, Ny, Nz, Nt, Nin5, Ns, bc[0:NDIM])
867 int Nxyt = Nx * Ny * Nt;
869 #pragma acc parallel \
870 num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
871 #pragma acc loop gang worker vector
872 for (
int ixyt = 0; ixyt < Nxyt; ++ixyt) {
874 int ixy = ixyt % Nxy;
876 int site =
ixy + Nxy * (
iz + Nz *
it);
878 for (
int is = 0; is < Ns; ++is) {
880 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
881 wt[ivcd] = wp[
IDX2(Nin5, (ivcd +
NVCD * is), site)];
884 for(
int ivcd = 0; ivcd <
NVC *
ND2; ++ivcd){
885 buf_zp[
IDX2(Nin5bd, (ivcd + NVCD2 * is), ixyt)] =
bc2 * vt[ivcd];
896 int Ns,
int *bc,
int *Nsize)
902 int Nst = Nx * Ny * Nz * Nt;
905 int Nin5 =
NVCD * Ns;
906 int Nin5bd =
NVC *
ND2 * Ns;
908 int size = Nin5 * Nst_pad;
909 int size_u =
NDF * Nst_pad *
NDIM;
910 int size_bz = Nin5bd *
CEIL_NWP(Nx * Ny * Nt);
912 #pragma acc data present(up[0:size_u], wp[0:size], \
914 copyin(Nst, Nst_pad, Nx, Ny, Nz, Nt, Nin5, Ns, bc[0:NDIM])
919 int Nxyt = Nx * Ny * Nt;
921 #pragma acc parallel \
922 num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
923 #pragma acc loop gang worker vector
924 for (
int ixyt = 0; ixyt < Nxyt; ++ixyt) {
926 int ixy = ixyt % Nxy;
928 int site =
ixy + Nxy * (
iz + Nz *
it);
931 for (
int is = 0; is < Ns; ++is) {
933 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
934 wt[ivcd] = wp[
IDX2(Nin5, (ivcd +
NVCD * is), site)];
937 for(
int ivcd = 0; ivcd <
NVC *
ND2; ++ivcd){
938 buf_zm[
IDX2(Nin5bd, (ivcd + NVCD2 * is), ixyt)] = vt[ivcd];
950 int Ns,
int *bc,
int *Nsize)
956 int Nst = Nx * Ny * Nz * Nt;
959 int Nin5 =
NVCD * Ns;
960 int Nin5bd =
NVC *
ND2 * Ns;
962 int size = Nin5 * Nst_pad;
963 int size_u =
NDF * Nst_pad *
NDIM;
964 int size_bt = Nin5bd *
CEIL_NWP(Nx * Ny * Nz);
966 #pragma acc data present(up[0:size_u], wp[0:size], \
967 buf_tp[0:size_bt] ) \
968 copyin(Nst, Nst_pad, Nx, Ny, Nz, Nt, Nin5, Ns, bc[0:NDIM])
970 int Nxyz = Nx * Ny * Nz;
972 #pragma acc parallel \
973 num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
974 #pragma acc loop gang worker vector
977 int site =
ixyz + Nxyz *
it;
979 for (
int is = 0; is < Ns; ++is) {
981 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
982 wt[ivcd] = wp[
IDX2(Nin5, (ivcd +
NVCD * is), site)];
985 for(
int ivcd = 0; ivcd <
NVC *
ND2; ++ivcd){
986 buf_tp[
IDX2(Nin5bd, (ivcd + NVCD2 * is),
ixyz)] =
bc2 * vt[ivcd];
998 int Ns,
int *bc,
int *Nsize)
1004 int Nst = Nx * Ny * Nz * Nt;
1007 int Nin5 =
NVCD * Ns;
1008 int Nin5bd =
NVC *
ND2 * Ns;
1010 int size = Nin5 * Nst_pad;
1011 int size_u =
NDF * Nst_pad *
NDIM;
1012 int size_bt = Nin5bd *
CEIL_NWP(Nx * Ny * Nz);
1014 #pragma acc data present(up[0:size_u], wp[0:size], \
1015 buf_tm[0:size_bt] ) \
1016 copyin(Nst, Nst_pad, Nx, Ny, Nz, Nt, Nin5, Ns, bc[0:NDIM])
1020 int Nxyz = Nx * Ny * Nz;
1022 #pragma acc parallel \
1023 num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
1024 #pragma acc loop gang worker vector
1027 int site =
ixyz + Nxyz *
it;
1030 for (
int is = 0; is < Ns; ++is) {
1032 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
1033 wt[ivcd] = wp[
IDX2(Nin5, (ivcd +
NVCD * is), site)];
1036 for(
int ivcd = 0; ivcd <
NVC *
ND2; ++ivcd){
1037 buf_tm[
IDX2(Nin5bd, (ivcd + NVCD2 * is),
ixyz)] = vt[ivcd];
1048 int Ns,
int *bc,
int *Nsize)
1054 int Nst = Nx * Ny * Nz * Nt;
1057 int Nin5 =
NVCD * Ns;
1058 int Nin5bd = (
NVCD/2) * Ns;
1060 int size = Nin5 * Nst_pad;
1061 int size_u =
NDF * Nst_pad * 4;
1062 int size_bx = Nin5bd *
CEIL_NWP(Ny * Nz * Nt);
1064 #pragma acc data present(buf_xp[0:size_bx], \
1065 vp[0:size], up[0:size_u]) \
1066 copyin(Nst, Nst_pad, Nx, Ny, Nz, Nt, Nin5, Ns, bc[0:NDIM])
1069 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
1072 #pragma acc loop gang worker vector
1073 for (
int site = 0; site < Nst; ++site) {
1075 int iyzt = site / Nx;
1079 for(
int is = 0; is < Ns; ++is){
1083 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
1093 for(
int ivcd = 0; ivcd < NVCD2; ++ivcd){
1094 wt[ivcd] = buf_xp[
IDX2(Nin5bd, (ivcd + NVCD2 * is),
iyzt)];
1098 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
1099 vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)] += vL[ivcd];
1113 int Ns,
int *bc,
int *Nsize)
1119 int Nst = Nx * Ny * Nz * Nt;
1122 int Nin5 =
NVCD * Ns;
1123 int Nin5bd = (
NVCD/2) * Ns;
1125 int size = Nin5 * Nst_pad;
1126 int size_u =
NDF * Nst_pad * 4;
1127 int size_bx = Nin5bd *
CEIL_NWP(Ny * Nz * Nt);
1129 #pragma acc data present(buf_xm[0:size_bx], \
1130 vp[0:size], up[0:size_u]) \
1131 copyin(Nst, Nst_pad, Nx, Ny, Nz, Nt, Nin5, Ns, bc[0:NDIM])
1134 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
1137 #pragma acc loop gang worker vector
1138 for (
int site = 0; site < Nst; ++site) {
1140 int iyzt = site / Nx;
1142 for(
int is = 0; is < Ns; ++is){
1146 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
1153 for(
int ivcd = 0; ivcd < NVCD2; ++ivcd){
1154 wt[ivcd] =
bc2 * buf_xm[
IDX2(Nin5bd, (ivcd + NVCD2 * is),
iyzt)];
1158 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
1159 vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)] += vL[ivcd];
1173 int Ns,
int *bc,
int *Nsize)
1179 int Nst = Nx * Ny * Nz * Nt;
1182 int Nin5 =
NVCD * Ns;
1183 int Nin5bd = (
NVCD/2) * Ns;
1185 int size = Nin5 * Nst_pad;
1186 int size_u =
NDF * Nst_pad * 4;
1187 int size_by = Nin5bd *
CEIL_NWP(Nx * Nz * Nt);
1189 #pragma acc data present(buf_yp[0:size_by], \
1190 vp[0:size], up[0:size_u]) \
1191 copyin(Nst, Nst_pad, Nx, Ny, Nz, Nt, Nin5, Ns, bc[0:NDIM])
1194 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
1198 #pragma acc loop gang worker vector
1199 for (
int site = 0; site < Nst; ++site) {
1201 int iyzt = site / Nx;
1203 int izt = site / Nxy;
1207 for(
int is = 0; is < Ns; ++is){
1211 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
1216 int ixzt =
ix + Nx *
izt;
1222 for(
int ivcd = 0; ivcd < NVCD2; ++ivcd){
1223 wt[ivcd] = buf_yp[
IDX2(Nin5bd, (ivcd + NVCD2 * is), ixzt)];
1227 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
1228 vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)] += vL[ivcd];
1242 int Ns,
int *bc,
int *Nsize)
1248 int Nst = Nx * Ny * Nz * Nt;
1251 int Nin5 =
NVCD * Ns;
1252 int Nin5bd = (
NVCD/2) * Ns;
1254 int size = Nin5 * Nst_pad;
1255 int size_u =
NDF * Nst_pad * 4;
1256 int size_by = Nin5bd *
CEIL_NWP(Nx * Nz * Nt);
1258 #pragma acc data present(buf_ym[0:size_by], \
1259 vp[0:size], up[0:size_u]) \
1260 copyin(Nst, Nst_pad, Nx, Ny, Nz, Nt, Nin5, Ns, bc[0:NDIM])
1263 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
1267 #pragma acc loop gang worker vector
1268 for (
int site = 0; site < Nst; ++site) {
1270 int iyzt = site / Nx;
1272 int izt = site / Nxy;
1274 for(
int is = 0; is < Ns; ++is){
1278 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
1282 int ixzt =
ix + Nx *
izt;
1287 for(
int ivcd = 0; ivcd < NVCD2; ++ivcd){
1288 wt[ivcd] =
bc2 * buf_ym[
IDX2(Nin5bd, (ivcd + NVCD2 * is), ixzt)];
1292 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
1293 vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)] += vL[ivcd];
1308 int Ns,
int *bc,
int *Nsize)
1314 int Nst = Nx * Ny * Nz * Nt;
1317 int Nin5 =
NVCD * Ns;
1318 int Nin5bd = (
NVCD/2) * Ns;
1320 int size = Nin5 * Nst_pad;
1321 int size_u =
NDF * Nst_pad * 4;
1322 int size_bz = Nin5bd *
CEIL_NWP(Nx * Ny * Nt);
1324 #pragma acc data present(buf_zp[0:size_bz], \
1325 vp[0:size], up[0:size_u]) \
1326 copyin(Nst, Nst_pad, Nx, Ny, Nz, Nt, Nin5, Ns, bc[0:NDIM])
1329 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
1333 #pragma acc loop gang worker vector
1334 for (
int site = 0; site < Nst; ++site) {
1335 int ixy = site % Nxy;
1336 int izt = site / Nxy;
1340 for(
int is = 0; is < Ns; ++is){
1344 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
1349 int ixyt =
ixy + Nxy *
it;
1354 for(
int ivcd = 0; ivcd < NVCD2; ++ivcd){
1355 wt[ivcd] = buf_zp[
IDX2(Nin5bd, (ivcd + NVCD2 * is), ixyt)];
1359 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
1360 vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)] += vL[ivcd];
1374 int Ns,
int *bc,
int *Nsize)
1380 int Nst = Nx * Ny * Nz * Nt;
1383 int Nin5 =
NVCD * Ns;
1384 int Nin5bd = (
NVCD/2) * Ns;
1386 int size = Nin5 * Nst_pad;
1387 int size_u =
NDF * Nst_pad * 4;
1388 int size_bz = Nin5bd *
CEIL_NWP(Nx * Ny * Nt);
1390 #pragma acc data present(buf_zm[0:size_bz], \
1391 vp[0:size], up[0:size_u]) \
1392 copyin(Nst, Nst_pad, Nx, Ny, Nz, Nt, Nin5, Ns, bc[0:NDIM])
1395 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
1399 #pragma acc loop gang worker vector
1400 for (
int site = 0; site < Nst; ++site) {
1401 int ixy = site % Nxy;
1402 int izt = site / Nxy;
1406 for(
int is = 0; is < Ns; ++is){
1410 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
1414 int ixyt =
ixy + Nxy *
it;
1419 for(
int ivcd = 0; ivcd < NVCD2; ++ivcd){
1420 wt[ivcd] =
bc2 * buf_zm[
IDX2(Nin5bd, (ivcd + NVCD2 * is), ixyt)];
1424 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
1425 vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)] += vL[ivcd];
1440 int Ns,
int *bc,
int *Nsize)
1446 int Nst = Nx * Ny * Nz * Nt;
1449 int Nin5 =
NVCD * Ns;
1450 int Nin5bd = (
NVCD/2) * Ns;
1452 int size = Nin5 * Nst_pad;
1453 int size_u =
NDF * Nst_pad * 4;
1454 int size_bt = Nin5bd *
CEIL_NWP(Nx * Ny * Nz);
1456 #pragma acc data present(buf_tp[0:size_bt], \
1457 vp[0:size], up[0:size_u]) \
1458 copyin(Nst, Nst_pad, Nx, Ny, Nz, Nt, Nin5, Ns, bc[0:NDIM])
1461 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
1464 int Nxyz = Nx * Ny * Nz;
1466 #pragma acc loop gang worker vector
1467 for (
int site = 0; site < Nst; ++site) {
1468 int izt = site / Nxy;
1470 int ixyz = site % Nxyz;
1472 for(
int is = 0; is < Ns; ++is){
1476 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
1485 for(
int ivcd = 0; ivcd < NVCD2; ++ivcd){
1486 wt[ivcd] = buf_tp[
IDX2(Nin5bd, (ivcd + NVCD2 * is),
ixyz)];
1490 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
1491 vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)] += vL[ivcd];
1506 int Ns,
int *bc,
int *Nsize)
1512 int Nst = Nx * Ny * Nz * Nt;
1515 int Nin5 =
NVCD * Ns;
1516 int Nin5bd = (
NVCD/2) * Ns;
1518 int size = Nin5 * Nst_pad;
1519 int size_u =
NDF * Nst_pad * 4;
1520 int size_bt = Nin5bd *
CEIL_NWP(Nx * Ny * Nz);
1522 #pragma acc data present(buf_tm[0:size_bt], \
1523 vp[0:size], up[0:size_u]) \
1524 copyin(Nst, Nst_pad, Nx, Ny, Nz, Nt, Nin5, Ns, bc[0:NDIM])
1527 #pragma acc parallel num_workers(NUM_WORKERS) vector_length(VECTOR_LENGTH)
1530 int Nxyz = Nx * Ny * Nz;
1532 #pragma acc loop gang worker vector
1533 for (
int site = 0; site < Nst; ++site) {
1534 int izt = site / Nxy;
1536 int ixyz = site % Nxyz;
1538 for(
int is = 0; is < Ns; ++is){
1542 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
1549 for(
int ivcd = 0; ivcd < NVCD2; ++ivcd){
1550 wt[ivcd] =
bc2 * buf_tm[
IDX2(Nin5bd, (ivcd + NVCD2 * is),
ixyz)];
1554 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
1555 vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)] += vL[ivcd];
void mult_wilson_yp2(double *RESTRICT v2, double *RESTRICT u, double *RESTRICT buf, int *Nsize, int *bc, int Nc)
void mult_domainwall_5din_xp1(real_t *RESTRICT buf_xp, real_t *RESTRICT up, real_t *RESTRICT wp, int Ns, int *bc, int *Nsize)
void mult_wilson_xpb(double *RESTRICT v2, double *RESTRICT u, double *RESTRICT v1, int *Nsize, int *bc, int Nc)
void mult_domainwall_5din_zp2(real_t *RESTRICT vp, real_t *RESTRICT up, real_t *RESTRICT buf_zp, int Ns, int *bc, int *Nsize)
void mult_domainwall_5din_zm2(real_t *RESTRICT vp, real_t *RESTRICT up, real_t *RESTRICT buf_zm, int Ns, int *bc, int *Nsize)
void mult_domainwall_5din_xpb(real_t *RESTRICT vp, real_t *RESTRICT up, real_t *RESTRICT wp, int Ns, int *bc, int *Nsize, int *do_comm, int flag)
void mult_domainwall_5din_ymb(real_t *RESTRICT vp, real_t *RESTRICT up, real_t *RESTRICT wp, int Ns, int *bc, int *Nsize, int *do_comm, int flag)
void mult_wilson_xm2(double *RESTRICT v2, double *RESTRICT buf, int *Nsize, int *bc, int Nc)
void mult_domainwall_5din_yp2(real_t *RESTRICT vp, real_t *RESTRICT up, real_t *RESTRICT buf_yp, int Ns, int *bc, int *Nsize)
void mult_domainwall_5din_xm2(real_t *RESTRICT vp, real_t *RESTRICT up, real_t *RESTRICT buf_xm, int Ns, int *bc, int *Nsize)
void mult_wilson_yp1(double *RESTRICT buf, double *RESTRICT v1, int *Nsize, int *bc, int Nc)
void mult_domainwall_5din_xmb(real_t *RESTRICT vp, real_t *RESTRICT up, real_t *RESTRICT wp, int Ns, int *bc, int *Nsize, int *do_comm, int flag)
void mult_domainwall_5din_zpb(real_t *RESTRICT vp, real_t *RESTRICT up, real_t *RESTRICT wp, int Ns, int *bc, int *Nsize, int *do_comm, int flag)
void mult_domainwall_5din_zp1(real_t *RESTRICT buf_zp, real_t *RESTRICT up, real_t *RESTRICT wp, int Ns, int *bc, int *Nsize)
void mult_wilson_zp1(double *RESTRICT buf, double *RESTRICT v1, int *Nsize, int *bc, int Nc)
void mult_wilson_tp2_dirac(double *RESTRICT v2, double *RESTRICT u, double *RESTRICT buf, int *Nsize, int *bc, int Nc)
void mult_domainwall_5din_ym2(real_t *RESTRICT vp, real_t *RESTRICT up, real_t *RESTRICT buf_ym, int Ns, int *bc, int *Nsize)
void mult_wilson_tm2_dirac(double *RESTRICT v2, double *RESTRICT buf, int *Nsize, int *bc, int Nc)
void mult_wilson_tmb_dirac(double *RESTRICT v2, double *RESTRICT u, double *RESTRICT v1, int *Nsize, int *bc, int Nc)
void mult_wilson_xmb(double *RESTRICT v2, double *RESTRICT u, double *RESTRICT v1, int *Nsize, int *bc, int Nc)
void mult_domainwall_5din_tm1_dirac(real_t *RESTRICT buf_tm, real_t *RESTRICT up, real_t *RESTRICT wp, int Ns, int *bc, int *Nsize)
void mult_wilson_xm1(double *RESTRICT buf, double *RESTRICT u, double *RESTRICT v1, int *Nsize, int *bc, int Nc)
void mult_wilson_ym2(double *RESTRICT v2, double *RESTRICT buf, int *Nsize, int *bc, int Nc)
void mult_wilson_zpb(double *RESTRICT v2, double *RESTRICT u, double *RESTRICT v1, int *Nsize, int *bc, int Nc)
void mult_wilson_tpb_dirac(double *RESTRICT v2, double *RESTRICT u, double *RESTRICT v1, int *Nsize, int *bc, int Nc)
void mult_domainwall_5din_tm2_dirac(real_t *RESTRICT vp, real_t *RESTRICT up, real_t *RESTRICT buf_tm, int Ns, int *bc, int *Nsize)
void mult_domainwall_5din_yp1(real_t *RESTRICT buf_yp, real_t *RESTRICT up, real_t *RESTRICT wp, int Ns, int *bc, int *Nsize)
void mult_domainwall_5din_xm1(real_t *RESTRICT buf_xm, real_t *RESTRICT up, real_t *RESTRICT wp, int Ns, int *bc, int *Nsize)
void mult_wilson_tm1_dirac(double *RESTRICT buf, double *RESTRICT u, double *RESTRICT v1, int *Nsize, int *bc, int Nc)
void mult_wilson_zmb(double *RESTRICT v2, double *RESTRICT u, double *RESTRICT v1, int *Nsize, int *bc, int Nc)
void mult_wilson_tp1_dirac(double *RESTRICT buf, double *RESTRICT v1, int *Nsize, int *bc, int Nc)
void mult_wilson_xp2(double *RESTRICT v2, double *RESTRICT u, double *RESTRICT buf, int *Nsize, int *bc, int Nc)
void mult_wilson_ypb(double *RESTRICT v2, double *RESTRICT u, double *RESTRICT v1, int *Nsize, int *bc, int Nc)
void mult_domainwall_5din_tp2_dirac(real_t *RESTRICT vp, real_t *RESTRICT up, real_t *RESTRICT buf_tp, int Ns, int *bc, int *Nsize)
#define IDX2(nin, in, ist)
void mult_wilson_zm2(double *RESTRICT v2, double *RESTRICT buf, int *Nsize, int *bc, int Nc)
void mult_wilson_ymb(double *RESTRICT v2, double *RESTRICT u, double *RESTRICT v1, int *Nsize, int *bc, int Nc)
void load_u(real_t *ut, real_t *up, int site)
void mult_domainwall_5din_tpb_dirac(real_t *RESTRICT vp, real_t *RESTRICT up, real_t *RESTRICT wp, int Ns, int *bc, int *Nsize, int *do_comm, int flag)
void mult_domainwall_5din_xp2(real_t *RESTRICT vp, real_t *RESTRICT up, real_t *RESTRICT buf_xp, int Ns, int *bc, int *Nsize)
void mult_wilson_zp2(double *RESTRICT v2, double *RESTRICT u, double *RESTRICT buf, int *Nsize, int *bc, int Nc)
void mult_domainwall_5din_ypb(real_t *RESTRICT vp, real_t *RESTRICT up, real_t *RESTRICT wp, int Ns, int *bc, int *Nsize, int *do_comm, int flag)
void mult_domainwall_5din_zm1(real_t *RESTRICT buf_zm, real_t *RESTRICT up, real_t *RESTRICT wp, int Ns, int *bc, int *Nsize)
void mult_wilson_ym1(double *RESTRICT buf, double *RESTRICT u, double *RESTRICT v1, int *Nsize, int *bc, int Nc)
void mult_domainwall_5din_zmb(real_t *RESTRICT vp, real_t *RESTRICT up, real_t *RESTRICT wp, int Ns, int *bc, int *Nsize, int *do_comm, int flag)
void mult_wilson_zm1(double *RESTRICT buf, double *RESTRICT u, double *RESTRICT v1, int *Nsize, int *bc, int Nc)
void mult_wilson_xp1(double *RESTRICT buf, double *RESTRICT v1, int *Nsize, int *bc, int Nc)
void mult_domainwall_5din_tmb_dirac(real_t *RESTRICT vp, real_t *RESTRICT up, real_t *RESTRICT wp, int Ns, int *bc, int *Nsize, int *do_comm, int flag)
void mult_domainwall_5din_tp1_dirac(real_t *RESTRICT buf_tp, real_t *RESTRICT up, real_t *RESTRICT wp, int Ns, int *bc, int *Nsize)
void mult_domainwall_5din_ym1(real_t *RESTRICT buf_ym, real_t *RESTRICT up, real_t *RESTRICT wp, int Ns, int *bc, int *Nsize)