// xpay version of the above void DiracCloverPC::DslashXpay(cudaColorSpinorField &out, const cudaColorSpinorField &in, const QudaParity parity, const cudaColorSpinorField &x, const double &k) const { if (!initDslash) initDslashConstants(gauge, in.Stride()); if (!initClover) initCloverConstants(clover.Stride()); checkParitySpinor(in, out, clover); checkSpinorAlias(in, out); setFace(face); // FIXME: temporary hack maintain C linkage for dslashCuda FullClover cs; cs.even = clover.evenInv; cs.odd = clover.oddInv; cs.evenNorm = clover.evenInvNorm; cs.oddNorm = clover.oddInvNorm; cs.precision = clover.precision; cs.bytes = clover.bytes, cs.norm_bytes = clover.norm_bytes; cloverDslashCuda(&out, gauge, cs, &in, parity, dagger, &x, k, commDim); flops += (1320+504+48)*in.Volume(); }
DiracClover::DiracClover(const DiracParam ¶m) : DiracWilson(param), clover(*(param.clover)) { initCloverConstants(clover); }
DiracClover::DiracClover(const DiracClover &dirac) : DiracWilson(dirac), clover(dirac.clover) { initCloverConstants(clover); }