Esempio n. 1
0
void DiracWilsonPC::MdagM(cudaColorSpinorField &out, const cudaColorSpinorField &in) const
{
#ifdef MULTI_GPU
  bool reset = newTmp(&tmp2, in);
  M(*tmp2, in);
  Mdag(out, *tmp2);
  deleteTmp(&tmp2, reset);
#else
  M(out, in);
  Mdag(out, out);
#endif
}
Esempio n. 2
0
 void DiracDomainWallPC::MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
 {
   //M(out, in);
   //Mdag(out, out);
   bool reset = newTmp(&tmp2, in);
   M(*tmp2, in);
   Mdag(out, *tmp2);
   deleteTmp(&tmp2, reset);
 }
Esempio n. 3
0
 void DiracCloverPC::MdagM(cudaColorSpinorField &out, const cudaColorSpinorField &in) const
 {
   // need extra temporary because of symmetric preconditioning dagger
   // and for multi-gpu the input and output fields cannot alias
   bool reset = newTmp(&tmp2, in);
   M(*tmp2, in);
   Mdag(out, *tmp2);
   deleteTmp(&tmp2, reset);
 }
Esempio n. 4
0
void DiracCloverPC::MdagM(cudaColorSpinorField &out, const cudaColorSpinorField &in) const
{
  // need extra temporary because of symmetric preconditioning dagger
  bool reset = newTmp(&tmp2, in);

  M(*tmp2, in);
  Mdag(out, *tmp2);

  deleteTmp(&tmp2, reset);
}
Esempio n. 5
0
  void DiracDomainWall::MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
  {
    checkFullSpinor(out, in);

    bool reset = newTmp(&tmp1, in);

    M(*tmp1, in);
    Mdag(out, *tmp1);

    deleteTmp(&tmp1, reset);
  }
Esempio n. 6
0
void DiracWilson::MdagM(cudaColorSpinorField &out, const cudaColorSpinorField &in) const
{
  checkFullSpinor(out, in);

  bool reset = newTmp(&tmp1, in);
  checkFullSpinor(*tmp1, in);

  M(*tmp1, in);
  Mdag(out, *tmp1);

  deleteTmp(&tmp1, reset);
}
Esempio n. 7
0
void DiracDomainWallPC::MdagM(cudaColorSpinorField &out, const cudaColorSpinorField &in) const
{
  M(out, in);
  Mdag(out, out);
}