Example #1
0
// 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();
}
Example #2
0
 DiracClover::DiracClover(const DiracParam &param)
   : DiracWilson(param), clover(*(param.clover))
 {
   initCloverConstants(clover);
 }
Example #3
0
 DiracClover::DiracClover(const DiracClover &dirac) 
   : DiracWilson(dirac), clover(dirac.clover)
 {
   initCloverConstants(clover);
 }