QUDA  v1.1.0
A library for QCD on GPUs
Public Member Functions | List of all members
quda::CG Class Reference

Conjugate-Gradient Solver. More...

#include <invert_quda.h>

+ Inheritance diagram for quda::CG:

Public Member Functions

 CG (const DiracMatrix &mat, const DiracMatrix &matSloppy, const DiracMatrix &matPrecon, const DiracMatrix &matEig, SolverParam &param, 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 &param, TimeProfile &profile)
 
virtual ~Solver ()
 
const DiracMatrixM ()
 
const DiracMatrixMsloppy ()
 
const DiracMatrixMprecon ()
 
const DiracMatrixMeig ()
 
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 Solvercreate (SolverParam &param, 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 DiracMatrixmat
 
const DiracMatrixmatSloppy
 
const DiracMatrixmatPrecon
 
const DiracMatrixmatEig
 
SolverParamparam
 
TimeProfileprofile
 
int node_parity
 
EigenSolvereig_solve
 
bool deflate_init
 
bool deflate_compute
 
bool recompute_evals
 
std::vector< ColorSpinorField * > evecs
 
std::vector< Complexevals
 

Detailed Description

Conjugate-Gradient Solver.

Definition at line 639 of file invert_quda.h.

Constructor & Destructor Documentation

◆ CG()

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.

◆ ~CG()

quda::CG::~CG ( )
virtual

Definition at line 36 of file inv_cg_quda.cpp.

Member Function Documentation

◆ blocksolve()

void quda::CG::blocksolve ( ColorSpinorField out,
ColorSpinorField in 
)
virtual

Reimplemented from quda::Solver.

Definition at line 792 of file inv_cg_quda.cpp.

◆ hermitian()

virtual bool quda::CG::hermitian ( )
inlinevirtual
Returns
Whether the solver is only for Hermitian systems

Implements quda::Solver.

Reimplemented in quda::CGNR, and quda::CGNE.

Definition at line 672 of file invert_quda.h.

◆ operator()() [1/2]

void quda::CG::operator() ( ColorSpinorField out,
ColorSpinorField in 
)
inlinevirtual

Run CG.

Parameters
outSolution vector.
inRight-hand side.

Implements quda::Solver.

Reimplemented in quda::CGNR, and quda::CGNE.

Definition at line 656 of file invert_quda.h.

◆ operator()() [2/2]

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.

Parameters
outSolution-vector.
inRight-hand side.
p_initInitial-search direction.
r2_old_init[description]

Definition at line 223 of file inv_cg_quda.cpp.


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