7 namespace domainwall4d {
8 #include <dslash_init.cuh>
42 if ( in.
Ndim() != 5 || out.
Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
48 domainWallDslashCuda(&out,
gauge, &in, parity,
dagger, 0,
mass, 0,
commDim, 0,
profile);
56 if ( in.
Ndim() != 5 || out.
Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
62 domainWallDslashCuda(&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 += 96LL*bulk + 120LL*wall;
73 if ( in.
Ndim() != 5 || out.
Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
80 domainWallDslashCuda(&out,
gauge, &in, parity,
dagger, 0,
mass, k,
commDim, 2,
profile);
82 long long Ls = in.
X(4);
83 flops += 144LL*(
long long)in.
Volume()*Ls + 3LL*Ls*(Ls-1LL);
89 const double &k)
const
91 if ( in.
Ndim() != 5 || out.
Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
98 domainWallDslashCuda(&out,
gauge, &in, parity,
dagger, &x,
mass, k,
commDim, 0,
profile);
105 const double &k)
const
107 if ( in.
Ndim() != 5 || out.
Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
113 domainWallDslashCuda(&out,
gauge, &in, parity,
dagger, &x,
mass, k,
commDim, 1,
profile);
115 long long Ls = in.
X(4);
116 long long bulk = (Ls-2)*(in.
Volume()/
Ls);
118 flops += (48LL)*(
long long)in.
Volume() + 96LL*bulk + 120LL*wall;
124 if ( in.
Ndim() != 5 || out.
Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
void Dslash5(cudaColorSpinorField &out, const cudaColorSpinorField &in, const QudaParity parity) const
virtual void checkParitySpinor(const cudaColorSpinorField &, const cudaColorSpinorField &) const
void MdagM(cudaColorSpinorField &out, const cudaColorSpinorField &in) const
DiracDomainWall4DPC & operator=(const DiracDomainWall4DPC &dirac)
void reconstruct(cudaColorSpinorField &x, const cudaColorSpinorField &b, const QudaSolutionType) const
void prepare(cudaColorSpinorField *&src, cudaColorSpinorField *&sol, cudaColorSpinorField &x, cudaColorSpinorField &b, const QudaSolutionType) const
bool newTmp(cudaColorSpinorField **, const cudaColorSpinorField &) const
virtual ~DiracDomainWall4DPC()
void Dslash5inv(cudaColorSpinorField &out, const cudaColorSpinorField &in, const QudaParity parity, const double &k) const
void domainWallDslashCuda(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, TimeProfile &profile, const QudaDslashPolicy &dslashPolicy=QUDA_DSLASH)
void checkSpinorAlias(const cudaColorSpinorField &, const cudaColorSpinorField &) const
cudaColorSpinorField & Odd() const
void Dslash4Xpay(cudaColorSpinorField &out, const cudaColorSpinorField &in, const QudaParity parity, const cudaColorSpinorField &x, const double &k) const
int commDim[QUDA_MAX_DIM]
void M(cudaColorSpinorField &out, const cudaColorSpinorField &in) const
DiracDomainWall4DPC(const DiracParam ¶m)
enum QudaSolutionType_s QudaSolutionType
void deleteTmp(cudaColorSpinorField **, const bool &reset) const
enum QudaParity_s QudaParity
DiracDomainWallPC & operator=(const DiracDomainWallPC &dirac)
void Dslash5Xpay(cudaColorSpinorField &out, const cudaColorSpinorField &in, const QudaParity parity, const cudaColorSpinorField &x, const double &k) const
void Dslash4(cudaColorSpinorField &out, const cudaColorSpinorField &in, const QudaParity parity) const
cudaColorSpinorField * tmp2
virtual void checkFullSpinor(const cudaColorSpinorField &, const cudaColorSpinorField &) const
cpuColorSpinorField * out
cudaColorSpinorField * tmp1
void Mdag(cudaColorSpinorField &out, const cudaColorSpinorField &in) const
cudaColorSpinorField & Even() const