54 if (*
tmp)
return false;
71 #define flip(x) (x) = ((x) == QUDA_DAG_YES ? QUDA_DAG_NO : QUDA_DAG_YES) 93 errorQuda(
"CUDA Dirac operator requires UKQCD basis, out = %d, in = %d",
94 out.GammaBasis(),
in.GammaBasis());
97 if (
in.Precision() !=
out.Precision()) {
98 errorQuda(
"Input precision %d and output spinor precision %d don't match in dslash_quda",
99 in.Precision(),
out.Precision());
102 if (
in.Stride() !=
out.Stride()) {
103 errorQuda(
"Input %d and output %d spinor strides don't match in dslash_quda",
104 in.Stride(),
out.Stride());
108 errorQuda(
"ColorSpinorFields are not single parity: in = %d, out = %d",
109 in.SiteSubset(),
out.SiteSubset());
112 if (!static_cast<const cudaColorSpinorField&>(
in).isNative())
errorQuda(
"Input field is not in native order");
113 if (!static_cast<const cudaColorSpinorField&>(
out).isNative())
errorQuda(
"Output field is not in native order");
115 if (
out.Ndim() != 5) {
132 errorQuda(
"ColorSpinorFields are not full fields: in = %d, out = %d",
133 in.SiteSubset(),
out.SiteSubset());
138 if (
a.V() ==
b.V())
errorQuda(
"Aliasing pointers");
188 errorQuda(
"Cannot create DiracTwistedClover operator for %d flavors\n",
param.Ls);
195 errorQuda(
"Cannot create DiracTwistedCloverPC operator for %d flavors\n",
param.Ls);
Dirac(const DiracParam ¶m)
Even-odd preconditioned Gauge Laplace operator.
QudaVerbosity getVerbosity()
virtual void checkFullSpinor(const ColorSpinorField &, const ColorSpinorField &) const
cudaColorSpinorField * tmp
void deleteTmp(ColorSpinorField **, const bool &reset) const
int getStencilSteps() const
virtual void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const =0
bool newTmp(ColorSpinorField **, const ColorSpinorField &) const
int commDim[QUDA_MAX_DIM]
VOLATILE spinorFloat kappa
void MMdag(ColorSpinorField &out, const ColorSpinorField &in) const
void checkSpinorAlias(const ColorSpinorField &, const ColorSpinorField &) const
void Mdag(ColorSpinorField &out, const ColorSpinorField &in) const
virtual void M(ColorSpinorField &out, const ColorSpinorField &in) const =0
Dirac & operator=(const Dirac &dirac)
cpuColorSpinorField * out
Full Gauge Laplace operator. Although not a Dirac operator per se, it's a linear operator so it's con...
static Dirac * create(const DiracParam ¶m)
virtual void checkParitySpinor(const ColorSpinorField &, const ColorSpinorField &) const
Full Covariant Derivative operator. Although not a Dirac operator per se, it's a linear operator so i...