QUDA  0.9.0
Public Member Functions | List of all members
quda::DiracCoarsePC Class Reference

#include <dirac_quda.h>

Inheritance diagram for quda::DiracCoarsePC:
Inheritance graph
[legend]
Collaboration diagram for quda::DiracCoarsePC:
Collaboration graph
[legend]

Public Member Functions

 DiracCoarsePC (const DiracParam &param, bool enable_gpu=true)
 
 DiracCoarsePC (const DiracCoarse &dirac, const DiracParam &param)
 
virtual ~DiracCoarsePC ()
 
void Dslash (ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
 Apply DslashXpay out = (D * in) More...
 
void DslashXpay (ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
 Apply DslashXpay out = (D * in + A * x) More...
 
void M (ColorSpinorField &out, const ColorSpinorField &in) const
 Apply the full operator. More...
 
void MdagM (ColorSpinorField &out, const ColorSpinorField &in) const
 
void prepare (ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
 
void reconstruct (ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
 
void createCoarseOp (GaugeField &Y, GaugeField &X, GaugeField &Xinv, GaugeField &Yhat, const Transfer &T, double kappa, double mu, double mu_factor=0.) const
 Create the coarse even-odd preconditioned coarse operator. Unlike the Wilson operator, the coarsening of the preconditioned coarse operator differs from that of the unpreconditioned coarse operator, so we need to specialize it. More...
 
- Public Member Functions inherited from quda::DiracCoarse
double Mu () const
 
double MuFactor () const
 
 DiracCoarse (const DiracParam &param, bool enable_gpu=true)
 
 DiracCoarse (const DiracParam &param, cpuGaugeField *Y_h, cpuGaugeField *X_h, cpuGaugeField *Xinv_h, cpuGaugeField *Yhat_h, cudaGaugeField *Y_d=0, cudaGaugeField *X_d=0, cudaGaugeField *Xinv_d=0, cudaGaugeField *Yhat_d=0)
 
 DiracCoarse (const DiracCoarse &dirac, const DiracParam &param)
 
virtual ~DiracCoarse ()
 
void Clover (ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
 Apply the coarse clover operator. More...
 
void CloverInv (ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
 Apply the inverse coarse clover operator. More...
 
- Public Member Functions inherited from quda::Dirac
 Dirac (const DiracParam &param)
 
 Dirac (const Dirac &dirac)
 
virtual ~Dirac ()
 
Diracoperator= (const Dirac &dirac)
 
virtual void checkParitySpinor (const ColorSpinorField &, const ColorSpinorField &) const
 
virtual void checkFullSpinor (const ColorSpinorField &, const ColorSpinorField &) const
 
void checkSpinorAlias (const ColorSpinorField &, const ColorSpinorField &) const
 
void Mdag (ColorSpinorField &out, const ColorSpinorField &in) const
 
void MMdag (ColorSpinorField &out, const ColorSpinorField &in) const
 
void setMass (double mass)
 
double Kappa () const
 
unsigned long long Flops () const
 
QudaMatPCType getMatPCType () const
 
int getStencilSteps () const
 
void Dagger (QudaDagType dag) const
 
- Public Member Functions inherited from quda::Object
 Object ()
 
virtual ~Object ()
 

Additional Inherited Members

- Static Public Member Functions inherited from quda::Dirac
static Diraccreate (const DiracParam &param)
 
- Static Public Member Functions inherited from quda::Object
static void * operator new (std::size_t size)
 
static void operator delete (void *p)
 
static void * operator new[] (std::size_t size)
 
static void operator delete[] (void *p)
 
- Protected Member Functions inherited from quda::DiracCoarse
void initializeCoarse ()
 
- Protected Member Functions inherited from quda::Dirac
bool newTmp (ColorSpinorField **, const ColorSpinorField &) const
 
void deleteTmp (ColorSpinorField **, const bool &reset) const
 
- Protected Attributes inherited from quda::DiracCoarse
double mu
 
double mu_factor
 
const Transfertransfer
 
const Diracdirac
 
cpuGaugeFieldY_h
 
cpuGaugeFieldX_h
 
cpuGaugeFieldXinv_h
 
cpuGaugeFieldYhat_h
 
cudaGaugeFieldY_d
 
cudaGaugeFieldX_d
 
cudaGaugeFieldXinv_d
 
cudaGaugeFieldYhat_d
 
bool enable_gpu
 
bool init
 
- Protected Attributes inherited from quda::Dirac
cudaGaugeFieldgauge
 
double kappa
 
double mass
 
QudaMatPCType matpcType
 
QudaDagType dagger
 
unsigned long long flops
 
ColorSpinorFieldtmp1
 
ColorSpinorFieldtmp2
 
QudaDiracType type
 
QudaTune tune
 
int commDim [QUDA_MAX_DIM]
 
TimeProfile profile
 

Detailed Description

Even-odd preconditioned variant of coarse Dslash operator

Definition at line 861 of file dirac_quda.h.

Constructor & Destructor Documentation

◆ DiracCoarsePC() [1/2]

quda::DiracCoarsePC::DiracCoarsePC ( const DiracParam param,
bool  enable_gpu = true 
)

Definition at line 239 of file dirac_coarse.cpp.

◆ DiracCoarsePC() [2/2]

quda::DiracCoarsePC::DiracCoarsePC ( const DiracCoarse dirac,
const DiracParam param 
)

Definition at line 244 of file dirac_coarse.cpp.

◆ ~DiracCoarsePC()

quda::DiracCoarsePC::~DiracCoarsePC ( )
virtual

Definition at line 249 of file dirac_coarse.cpp.

Member Function Documentation

◆ createCoarseOp()

void quda::DiracCoarsePC::createCoarseOp ( GaugeField Y,
GaugeField X,
GaugeField Xinv,
GaugeField Yhat,
const Transfer T,
double  kappa,
double  mu,
double  mu_factor = 0. 
) const
virtual

Create the coarse even-odd preconditioned coarse operator. Unlike the Wilson operator, the coarsening of the preconditioned coarse operator differs from that of the unpreconditioned coarse operator, so we need to specialize it.

Parameters
T[in]Transfer operator defining the coarse grid
Y[out]Coarse link field
X[out]Coarse clover field
Xinv[out]Coarse clover inverse field
Yhatcoarse preconditioned link field
kappaKappa parameter for the coarse operator
muTM mu parameter for the coarse operator
mu_factormultiplicative factor for the mu parameter

Reimplemented from quda::DiracCoarse.

Definition at line 406 of file dirac_coarse.cpp.

References a, checkLocation, quda::CoarseCoarseOp(), quda::Dirac::kappa, quda::Dirac::matpcType, quda::DiracCoarse::mu, quda::DiracCoarse::mu_factor, QUDA_COARSEPC_DIRAC, QUDA_CPU_FIELD_LOCATION, quda::ColorSpinorField::TwistFlavor(), quda::Transfer::Vectors(), X, quda::DiracCoarse::X_d, quda::DiracCoarse::X_h, quda::DiracCoarse::Xinv_d, quda::DiracCoarse::Xinv_h, quda::DiracCoarse::Yhat_d, and quda::DiracCoarse::Yhat_h.

Here is the call graph for this function:

◆ Dslash()

void quda::DiracCoarsePC::Dslash ( ColorSpinorField out,
const ColorSpinorField in,
const QudaParity  parity 
) const
virtual

Apply DslashXpay out = (D * in)

Parameters
[out]outOutput field
[in]inInput field
[paraity]parity Parity which we are applying the operator to

Reimplemented from quda::DiracCoarse.

Definition at line 251 of file dirac_coarse.cpp.

References quda::ApplyCoarse(), checkLocation, quda::Dirac::dagger, quda::DiracCoarse::enable_gpu, errorQuda, quda::Dirac::flops, in, quda::Dirac::kappa, n, out, parity, QUDA_CPU_FIELD_LOCATION, QUDA_CUDA_FIELD_LOCATION, quda::DiracCoarse::X_d, quda::DiracCoarse::X_h, quda::DiracCoarse::Yhat_d, and quda::DiracCoarse::Yhat_h.

Referenced by DslashXpay(), and M().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DslashXpay()

void quda::DiracCoarsePC::DslashXpay ( ColorSpinorField out,
const ColorSpinorField in,
const QudaParity  parity,
const ColorSpinorField x,
const double k 
) const
virtual

Apply DslashXpay out = (D * in + A * x)

Parameters
[out]outOutput field
[in]inInput field
[paraity]parity Parity which we are applying the operator to

Reimplemented from quda::DiracCoarse.

Definition at line 264 of file dirac_coarse.cpp.

References Dslash(), quda::Dirac::flops, in, n, out, parity, x, and quda::blas::xpay().

Referenced by M().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ M()

void quda::DiracCoarsePC::M ( ColorSpinorField out,
const ColorSpinorField in 
) const
virtual

Apply the full operator.

Parameters
[out]outoutput vector, out = M * in
[in]ininput vector

Reimplemented from quda::DiracCoarse.

Definition at line 275 of file dirac_coarse.cpp.

References quda::DiracCoarse::Clover(), quda::Dirac::deleteTmp(), quda::DiracCoarse::Dslash(), Dslash(), DslashXpay(), errorQuda, in, quda::Dirac::matpcType, quda::Dirac::newTmp(), out, QUDA_EVEN_PARITY, QUDA_FULL_SITE_SUBSET, QUDA_MATPC_EVEN_EVEN, QUDA_MATPC_EVEN_EVEN_ASYMMETRIC, QUDA_MATPC_ODD_ODD, QUDA_MATPC_ODD_ODD_ASYMMETRIC, QUDA_ODD_PARITY, quda::ColorSpinorField::SiteSubset(), quda::Dirac::tmp1, and quda::blas::xpay().

Referenced by MdagM().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MdagM()

void quda::DiracCoarsePC::MdagM ( ColorSpinorField out,
const ColorSpinorField in 
) const
virtual

Reimplemented from quda::DiracCoarse.

Definition at line 311 of file dirac_coarse.cpp.

References quda::Dirac::deleteTmp(), in, M(), quda::Dirac::Mdag(), quda::Dirac::newTmp(), out, and quda::Dirac::tmp2.

Here is the call graph for this function:

◆ prepare()

void quda::DiracCoarsePC::prepare ( ColorSpinorField *&  src,
ColorSpinorField *&  sol,
ColorSpinorField x,
ColorSpinorField b,
const QudaSolutionType  solType 
) const
virtual

◆ reconstruct()

void quda::DiracCoarsePC::reconstruct ( ColorSpinorField x,
const ColorSpinorField b,
const QudaSolutionType  solType 
) const
virtual

The documentation for this class was generated from the following files: