Go to the documentation of this file.
10 #ifndef MULT_WILSON_QXS_INCLUDED
11 #define MULT_WILSON_QXS_INCLUDED
18 real_t kappa,
int *bc,
int *Nsize,
int *do_comm)
24 int Nstv = Nxv * Nyv * Nz * Nt;
25 int Nst = Nstv *
VLEN;
27 svbool_t pg1_xp, pg2_xp, pg1_xm, pg2_xm;
28 svbool_t pg1_yp, pg2_yp, pg1_ym, pg2_ym;
29 set_predicate_xp(pg1_xp, pg2_xp);
30 set_predicate_xm(pg1_xm, pg2_xm);
31 set_predicate_yp(pg1_yp, pg2_yp);
32 set_predicate_ym(pg1_ym, pg2_ym);
37 int Nxyz = Nxv * Nyv * Nz;
40 set_threadtask(ith, nth, is, ns, Nstv);
42 for (
int site = is; site < ns; ++site) {
44 int iyzt = site / Nxv;
60 int nei =
ix + 1 + Nxv *
iyzt;
63 }
else if (do_comm[0] == 0) {
65 int nei = 0 + Nxv *
iyzt;
72 int nei =
ix - 1 + Nxv *
iyzt;
76 }
else if (do_comm[0] == 0) {
78 int nei = Nxv - 1 + Nxv *
iyzt;
85 int iy2 = (
iy + 1) % Nyv;
86 int nei =
ix + Nxv * (iy2 + Nyv *
izt);
91 }
else if (do_comm[1] == 0) {
92 int iy2 = (
iy + 1) % Nyv;
93 int nei =
ix + Nxv * (iy2 + Nyv *
izt);
101 int iy2 = (
iy - 1 + Nyv) % Nyv;
102 int nei =
ix + Nxv * (iy2 + Nyv *
izt);
107 }
else if (do_comm[1] == 0) {
108 int iy2 = (
iy - 1 + Nyv) % Nyv;
109 int nei =
ix + Nxv * (iy2 + Nyv *
izt);
116 if ((
iz < Nz - 1) || (do_comm[2] == 0)) {
117 int iz2 = (
iz + 1) % Nz;
118 int nei =
ixy + Nxy * (iz2 + Nz *
it);
123 if ((
iz > 0) || (do_comm[2] == 0)) {
124 int iz2 = (
iz - 1 + Nz) % Nz;
125 int nei =
ixy + Nxy * (iz2 + Nz *
it);
130 if ((
it < Nt - 1) || (do_comm[3] == 0)) {
131 int it2 = (
it + 1) % Nt;
132 int nei =
ixyz + Nxyz * it2;
138 if ((
it > 0) || (do_comm[3] == 0)) {
139 int it2 = (
it - 1 + Nt) % Nt;
140 int nei =
ixyz + Nxyz * it2;
146 mult_wilson_aypx_save(&v2[
VLEN *
NVCD * site],
147 -kappa, v2v, &v1[
VLEN *
NVCD * site]);
159 int *bc,
int *Nsize,
int *do_comm)
165 int Nstv = Nxv * Nyv * Nz * Nt;
166 int Nst = Nstv *
VLEN;
169 int Nxyz = Nxv * Nyv * Nz;
171 svbool_t pg1_xp, pg2_xp, pg1_xm, pg2_xm;
172 svbool_t pg1_yp, pg2_yp, pg1_ym, pg2_ym;
173 set_predicate_xp(pg1_xp, pg2_xp);
174 set_predicate_xm(pg1_xm, pg2_xm);
175 set_predicate_yp(pg1_yp, pg2_yp);
176 set_predicate_ym(pg1_ym, pg2_ym);
178 set_index_xp(svidx_xp);
179 set_index_xm(svidx_xm);
181 if (do_comm[0] > 0) {
185 int Nyzt = Nyv * Nz * Nt;
187 int ith, nth, is, ns;
188 set_threadtask(ith, nth, is, ns, Nyzt);
193 int site =
ix + Nxv *
iyzt;
195 set_index_xm(svidx_xm);
197 &buf_xp[ibf], &v1[
VLEN *
NVCD * site]);
201 int site =
ix + Nxv *
iyzt;
203 set_index_xp(svidx_xp);
205 &buf_xm[ibf], &u[
VLEN *
NDF * site],
211 if (do_comm[1] > 0) {
215 int Nxzt = Nxv * Nz * Nt;
217 int ith, nth, is, ns;
218 set_threadtask(ith, nth, is, ns, Nxzt);
220 for (
int ixzt = is; ixzt < ns; ++ixzt) {
222 int izt = ixzt / Nxv;
225 int site =
ix + Nxv * (
iy + Nyv *
izt);
228 &buf_yp[ibf], &v1[
VLEN *
NVCD * site]);
232 int site =
ix + Nxv * (
iy + Nyv *
izt);
235 &buf_ym[ibf], &u[
VLEN *
NDF * site],
241 if (do_comm[2] > 0) {
245 int Nxyt = Nxv * Nyv * Nt;
247 int ith, nth, is, ns;
248 set_threadtask(ith, nth, is, ns, Nxyt);
250 for (
int ixyt = is; ixyt < ns; ++ixyt) {
251 int ixy = ixyt % Nxy;
255 int site =
ixy + Nxy * (
iz + Nz *
it);
261 int site =
ixy + Nxy * (
iz + Nz *
it);
269 if (do_comm[3] > 0) {
273 int ith, nth, is, ns;
274 set_threadtask(ith, nth, is, ns, Nxyz);
278 int site =
ixyz + Nxyz *
it;
286 int site =
ixyz + Nxyz *
it;
301 real_t kappa,
int *bc,
int *Nsize,
int *do_comm)
307 int Nstv = Nxv * Nyv * Nz * Nt;
308 int Nst = Nstv *
VLEN;
311 int Nxyz = Nxv * Nyv * Nz;
313 svbool_t pg1_xp, pg2_xp, pg1_xm, pg2_xm;
314 svbool_t pg1_yp, pg2_yp, pg1_ym, pg2_ym;
315 set_predicate_xp(pg1_xp, pg2_xp);
316 set_predicate_xm(pg1_xm, pg2_xm);
317 set_predicate_yp(pg1_yp, pg2_yp);
318 set_predicate_ym(pg1_ym, pg2_ym);
320 set_index_xp(svidx_xp);
321 set_index_xm(svidx_xm);
323 int ith, nth, is, ns;
324 set_threadtask(ith, nth, is, ns, Nstv);
326 for (
int site = is; site < ns; ++site) {
328 int iyzt = site / Nxv;
330 int izt = site / Nxy;
337 clear_vec(v2v,
NVCD);
340 if ((
ix == Nxv - 1) && (do_comm[0] > 0)) {
343 set_index_xp(svidx_xp);
346 &v1[
VLEN *
NVCD * site], &buf_xp[ibf]);
350 if ((
ix == 0) && (do_comm[0] > 0)) {
353 set_index_xm(svidx_xm);
356 &v1[
VLEN *
NVCD * site], &buf_xm[ibf]);
360 if ((
iy == Nyv - 1) && (do_comm[1] > 0)) {
365 &v1[
VLEN *
NVCD * site], &buf_yp[ibf]);
369 if ((
iy == 0) && (do_comm[1] > 0)) {
374 &v1[
VLEN *
NVCD * site], &buf_ym[ibf]);
378 if ((
iz == Nz - 1) && (do_comm[2] > 0)) {
385 if ((
iz == 0) && (do_comm[2] > 0)) {
391 if ((
it == Nt - 1) && (do_comm[3] > 0)) {
398 if ((
it == 0) && (do_comm[3] > 0)) {
404 mult_wilson_aypx_save(&v2[
VLEN *
NVCD * site],
405 -kappa, v2v, &v2[
VLEN *
NVCD * site]);
418 int Nstv = Nxv * Nyv * Nz * Nt;
422 int ith, nth, is, ns;
423 set_threadtask(ith, nth, is, ns, Nstv);
425 for (
int site = is; site < ns; ++site) {
428 for (
int ic = 0; ic <
NC; ++ic) {
429 mult_gm5_dirac_vec(pg, &vv2[
VLEN * 2 *
ND * ic],
430 &vv1[
VLEN * 2 *
ND * ic]);
void mult_wilson_gm5_dirac(double *v2, double *v1, int *Nsize)
void mult_wilson_yp2(double *RESTRICT v2, double *RESTRICT u, double *RESTRICT buf, int *Nsize, int *bc, int Nc)
void mult_wilson_2_dirac(double *v2, double *up, double *v1, double *buf_xp, double *buf_xm, double *buf_yp, double *buf_ym, double *buf_zp, double *buf_zm, double *buf_tp, double *buf_tm, double kappa, int *bc, int *Nsize, int *do_comm)
void mult_wilson_1_dirac(double *buf_xp, double *buf_xm, double *buf_yp, double *buf_ym, double *buf_zp, double *buf_zm, double *buf_tp, double *buf_tm, double *up, double *v1, int *bc, int *Nsize, int *do_comm)
void mult_wilson_xpb(double *RESTRICT v2, double *RESTRICT u, double *RESTRICT v1, int *Nsize, int *bc, int Nc)
void mult_wilson_xm2(double *RESTRICT v2, double *RESTRICT buf, int *Nsize, int *bc, int Nc)
void mult_wilson_yp1(double *RESTRICT buf, double *RESTRICT v1, int *Nsize, int *bc, int Nc)
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_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_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_wilson_bulk_dirac(double *v2, double *up, double *v1, double kappa, int *bc, int *Nsize, int *do_comm)
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_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 mult_wilson_zp2(double *RESTRICT v2, double *RESTRICT u, double *RESTRICT buf, int *Nsize, int *bc, int Nc)
void mult_wilson_ym1(double *RESTRICT buf, double *RESTRICT u, double *RESTRICT v1, int *Nsize, int *bc, int Nc)
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)