QUDA  1.0.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Member Functions | Private Attributes | List of all members
quda::IncEigCG Class Reference

#include <invert_quda.h>

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

Public Member Functions

 IncEigCG (DiracMatrix &mat, DiracMatrix &matSloppy, DiracMatrix &matPrecon, SolverParam &param, TimeProfile &profile)
 
virtual ~IncEigCG ()
 
void increment (ColorSpinorField &V, int nev)
 Expands deflation space. More...
 
void RestartVT (const double beta, const double rho)
 
void UpdateVm (ColorSpinorField &res, double beta, double sqrtr2)
 
int eigCGsolve (ColorSpinorField &out, ColorSpinorField &in)
 
int initCGsolve (ColorSpinorField &out, ColorSpinorField &in)
 
void operator() (ColorSpinorField &out, ColorSpinorField &in)
 
- Public Member Functions inherited from quda::Solver
 Solver (SolverParam &param, TimeProfile &profile)
 
virtual ~Solver ()
 
virtual void blocksolve (ColorSpinorField &out, ColorSpinorField &in)
 
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...
 
void constructDeflationSpace (const ColorSpinorField &meta, const DiracMatrix &mat, bool svd)
 Constructs the deflation space. More...
 
virtual double flops () const
 

Private Attributes

DiracMatrixmat
 
DiracMatrixmatSloppy
 
DiracMatrixmatPrecon
 
SolverK
 
SolverParam Kparam
 
ColorSpinorFieldSetVm
 
ColorSpinorFieldrp
 
ColorSpinorFieldyp
 residual vector More...
 
ColorSpinorFieldp
 high precision accumulator More...
 
ColorSpinorFieldAp
 
ColorSpinorFieldtmpp
 
ColorSpinorFieldAz
 temporary for mat-vec More...
 
ColorSpinorFieldr_pre
 
ColorSpinorFieldp_pre
 residual passed to preconditioner More...
 
EigCGArgseigcg_args
 preconditioner result More...
 
TimeProfileprofile
 
bool init
 

Additional Inherited Members

- Static Public Member Functions inherited from quda::Solver
static Solvercreate (SolverParam &param, DiracMatrix &mat, DiracMatrix &matSloppy, DiracMatrix &matPrecon, TimeProfile &profile)
 
static double stopping (double tol, double b2, QudaResidualType residual_type)
 Set the solver L2 stopping condition. More...
 
- Public Attributes inherited from quda::Solver
EigenSolvereig_solve
 
bool deflate_init = false
 
std::vector< ColorSpinorField * > defl_tmp1
 
std::vector< ColorSpinorField * > defl_tmp2
 
- Protected Attributes inherited from quda::Solver
SolverParamparam
 
TimeProfileprofile
 
int node_parity
 

Detailed Description

Definition at line 1225 of file invert_quda.h.

Constructor & Destructor Documentation

◆ IncEigCG()

quda::IncEigCG::IncEigCG ( DiracMatrix mat,
DiracMatrix matSloppy,
DiracMatrix matPrecon,
SolverParam param,
TimeProfile profile 
)

◆ ~IncEigCG()

quda::IncEigCG::~IncEigCG ( )
virtual

Definition at line 290 of file inv_eigcg_quda.cpp.

References Ap, Az, eigcg_args, init, K, p, p_pre, r_pre, rp, tmpp, Vm, and yp.

Member Function Documentation

◆ eigCGsolve()

int quda::IncEigCG::eigCGsolve ( ColorSpinorField out,
ColorSpinorField in 
)

Definition at line 381 of file inv_eigcg_quda.cpp.

References Ap, quda::blas::axpyNorm(), quda::blas::axpyZpbx(), Az, checkLocation, commGlobalReductionSet(), quda::ColorSpinorParam::composite_dim, quda::Solver::convergence(), quda::blas::copy(), quda::ColorSpinorParam::create, quda::ColorSpinorField::Create(), csParam, eigcg_args, errorQuda, quda::blas::flops, quda::DiracMatrix::flops(), quda::SolverParam::gflops, quda::EigCGArgs::global_stop, quda::blas::HeavyQuarkResidualNorm(), init, quda::SolverParam::inv_type, quda::ColorSpinorParam::is_composite, quda::SolverParam::iter, quda::EigCGArgs::k, K, Kparam, quda::TimeProfile::Last(), quda::SolverParam::m, matSloppy, quda::SolverParam::maxiter, quda::SolverParam::nev, quda::blas::norm2(), p, p_pre, quda::Solver::param, quda::LatticeField::Precision(), quda::SolverParam::precision_precondition, quda::SolverParam::precision_ritz, quda::SolverParam::precision_sloppy, printfQuda, quda::Solver::PrintStats(), quda::Solver::PrintSummary(), profile, QUDA_COPY_FIELD_CREATE, QUDA_CUDA_FIELD_LOCATION, QUDA_DOUBLE_PRECISION, QUDA_HEAVY_QUARK_RESIDUAL, QUDA_INC_EIGCG_INVERTER, quda::QUDA_PROFILE_COMPUTE, quda::QUDA_PROFILE_EPILOGUE, quda::QUDA_PROFILE_FREE, quda::QUDA_PROFILE_INIT, quda::QUDA_PROFILE_PREAMBLE, QUDA_ZERO_FIELD_CREATE, r_pre, quda::blas::reDotProduct(), quda::EigCGArgs::ResetArgs(), quda::SolverParam::residual_type, quda::EigCGArgs::restarts, rp, quda::EigCGArgs::run_residual_correction, quda::SolverParam::secs, quda::EigCGArgs::SetLanczos(), quda::ColorSpinorParam::setPrecision(), quda::sqrt(), quda::Solver::stopping(), tmp, tmpp, quda::SolverParam::tol, quda::SolverParam::tol_hq, quda::SolverParam::true_res, quda::SolverParam::true_res_hq, UpdateVm(), quda::EigCGArgs::V2k, Vm, warningQuda, quda::blas::xmyNorm(), quda::blas::xpy(), yp, and quda::blas::zero().

Referenced by operator()().

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

◆ increment()

void quda::IncEigCG::increment ( ColorSpinorField V,
int  nev 
)

Expands deflation space.

Parameters
VComposite field container of new eigenvectors
nevnumber of vectors to load

◆ initCGsolve()

int quda::IncEigCG::initCGsolve ( ColorSpinorField out,
ColorSpinorField in 
)

◆ operator()()

void quda::IncEigCG::operator() ( ColorSpinorField out,
ColorSpinorField in 
)
virtual

◆ RestartVT()

void quda::IncEigCG::RestartVT ( const double  beta,
const double  rho 
)

◆ UpdateVm()

void quda::IncEigCG::UpdateVm ( ColorSpinorField res,
double  beta,
double  sqrtr2 
)

Definition at line 357 of file inv_eigcg_quda.cpp.

References Ap, quda::blas::ax(), Az, quda::ColorSpinorField::Component(), quda::blas::copy(), eigcg_args, quda::EigCGArgs::id, quda::SolverParam::m, quda::Solver::param, quda::EigCGArgs::ResetSearchIdx(), RestartVT(), quda::EigCGArgs::run_residual_correction, and Vm.

Referenced by eigCGsolve().

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

Member Data Documentation

◆ Ap

ColorSpinorField* quda::IncEigCG::Ap
private

Definition at line 1240 of file invert_quda.h.

Referenced by eigCGsolve(), RestartVT(), UpdateVm(), and ~IncEigCG().

◆ Az

ColorSpinorField* quda::IncEigCG::Az
private

temporary for mat-vec

Definition at line 1242 of file invert_quda.h.

Referenced by eigCGsolve(), RestartVT(), UpdateVm(), and ~IncEigCG().

◆ eigcg_args

EigCGArgs* quda::IncEigCG::eigcg_args
private

preconditioner result

Definition at line 1246 of file invert_quda.h.

Referenced by eigCGsolve(), operator()(), RestartVT(), UpdateVm(), and ~IncEigCG().

◆ init

bool quda::IncEigCG::init
private

Definition at line 1250 of file invert_quda.h.

Referenced by eigCGsolve(), and ~IncEigCG().

◆ K

Solver* quda::IncEigCG::K
private

Definition at line 1232 of file invert_quda.h.

Referenced by eigCGsolve(), IncEigCG(), initCGsolve(), operator()(), and ~IncEigCG().

◆ Kparam

SolverParam quda::IncEigCG::Kparam
private

Definition at line 1233 of file invert_quda.h.

Referenced by eigCGsolve(), IncEigCG(), initCGsolve(), and operator()().

◆ mat

DiracMatrix& quda::IncEigCG::mat
private

Definition at line 1228 of file invert_quda.h.

Referenced by initCGsolve(), and operator()().

◆ matPrecon

DiracMatrix& quda::IncEigCG::matPrecon
private

Definition at line 1230 of file invert_quda.h.

Referenced by initCGsolve(), and operator()().

◆ matSloppy

DiracMatrix& quda::IncEigCG::matSloppy
private

Definition at line 1229 of file invert_quda.h.

Referenced by eigCGsolve(), and operator()().

◆ p

ColorSpinorField* quda::IncEigCG::p
private

high precision accumulator

Definition at line 1239 of file invert_quda.h.

Referenced by eigCGsolve(), and ~IncEigCG().

◆ p_pre

ColorSpinorField* quda::IncEigCG::p_pre
private

residual passed to preconditioner

Definition at line 1244 of file invert_quda.h.

Referenced by eigCGsolve(), and ~IncEigCG().

◆ profile

TimeProfile& quda::IncEigCG::profile
private

Definition at line 1248 of file invert_quda.h.

Referenced by eigCGsolve(), initCGsolve(), and operator()().

◆ r_pre

ColorSpinorField* quda::IncEigCG::r_pre
private

Definition at line 1243 of file invert_quda.h.

Referenced by eigCGsolve(), and ~IncEigCG().

◆ rp

ColorSpinorField* quda::IncEigCG::rp
private

Definition at line 1237 of file invert_quda.h.

Referenced by eigCGsolve(), initCGsolve(), operator()(), and ~IncEigCG().

◆ tmpp

ColorSpinorField* quda::IncEigCG::tmpp
private

Definition at line 1241 of file invert_quda.h.

Referenced by eigCGsolve(), and ~IncEigCG().

◆ Vm

ColorSpinorFieldSet* quda::IncEigCG::Vm
private

Definition at line 1235 of file invert_quda.h.

Referenced by eigCGsolve(), operator()(), RestartVT(), UpdateVm(), and ~IncEigCG().

◆ yp

ColorSpinorField* quda::IncEigCG::yp
private

residual vector

Definition at line 1238 of file invert_quda.h.

Referenced by eigCGsolve(), and ~IncEigCG().


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