38 if (in.
X(4) !=
Ls)
errorQuda(
"Expected Ls = %d, not %d\n",
Ls, in.
X(4));
39 if (out.
X(4) !=
Ls)
errorQuda(
"Expected Ls = %d, not %d\n",
Ls, out.
X(4));
51 long long Ls = in.
X(4);
54 flops += 1320LL*(
long long)in.
Volume() + 96LL*bulk + 120LL*wall;
59 const double &k)
const
67 long long Ls = in.
X(4);
70 flops += (1320LL+48LL)*(
long long)in.
Volume() + 96LL*bulk + 120LL*wall;
79 long long Ls = in.
X(4);
80 long long bulk = (
Ls - 2) * (in.
Volume() /
Ls);
81 long long wall = 2 * in.
Volume() /
Ls;
82 flops += (1320LL + 48LL) * (
long long)in.
Volume() + 96LL * bulk + 120LL * wall;
102 errorQuda(
"Preconditioned solution requires a preconditioned solve_type");
134 if (&
dirac !=
this) {
const ColorSpinorField & Odd() const
const ColorSpinorField & Even() const
void Dslash(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
apply 'dslash' operator for the DiracOp. This may be e.g. AD
DiracDomainWall & operator=(const DiracDomainWall &dirac)
virtual void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
virtual void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
Apply MdagM operator which may be optimized.
DiracDomainWall(const DiracParam ¶m)
void DslashXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
Xpay version of Dslash.
virtual void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
virtual void M(ColorSpinorField &out, const ColorSpinorField &in) const
Apply M for the dirac op. E.g. the Schur Complement operator.
virtual ~DiracDomainWall()
void checkDWF(const ColorSpinorField &out, const ColorSpinorField &in) const
void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
Apply MdagM operator which may be optimized.
void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
DiracDomainWallPC(const DiracParam ¶m)
DiracDomainWallPC & operator=(const DiracDomainWallPC &dirac)
void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
void M(ColorSpinorField &out, const ColorSpinorField &in) const
Apply M for the dirac op. E.g. the Schur Complement operator.
virtual ~DiracDomainWallPC()
bool newTmp(ColorSpinorField **, const ColorSpinorField &) const
void deleteTmp(ColorSpinorField **, const bool &reset) const
virtual void checkParitySpinor(const ColorSpinorField &, const ColorSpinorField &) const
Check parity spinors are usable (check geometry ?)
void checkSpinorAlias(const ColorSpinorField &, const ColorSpinorField &) const
check spinors do not alias
virtual void checkFullSpinor(const ColorSpinorField &, const ColorSpinorField &) const
check full spinors are compatible (check geometry ?)
int commDim[QUDA_MAX_DIM]
void Mdag(ColorSpinorField &out, const ColorSpinorField &in) const
Apply Mdag (daggered operator of M.
DiracWilson & operator=(const DiracWilson &dirac)
enum QudaSolutionType_s QudaSolutionType
@ QUDA_MATPCDAG_MATPC_SOLUTION
enum QudaParity_s QudaParity
void ApplyDomainWall5D(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, double a, double m_f, const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile)
Driver for applying the Domain-wall 5-d stencil to a 5-d vector with 5-d preconditioned data order.