Go to the documentation of this file.
10 #ifndef MULT_DOMAINWALL_5DIN_4D_ACC_INCLUDED
11 #define MULT_DOMAINWALL_5DIN_4D_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_pad; ++site) {
51 int ixyz = site % Nxyz;
55 for(
int is = 0; is < Ns; ++is){
60 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
64 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
65 vL[ivcd] = vp[
IDX2(Nin5, (ivcd +
NVCD * is), site)];
71 if ((
ix < Nx-1) || (do_comm[
idir] == 0)) {
72 int ix2 = (
ix + 1) % Nx;
75 if(
ix == Nx-1)
bc2 = bc[0];
81 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
87 if ((
ix > 0) || (do_comm[
idir] == 0)) {
88 int ix2 = (
ix - 1 + Nx) % Nx;
91 if(
ix == 0)
bc2 = bc[0];
97 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
105 if ((
iy < Ny-1) || (do_comm[
idir] == 0)) {
106 int iy2 = (
iy + 1) % Ny;
107 int nei =
ix + Nx * (iy2 + Ny *
izt);
109 if(
iy == Ny-1)
bc2 = bc[1];
115 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
121 if ((
iy > 0) || (do_comm[
idir] == 0)) {
122 int iy2 = (
iy - 1 + Ny) % Ny;
123 int nei =
ix + Nx * (iy2 + Ny *
izt);
125 if(
iy == 0)
bc2 = bc[1];
131 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
139 if ((
iz < Nz-1) || (do_comm[
idir] == 0)) {
140 int iz2 = (
iz + 1) % Nz;
141 int nei =
ixy + Nxy * (iz2 + Nz *
it);
143 if(
iz == Nz-1)
bc2 = bc[2];
149 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
155 if ((
iz > 0) || (do_comm[
idir] == 0)) {
156 int iz2 = (
iz - 1 + Nz) % Nz;
157 int nei =
ixy + Nxy * (iz2 + Nz *
it);
159 if(
iz == 0)
bc2 = bc[2];
165 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
173 if ((
it < Nt-1) || (do_comm[
idir] == 0)) {
174 int it2 = (
it + 1) % Nt;
175 int nei =
ixyz + Nxyz * it2;
177 if(
it == Nt-1)
bc2 = bc[3];
183 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
189 if ((
it > 0) || (do_comm[
idir] == 0)) {
190 int it2 = (
it - 1 + Nt) % Nt;
191 int nei =
ixyz + Nxyz * it2;
193 if(
it == 0)
bc2 = bc[3];
199 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
205 for(
int ivcd = 0; ivcd <
NVCD; ++ivcd){
206 vp[
IDX2(Nin5, (ivcd +
NVCD*is), site)] = vL[ivcd];
void mult_wilson_xpb(double *RESTRICT v2, double *RESTRICT u, double *RESTRICT v1, 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_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_wilson_zmb(double *RESTRICT v2, double *RESTRICT u, double *RESTRICT v1, 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)
#define IDX2(nin, in, ist)
void mult_domainwall_5din_hopb_dirac_4d(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_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)