QUDA
1.0.0
|
#include <dirac_quda.h>
Public Member Functions | |
DiracCoarsePC (const DiracParam ¶m, bool gpu_setup=true) | |
DiracCoarsePC (const DiracCoarse &dirac, const DiracParam ¶m) | |
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, const Transfer &T, double kappa, double mass, 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... | |
![]() | |
double | Mu () const |
double | MuFactor () const |
DiracCoarse (const DiracParam ¶m, bool gpu_setup=true, bool mapped=false) | |
DiracCoarse (const DiracParam ¶m, 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 ¶m) | |
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... | |
void | createPreconditionedCoarseOp (GaugeField &Yhat, GaugeField &Xinv, const GaugeField &Y, const GaugeField &X) |
Create the precondtioned coarse operator. More... | |
![]() | |
Dirac (const DiracParam ¶m) | |
Dirac (const Dirac &dirac) | |
virtual | ~Dirac () |
Dirac & | operator= (const Dirac &dirac) |
void | setCommDim (const int commDim_[QUDA_MAX_DIM]) const |
Enable / disable communications for the Dirac operator. More... | |
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 |
void | flipDagger () const |
QudaPrecision | HaloPrecision () const |
void | setHaloPrecision (QudaPrecision halo_precision_) const |
![]() | |
Object () | |
virtual | ~Object () |
Additional Inherited Members | |
![]() | |
static Dirac * | create (const DiracParam ¶m) |
![]() | |
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) |
![]() | |
void | initializeCoarse () |
Initialize the coarse gauge fields. Location is determined by gpu_setup variable. More... | |
void | initializeLazy (QudaFieldLocation location) const |
Create the CPU or GPU coarse gauge fields on demand (requires that the fields have been created in the other memory space) More... | |
void | createY (bool gpu=true, bool mapped=false) const |
Allocate the Y and X fields. More... | |
void | createYhat (bool gpu=true) const |
Allocate the Yhat and Xinv fields. More... | |
![]() | |
bool | newTmp (ColorSpinorField **, const ColorSpinorField &) const |
void | deleteTmp (ColorSpinorField **, const bool &reset) const |
![]() | |
double | mu |
double | mu_factor |
const Transfer * | transfer |
const Dirac * | dirac |
const bool | need_bidirectional |
cpuGaugeField * | Y_h |
cpuGaugeField * | X_h |
cpuGaugeField * | Xinv_h |
cpuGaugeField * | Yhat_h |
cudaGaugeField * | Y_d |
cudaGaugeField * | X_d |
cudaGaugeField * | Xinv_d |
cudaGaugeField * | Yhat_d |
bool | enable_gpu |
bool | enable_cpu |
const bool | gpu_setup |
bool | init_gpu |
bool | init_cpu |
const bool | mapped |
![]() | |
cudaGaugeField * | gauge |
double | kappa |
double | mass |
int | laplace3D |
QudaMatPCType | matpcType |
QudaDagType | dagger |
unsigned long long | flops |
ColorSpinorField * | tmp1 |
ColorSpinorField * | tmp2 |
QudaDiracType | type |
QudaPrecision | halo_precision |
int | commDim [QUDA_MAX_DIM] |
TimeProfile | profile |
Even-odd preconditioned variant of coarse Dslash operator
Definition at line 972 of file dirac_quda.h.
quda::DiracCoarsePC::DiracCoarsePC | ( | const DiracParam & | param, |
bool | gpu_setup = true |
||
) |
[in] | param | Parameters defining this operator |
[in] | gpu_setup | Whether to do the setup on GPU or CPU |
Definition at line 356 of file dirac_coarse.cpp.
quda::DiracCoarsePC::DiracCoarsePC | ( | const DiracCoarse & | dirac, |
const DiracParam & | param | ||
) |
[in] | dirac | Another operator instance to clone from (shallow copy) |
[in] | param | Parameters defining this operator |
Definition at line 361 of file dirac_coarse.cpp.
|
virtual |
Definition at line 366 of file dirac_coarse.cpp.
|
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.
T[in] | Transfer operator defining the coarse grid |
Y[out] | Coarse link field |
X[out] | Coarse clover field |
kappa | Kappa parameter for the coarse operator |
mass | Mass parameter for the coarse operator, assumed to be zero |
mu | TM mu parameter for the coarse operator |
mu_factor | multiplicative factor for the mu parameter |
Reimplemented from quda::DiracCoarse.
Definition at line 524 of file dirac_coarse.cpp.
References checkLocation, quda::CoarseCoarseOp(), quda::DiracCoarse::initializeLazy(), quda::Dirac::matpcType, QUDA_COARSEPC_DIRAC, QUDA_CPU_FIELD_LOCATION, QUDA_CUDA_FIELD_LOCATION, quda::ColorSpinorField::TwistFlavor(), quda::Transfer::Vectors(), 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.
|
virtual |
Apply DslashXpay out = (D * in)
[out] | out | Output field |
[in] | in | Input field |
Reimplemented from quda::DiracCoarse.
Definition at line 368 of file dirac_coarse.cpp.
References quda::ApplyCoarse(), checkLocation, quda::Dirac::commDim, quda::Dirac::dagger, quda::Dirac::flops, quda::Dirac::halo_precision, quda::DiracCoarse::initializeLazy(), quda::Dirac::kappa, quda::ColorSpinorField::Ncolor(), quda::ColorSpinorField::Nspin(), QUDA_CPU_FIELD_LOCATION, QUDA_CUDA_FIELD_LOCATION, quda::ColorSpinorField::SiteSubset(), quda::ColorSpinorField::VolumeCB(), quda::DiracCoarse::X_d, quda::DiracCoarse::X_h, quda::DiracCoarse::Yhat_d, and quda::DiracCoarse::Yhat_h.
Referenced by DslashXpay(), and M().
|
virtual |
Apply DslashXpay out = (D * in + A * x)
[out] | out | Output field |
[in] | in | Input field |
Reimplemented from quda::DiracCoarse.
Definition at line 382 of file dirac_coarse.cpp.
References Dslash(), quda::Dirac::flops, quda::ColorSpinorField::Ncolor(), quda::ColorSpinorField::Nspin(), quda::ColorSpinorField::VolumeCB(), and quda::blas::xpay().
Referenced by M().
|
virtual |
Apply the full operator.
[out] | out | output vector, out = M * in |
[in] | in | input vector |
Reimplemented from quda::DiracCoarse.
Definition at line 393 of file dirac_coarse.cpp.
References quda::DiracCoarse::Clover(), quda::Dirac::deleteTmp(), quda::DiracCoarse::Dslash(), Dslash(), DslashXpay(), errorQuda, quda::Dirac::matpcType, quda::Dirac::newTmp(), 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().
|
virtual |
Reimplemented from quda::DiracCoarse.
Definition at line 429 of file dirac_coarse.cpp.
References quda::Dirac::deleteTmp(), M(), quda::Dirac::Mdag(), quda::Dirac::newTmp(), and quda::Dirac::tmp2.
|
virtual |
Reimplemented from quda::DiracCoarse.
Definition at line 437 of file dirac_coarse.cpp.
References quda::DiracCoarse::CloverInv(), quda::Dirac::deleteTmp(), quda::DiracCoarse::Dslash(), errorQuda, quda::ColorSpinorField::Even(), quda::Dirac::matpcType, quda::Dirac::newTmp(), quda::ColorSpinorField::Odd(), QUDA_EVEN_PARITY, QUDA_MATPC_EVEN_EVEN, QUDA_MATPC_EVEN_EVEN_ASYMMETRIC, QUDA_MATPC_ODD_ODD, QUDA_MATPC_ODD_ODD_ASYMMETRIC, QUDA_MATPC_SOLUTION, QUDA_MATPCDAG_MATPC_SOLUTION, QUDA_ODD_PARITY, quda::Dirac::tmp1, and quda::blas::xpay().
|
virtual |
Reimplemented from quda::DiracCoarse.
Definition at line 490 of file dirac_coarse.cpp.
References quda::Dirac::checkFullSpinor(), quda::DiracCoarse::CloverInv(), quda::Dirac::deleteTmp(), quda::DiracCoarse::Dslash(), errorQuda, quda::ColorSpinorField::Even(), quda::Dirac::matpcType, quda::Dirac::newTmp(), quda::ColorSpinorField::Odd(), QUDA_EVEN_PARITY, QUDA_MATPC_EVEN_EVEN, QUDA_MATPC_EVEN_EVEN_ASYMMETRIC, QUDA_MATPC_ODD_ODD, QUDA_MATPC_ODD_ODD_ASYMMETRIC, QUDA_MATPC_SOLUTION, QUDA_MATPCDAG_MATPC_SOLUTION, QUDA_ODD_PARITY, quda::Dirac::tmp1, and quda::blas::xpay().