QUDA  0.9.0
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
quda::DiracCoarse Class Reference

#include <dirac_quda.h>

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

Public Member Functions

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...
 
virtual void Dslash (ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
 Apply DslashXpay out = (D * in) More...
 
virtual 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...
 
virtual void M (ColorSpinorField &out, const ColorSpinorField &in) const
 Apply the full operator. More...
 
virtual void MdagM (ColorSpinorField &out, const ColorSpinorField &in) const
 
virtual void prepare (ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
 
virtual 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 operator from this coarse 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 ()
 

Protected Member Functions

void initializeCoarse ()
 
- Protected Member Functions inherited from quda::Dirac
bool newTmp (ColorSpinorField **, const ColorSpinorField &) const
 
void deleteTmp (ColorSpinorField **, const bool &reset) const
 

Protected Attributes

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
 

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)
 

Detailed Description

This class serves as a front-end to the coarse Dslash operator, similar to the other dslash operators.

Definition at line 740 of file dirac_quda.h.

Constructor & Destructor Documentation

◆ DiracCoarse() [1/3]

quda::DiracCoarse::DiracCoarse ( const DiracParam param,
bool  enable_gpu = true 
)
Parameters
[in]paramParameters defining this operator
[in]enable_gpuWhether to enable this operator for the GPU

Definition at line 7 of file dirac_coarse.cpp.

References initializeCoarse().

Here is the call graph for this function:

◆ DiracCoarse() [2/3]

quda::DiracCoarse::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 
)
Parameters
[in]paramParameters defining this operator
[in]Y_hCPU coarse link field
[in]X_hCPU coarse clover field
[in]Xinv_hCPU coarse inverse clover field
[in]Yhat_hCPU coarse preconditioned link field
[in]Y_dGPU coarse link field
[in]X_dGPU coarse clover field
[in]Xinv_dGPU coarse inverse clover field
[in]Yhat_dGPU coarse preconditioned link field

Definition at line 16 of file dirac_coarse.cpp.

◆ DiracCoarse() [3/3]

quda::DiracCoarse::DiracCoarse ( const DiracCoarse dirac,
const DiracParam param 
)
Parameters
[in]diracAnother operator instance to clone from (shallow copy)
[in]paramParameters defining this operator

Definition at line 27 of file dirac_coarse.cpp.

◆ ~DiracCoarse()

quda::DiracCoarse::~DiracCoarse ( )
virtual

Definition at line 36 of file dirac_coarse.cpp.

References init, X_d, X_h, Xinv_d, Xinv_h, Y_d, Y_h, Yhat_d, and Yhat_h.

Member Function Documentation

◆ Clover()

void quda::DiracCoarse::Clover ( ColorSpinorField out,
const ColorSpinorField in,
const QudaParity  parity 
) const

Apply the coarse clover operator.

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

Definition at line 132 of file dirac_coarse.cpp.

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

Referenced by benchmark(), and quda::DiracCoarsePC::M().

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

◆ CloverInv()

void quda::DiracCoarse::CloverInv ( ColorSpinorField out,
const ColorSpinorField in,
const QudaParity  parity 
) const

Apply the inverse coarse clover operator.

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

Definition at line 145 of file dirac_coarse.cpp.

References quda::ApplyCoarse(), checkLocation, quda::Dirac::dagger, enable_gpu, errorQuda, quda::Dirac::flops, in, quda::Dirac::kappa, n, out, parity, QUDA_CPU_FIELD_LOCATION, QUDA_CUDA_FIELD_LOCATION, Xinv_d, Xinv_h, Y_d, and Y_h.

Referenced by quda::DiracCoarsePC::prepare(), and quda::DiracCoarsePC::reconstruct().

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

◆ createCoarseOp()

void quda::DiracCoarse::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 operator from this coarse operator.

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
Yhat[out]Coarse 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::Dirac.

Reimplemented in quda::DiracCoarsePC.

Definition at line 229 of file dirac_coarse.cpp.

References a, checkLocation, quda::CoarseCoarseOp(), quda::Dirac::kappa, mu, mu_factor, QUDA_COARSE_DIRAC, QUDA_CPU_FIELD_LOCATION, QUDA_MATPC_INVALID, quda::ColorSpinorField::TwistFlavor(), quda::Transfer::Vectors(), X, X_d, X_h, Xinv_d, Xinv_h, Y_d, and Y_h.

Here is the call graph for this function:

◆ Dslash()

void quda::DiracCoarse::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

Implements quda::Dirac.

Reimplemented in quda::DiracCoarsePC.

Definition at line 158 of file dirac_coarse.cpp.

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

Referenced by benchmark(), quda::DiracCoarsePC::M(), quda::DiracCoarsePC::prepare(), and quda::DiracCoarsePC::reconstruct().

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

◆ DslashXpay()

void quda::DiracCoarse::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

Implements quda::Dirac.

Reimplemented in quda::DiracCoarsePC.

Definition at line 171 of file dirac_coarse.cpp.

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

Here is the call graph for this function:

◆ initializeCoarse()

void quda::DiracCoarse::initializeCoarse ( )
protected

◆ M()

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

Apply the full operator.

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

Implements quda::Dirac.

Reimplemented in quda::DiracCoarsePC.

Definition at line 187 of file dirac_coarse.cpp.

References quda::ApplyCoarse(), checkLocation, quda::Dirac::dagger, enable_gpu, errorQuda, quda::Dirac::flops, in, quda::Dirac::kappa, n, out, QUDA_CPU_FIELD_LOCATION, QUDA_CUDA_FIELD_LOCATION, QUDA_INVALID_PARITY, X_d, X_h, Y_d, and Y_h.

Referenced by benchmark(), and MdagM().

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

◆ MdagM()

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

Implements quda::Dirac.

Reimplemented in quda::DiracCoarsePC.

Definition at line 199 of file dirac_coarse.cpp.

References quda::Dirac::deleteTmp(), errorQuda, in, M(), quda::Dirac::Mdag(), quda::Dirac::newTmp(), out, QUDA_FULL_SITE_SUBSET, quda::ColorSpinorField::SiteSubset(), and quda::Dirac::tmp1.

Here is the call graph for this function:

◆ Mu()

double quda::DiracCoarse::Mu ( ) const
inlinevirtual

Whether this instance did the allocation or not

Reimplemented from quda::Dirac.

Definition at line 764 of file dirac_quda.h.

References mu.

Referenced by initializeCoarse().

Here is the caller graph for this function:

◆ MuFactor()

double quda::DiracCoarse::MuFactor ( ) const
inlinevirtual

Reimplemented from quda::Dirac.

Definition at line 765 of file dirac_quda.h.

References mu_factor.

Referenced by initializeCoarse().

Here is the caller graph for this function:

◆ prepare()

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

Implements quda::Dirac.

Reimplemented in quda::DiracCoarsePC.

Definition at line 210 of file dirac_coarse.cpp.

References b, errorQuda, QUDA_MATPC_SOLUTION, QUDA_MATPCDAG_MATPC_SOLUTION, src, and x.

◆ reconstruct()

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

Implements quda::Dirac.

Reimplemented in quda::DiracCoarsePC.

Definition at line 222 of file dirac_coarse.cpp.

Member Data Documentation

◆ dirac

const Dirac* quda::DiracCoarse::dirac
protected

restrictor / prolongator defined here

Definition at line 746 of file dirac_quda.h.

Referenced by initializeCoarse().

◆ enable_gpu

bool quda::DiracCoarse::enable_gpu
protected

Initialize the coarse gauge field

Definition at line 760 of file dirac_quda.h.

Referenced by Clover(), CloverInv(), Dslash(), quda::DiracCoarsePC::Dslash(), DslashXpay(), initializeCoarse(), and M().

◆ init

bool quda::DiracCoarse::init
protected

Whether to enable this operator for the GPU

Definition at line 761 of file dirac_quda.h.

Referenced by ~DiracCoarse().

◆ mu

double quda::DiracCoarse::mu
protected

Definition at line 743 of file dirac_quda.h.

Referenced by createCoarseOp(), quda::DiracCoarsePC::createCoarseOp(), and Mu().

◆ mu_factor

double quda::DiracCoarse::mu_factor
protected

Definition at line 744 of file dirac_quda.h.

Referenced by createCoarseOp(), quda::DiracCoarsePC::createCoarseOp(), and MuFactor().

◆ transfer

const Transfer* quda::DiracCoarse::transfer
protected

Definition at line 745 of file dirac_quda.h.

Referenced by initializeCoarse().

◆ X_d

cudaGaugeField* quda::DiracCoarse::X_d
protected

◆ X_h

cpuGaugeField* quda::DiracCoarse::X_h
protected

◆ Xinv_d

cudaGaugeField* quda::DiracCoarse::Xinv_d
protected

GPU copy of the coarse clover term

Definition at line 755 of file dirac_quda.h.

Referenced by CloverInv(), createCoarseOp(), quda::DiracCoarsePC::createCoarseOp(), initializeCoarse(), and ~DiracCoarse().

◆ Xinv_h

cpuGaugeField* quda::DiracCoarse::Xinv_h
protected

CPU copy of the coarse clover term

Definition at line 750 of file dirac_quda.h.

Referenced by CloverInv(), createCoarseOp(), quda::DiracCoarsePC::createCoarseOp(), initializeCoarse(), and ~DiracCoarse().

◆ Y_d

cudaGaugeField* quda::DiracCoarse::Y_d
protected

CPU copy of the preconditioned coarse link field

Definition at line 753 of file dirac_quda.h.

Referenced by Clover(), CloverInv(), createCoarseOp(), Dslash(), DslashXpay(), initializeCoarse(), M(), and ~DiracCoarse().

◆ Y_h

cpuGaugeField* quda::DiracCoarse::Y_h
protected

Parent Dirac operator

Definition at line 748 of file dirac_quda.h.

Referenced by Clover(), CloverInv(), createCoarseOp(), Dslash(), DslashXpay(), initializeCoarse(), M(), and ~DiracCoarse().

◆ Yhat_d

cudaGaugeField* quda::DiracCoarse::Yhat_d
protected

GPU copy of inverse coarse clover term

Definition at line 756 of file dirac_quda.h.

Referenced by quda::DiracCoarsePC::createCoarseOp(), quda::DiracCoarsePC::Dslash(), initializeCoarse(), and ~DiracCoarse().

◆ Yhat_h

cpuGaugeField* quda::DiracCoarse::Yhat_h
protected

CPU copy of the inverse coarse clover term

Definition at line 751 of file dirac_quda.h.

Referenced by quda::DiracCoarsePC::createCoarseOp(), quda::DiracCoarsePC::Dslash(), initializeCoarse(), and ~DiracCoarse().


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