34 if (
in.Ndim() != 5 ||
out.Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
39 &static_cast<const cudaColorSpinorField&>(
in),
40 parity,
dagger, 0,
mass, 0,
b_5,
c_5,
m5,
commDim, 0,
profile);
42 flops += 1320LL*(
long long)
in.Volume();
47 if (
in.Ndim() != 5 ||
out.Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
52 &static_cast<const cudaColorSpinorField&>(
in),
53 parity,
dagger, 0,
mass, 0,
b_5,
c_5,
m5,
commDim, 1,
profile);
55 long long Ls =
in.X(4);
56 long long bulk = (
Ls-2)*(
in.Volume()/
Ls);
57 long long wall = 2*
in.Volume()/
Ls;
58 flops += 72LL*(
long long)
in.Volume() + 96LL*bulk + 120LL*wall;
63 if (
in.Ndim() != 5 ||
out.Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
68 &static_cast<const cudaColorSpinorField&>(
in),
69 parity,
dagger, 0,
mass, 0,
b_5,
c_5,
m5,
commDim, 2,
profile);
71 long long Ls =
in.X(4);
72 long long bulk = (
Ls-2)*(
in.Volume()/
Ls);
73 long long wall = 2*
in.Volume()/
Ls;
74 flops += 48LL*(
long long)
in.Volume() + 96LL*bulk + 120LL*wall;
81 if (
in.Ndim() != 5 ||
out.Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
87 &static_cast<const cudaColorSpinorField&>(
in),
91 flops += (1320LL+48LL)*(
long long)
in.Volume();
97 if (
in.Ndim() != 5 ||
out.Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
103 &static_cast<const cudaColorSpinorField&>(
in),
104 parity,
dagger, &static_cast<const cudaColorSpinorField&>(
x),
107 long long Ls =
in.X(4);
108 long long bulk = (
Ls-2)*(
in.Volume()/
Ls);
109 long long wall = 2*
in.Volume()/
Ls;
110 flops += (72LL+48LL)*(
long long)
in.Volume() + 96LL*bulk + 120LL*wall;
117 if (
in.Ndim() != 5 ||
out.Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
122 &static_cast<const cudaColorSpinorField&>(
in),
123 parity,
dagger, &static_cast<const cudaColorSpinorField&>(
x),
126 long long Ls =
in.X(4);
127 long long bulk = (
Ls-2)*(
in.Volume()/
Ls);
128 long long wall = 2*
in.Volume()/
Ls;
129 flops += (96LL)*(
long long)
in.Volume() + 96LL*bulk + 120LL*wall;
134 if (
in.Ndim() != 5 ||
out.Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
140 double kappa_b = 0.5 / (
b_5[0]*(4.0+
m5)+1.0);
173 errorQuda(
"Preconditioned solution requires a preconditioned solve_type");
194 if (&
dirac !=
this) {
203 if (
in.Ndim() != 5 ||
out.Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
209 &static_cast<const cudaColorSpinorField&>(
in),
210 parity,
dagger, 0,
mass, 0,
b_5,
c_5,
m5,
commDim, 3,
profile);
212 long long Ls =
in.X(4);
220 if (
in.Ndim() != 5 ||
out.Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
226 &static_cast<const cudaColorSpinorField&>(
in),
227 parity,
dagger, &static_cast<const cudaColorSpinorField&>(
x),
230 long long Ls =
in.X(4);
231 flops += (144LL*
Ls + 48LL)*(
long long)
in.Volume() + 3LL*
Ls*(
Ls-1LL);
238 if (
in.Ndim() != 5 ||
out.Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
248 if (symmetric && !
dagger) {
255 }
else if (symmetric &&
dagger) {
262 }
else if (!symmetric && !
dagger) {
269 }
else if (!symmetric &&
dagger) {
DiracMobiusPC(const DiracParam ¶m)
void Dslash5(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
virtual void checkFullSpinor(const ColorSpinorField &, const ColorSpinorField &) const
double b_5[QUDA_MAX_DWF_LS]
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 double *b5, const double *c_5, const double &m5, const int *commDim, const int DS_type, TimeProfile &profile)
const ColorSpinorField & Even() const
void deleteTmp(ColorSpinorField **, const bool &reset) const
const ColorSpinorField & Odd() const
void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
void M(ColorSpinorField &out, const ColorSpinorField &in) const
void Dslash5invXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
bool newTmp(ColorSpinorField **, const ColorSpinorField &) const
virtual void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
int commDim[QUDA_MAX_DIM]
void Dslash4(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
DiracMobius(const DiracParam ¶m)
DiracDomainWall & operator=(const DiracDomainWall &dirac)
void checkSpinorAlias(const ColorSpinorField &, const ColorSpinorField &) const
virtual void M(ColorSpinorField &out, const ColorSpinorField &in) const
virtual void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
enum QudaSolutionType_s QudaSolutionType
void Dslash4pre(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
void Dslash4preXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
enum QudaParity_s QudaParity
void Dslash4Xpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
void * memcpy(void *__dst, const void *__src, size_t __n)
void axpy(const double &a, ColorSpinorField &x, ColorSpinorField &y)
void Mdag(ColorSpinorField &out, const ColorSpinorField &in) const
void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
double c_5[QUDA_MAX_DWF_LS]
cpuColorSpinorField * out
void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
void Dslash5Xpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
virtual void checkParitySpinor(const ColorSpinorField &, const ColorSpinorField &) const
void Dslash5inv(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
DiracMobiusPC & operator=(const DiracMobiusPC &dirac)
DiracMobius & operator=(const DiracMobius &dirac)
virtual void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const