8 #include <dslash_init.cuh>
14 memcpy(
b_5, param.
b_5,
sizeof(
double)*param.
Ls);
15 memcpy(
c_5, param.
c_5,
sizeof(
double)*param.
Ls);
42 if ( in.
Ndim() != 5 || out.
Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
48 MDWFDslashCuda(&out,
gauge, &in, parity,
dagger, 0,
mass, 0,
commDim, 0,
profile);
55 if ( in.
Ndim() != 5 || out.
Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
62 MDWFDslashCuda(&out,
gauge, &in, parity,
dagger, 0,
mass, 0,
commDim, 1,
profile);
64 long long Ls = in.
X(4);
65 long long bulk = (Ls-2)*(in.
Volume()/
Ls);
67 flops += 72LL*(
long long)in.
Volume() + 96LL*bulk + 120LL*wall;
72 if ( in.
Ndim() != 5 || out.
Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
79 MDWFDslashCuda(&out,
gauge, &in, parity,
dagger, 0,
mass, 0,
commDim, 2,
profile);
81 long long Ls = in.
X(4);
82 long long bulk = (Ls-2)*(in.
Volume()/
Ls);
84 flops += 48LL*(
long long)in.
Volume() + 96LL*bulk + 120LL*wall;
89 if ( in.
Ndim() != 5 || out.
Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
97 MDWFDslashCuda(&out,
gauge, &in, parity,
dagger, 0,
mass, k,
commDim, 3,
profile);
99 long long Ls = in.
X(4);
100 flops += 144LL*(
long long)in.
Volume()*Ls + 3LL*Ls*(Ls-1LL);
107 if ( in.
Ndim() != 5 || out.
Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
114 MDWFDslashCuda(&out,
gauge, &in, parity,
dagger, &x,
mass, k,
commDim, 0,
profile);
122 if ( in.
Ndim() != 5 || out.
Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
129 MDWFDslashCuda(&out,
gauge, &in, parity,
dagger, &x,
mass, k,
commDim, 2,
profile);
131 long long Ls = in.
X(4);
132 long long bulk = (Ls-2)*(in.
Volume()/
Ls);
134 flops += (96LL)*(
long long)in.
Volume() + 96LL*bulk + 120LL*wall;
142 if ( in.
Ndim() != 5 || out.
Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
171 if ( in.
Ndim() != 5 || out.
Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
virtual void checkParitySpinor(const cudaColorSpinorField &, const cudaColorSpinorField &) const
double c_5[QUDA_MAX_DWF_LS]
NEW: used by mobius domain wall only.
void Dslash5inv(cudaColorSpinorField &out, const cudaColorSpinorField &in, const QudaParity parity, const double &k) const
void initMDWFConstants(const double *b_5, const double *c_5, int dim_s, const double m5h, TimeProfile &profile)
void MdagM(cudaColorSpinorField &out, const cudaColorSpinorField &in) const
void M(cudaColorSpinorField &out, const cudaColorSpinorField &in) const
bool newTmp(cudaColorSpinorField **, const cudaColorSpinorField &) const
double c_5[QUDA_MAX_DWF_LS]
void prepare(cudaColorSpinorField *&src, cudaColorSpinorField *&sol, cudaColorSpinorField &x, cudaColorSpinorField &b, const QudaSolutionType) const
DiracMobiusDomainWallPC & operator=(const DiracMobiusDomainWallPC &dirac)
void checkSpinorAlias(const cudaColorSpinorField &, const cudaColorSpinorField &) const
cudaColorSpinorField & Odd() const
int commDim[QUDA_MAX_DIM]
void Dslash4(cudaColorSpinorField &out, const cudaColorSpinorField &in, const QudaParity parity) const
void Dslash5(cudaColorSpinorField &out, const cudaColorSpinorField &in, const QudaParity parity) const
void Dslash5Xpay(cudaColorSpinorField &out, const cudaColorSpinorField &in, const QudaParity parity, const cudaColorSpinorField &x, const double &k) const
enum QudaSolutionType_s QudaSolutionType
double b_5[QUDA_MAX_DWF_LS]
NEW: used by domain wall and twisted mass.
void MDWFDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const cudaColorSpinorField *in, const int parity, const int dagger, const cudaColorSpinorField *x, const double &m_f, const double &k, const int *commDim, const int DS_type, TimeProfile &profile, const QudaDslashPolicy &dslashPolicy=QUDA_DSLASH2)
void deleteTmp(cudaColorSpinorField **, const bool &reset) const
enum QudaParity_s QudaParity
virtual ~DiracMobiusDomainWallPC()
DiracDomainWallPC & operator=(const DiracDomainWallPC &dirac)
DiracMobiusDomainWallPC(const DiracParam ¶m)
void Dslash4pre(cudaColorSpinorField &out, const cudaColorSpinorField &in, const QudaParity parity) const
cudaColorSpinorField * tmp2
virtual void checkFullSpinor(const cudaColorSpinorField &, const cudaColorSpinorField &) const
cpuColorSpinorField * out
cudaColorSpinorField * tmp1
void Dslash4Xpay(cudaColorSpinorField &out, const cudaColorSpinorField &in, const QudaParity parity, const cudaColorSpinorField &x, const double &k) const
double b_5[QUDA_MAX_DWF_LS]
void Mdag(cudaColorSpinorField &out, const cudaColorSpinorField &in) const
cudaColorSpinorField & Even() const
void reconstruct(cudaColorSpinorField &x, const cudaColorSpinorField &b, const QudaSolutionType) const