QUDA
v1.1.0
A library for QCD on GPUs
|
Conjugate-Gradient Solver. More...
#include <invert_quda.h>
Public Member Functions | |
CG (const DiracMatrix &mat, const DiracMatrix &matSloppy, const DiracMatrix &matPrecon, const DiracMatrix &matEig, SolverParam ¶m, TimeProfile &profile) | |
virtual | ~CG () |
void | operator() (ColorSpinorField &out, ColorSpinorField &in) |
Run CG. More... | |
void | operator() (ColorSpinorField &out, ColorSpinorField &in, ColorSpinorField *p_init, double r2_old_init) |
Solve re-using an initial Krylov space defined by an initial r2_old_init and search direction p_init. More... | |
void | blocksolve (ColorSpinorField &out, ColorSpinorField &in) |
virtual bool | hermitian () |
Public Member Functions inherited from quda::Solver | |
Solver (const DiracMatrix &mat, const DiracMatrix &matSloppy, const DiracMatrix &matPrecon, const DiracMatrix &matEig, SolverParam ¶m, TimeProfile &profile) | |
virtual | ~Solver () |
const DiracMatrix & | M () |
const DiracMatrix & | Msloppy () |
const DiracMatrix & | Mprecon () |
const DiracMatrix & | Meig () |
bool | convergence (double r2, double hq2, double r2_tol, double hq_tol) |
bool | convergenceHQ (double r2, double hq2, double r2_tol, double hq_tol) |
Test for HQ solver convergence – ignore L2 residual. More... | |
bool | convergenceL2 (double r2, double hq2, double r2_tol, double hq_tol) |
Test for L2 solver convergence – ignore HQ residual. More... | |
void | PrintStats (const char *name, int k, double r2, double b2, double hq2) |
Prints out the running statistics of the solver (requires a verbosity of QUDA_VERBOSE) More... | |
void | PrintSummary (const char *name, int k, double r2, double b2, double r2_tol, double hq_tol) |
Prints out the summary of the solver convergence (requires a verbosity of QUDA_SUMMARIZE). Assumes SolverParam.true_res and SolverParam.true_res_hq has been set. More... | |
double | precisionEpsilon (QudaPrecision prec=QUDA_INVALID_PRECISION) const |
Returns the epsilon tolerance for a given precision, by default returns the solver precision. More... | |
void | constructDeflationSpace (const ColorSpinorField &meta, const DiracMatrix &mat) |
Constructs the deflation space and eigensolver. More... | |
void | destroyDeflationSpace () |
Destroy the allocated deflation space. More... | |
void | extendSVDDeflationSpace () |
Extends the deflation space to twice its size for SVD deflation. More... | |
void | injectDeflationSpace (std::vector< ColorSpinorField * > &defl_space) |
Injects a deflation space into the solver from the vector argument. Note the input space is reduced to zero size as a result of calling this function, with responsibility for the space transferred to the solver. More... | |
void | extractDeflationSpace (std::vector< ColorSpinorField * > &defl_space) |
Extracts the deflation space from the solver to the vector argument. Note the solver deflation space is reduced to zero size as a result of calling this function, with responsibility for the space transferred to the argument. More... | |
int | deflationSpaceSize () const |
Returns the size of deflation space. More... | |
void | setDeflateCompute (bool flag) |
Sets the deflation compute boolean. More... | |
void | setRecomputeEvals (bool flag) |
Sets the recompute evals boolean. More... | |
virtual double | flops () const |
Return flops. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from quda::Solver | |
static Solver * | create (SolverParam ¶m, const DiracMatrix &mat, const DiracMatrix &matSloppy, const DiracMatrix &matPrecon, const DiracMatrix &matEig, TimeProfile &profile) |
Solver factory. More... | |
static double | stopping (double tol, double b2, QudaResidualType residual_type) |
Set the solver L2 stopping condition. More... | |
Protected Attributes inherited from quda::Solver | |
const DiracMatrix & | mat |
const DiracMatrix & | matSloppy |
const DiracMatrix & | matPrecon |
const DiracMatrix & | matEig |
SolverParam & | param |
TimeProfile & | profile |
int | node_parity |
EigenSolver * | eig_solve |
bool | deflate_init |
bool | deflate_compute |
bool | recompute_evals |
std::vector< ColorSpinorField * > | evecs |
std::vector< Complex > | evals |
Conjugate-Gradient Solver.
Definition at line 639 of file invert_quda.h.
quda::CG::CG | ( | const DiracMatrix & | mat, |
const DiracMatrix & | matSloppy, | ||
const DiracMatrix & | matPrecon, | ||
const DiracMatrix & | matEig, | ||
SolverParam & | param, | ||
TimeProfile & | profile | ||
) |
Definition at line 19 of file inv_cg_quda.cpp.
|
virtual |
Definition at line 36 of file inv_cg_quda.cpp.
|
virtual |
Reimplemented from quda::Solver.
Definition at line 792 of file inv_cg_quda.cpp.
|
inlinevirtual |
Implements quda::Solver.
Reimplemented in quda::CGNR, and quda::CGNE.
Definition at line 672 of file invert_quda.h.
|
inlinevirtual |
Run CG.
out | Solution vector. |
in | Right-hand side. |
Implements quda::Solver.
Reimplemented in quda::CGNR, and quda::CGNE.
Definition at line 656 of file invert_quda.h.
void quda::CG::operator() | ( | ColorSpinorField & | out, |
ColorSpinorField & | in, | ||
ColorSpinorField * | p_init, | ||
double | r2_old_init | ||
) |
Solve re-using an initial Krylov space defined by an initial r2_old_init and search direction p_init.
This can be used when continuing a CG, e.g. as refinement step after a multi-shift solve.
out | Solution-vector. |
in | Right-hand side. |
p_init | Initial-search direction. |
r2_old_init | [description] |
Definition at line 223 of file inv_cg_quda.cpp.