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::GMResDR Class Reference

#include <invert_quda.h>

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

Public Member Functions

 GMResDR (DiracMatrix &mat, DiracMatrix &matSloppy, DiracMatrix &matPrecon, SolverParam &param, TimeProfile &profile)
 
 GMResDR (DiracMatrix &mat, Solver &K, DiracMatrix &matSloppy, DiracMatrix &matPrecon, SolverParam &param, TimeProfile &profile)
 
virtual ~GMResDR ()
 
void operator() (ColorSpinorField &out, ColorSpinorField &in)
 
void RunDeflatedCycles (ColorSpinorField *out, ColorSpinorField *in, const double tol_threshold)
 
int FlexArnoldiProcedure (const int start_idx, const bool do_givens)
 
void RestartVZH ()
 
void UpdateSolution (ColorSpinorField *x, ColorSpinorField *r, bool do_gels)
 
- 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
 
ColorSpinorFieldSetZm
 
ColorSpinorFieldrp
 
ColorSpinorFieldyp
 residual vector More...
 
ColorSpinorFieldtmpp
 high precision accumulator More...
 
ColorSpinorFieldr_sloppy
 temporary for mat-vec More...
 
ColorSpinorFieldr_pre
 sloppy residual vector More...
 
ColorSpinorFieldp_pre
 residual passed to preconditioner More...
 
TimeProfileprofile
 preconditioner result More...
 
GMResDRArgsgmresdr_args
 
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 1277 of file invert_quda.h.

Constructor & Destructor Documentation

◆ GMResDR() [1/2]

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

◆ GMResDR() [2/2]

quda::GMResDR::GMResDR ( DiracMatrix mat,
Solver K,
DiracMatrix matSloppy,
DiracMatrix matPrecon,
SolverParam param,
TimeProfile profile 
)

Definition at line 234 of file inv_gmresdr_quda.cpp.

◆ ~GMResDR()

quda::GMResDR::~GMResDR ( )
virtual

Member Function Documentation

◆ FlexArnoldiProcedure()

int quda::GMResDR::FlexArnoldiProcedure ( const int  start_idx,
const bool  do_givens = false 
)

◆ operator()()

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

Implements quda::Solver.

Definition at line 453 of file inv_gmresdr_quda.cpp.

References quda::blas::axpy(), quda::GMResDRArgs::c, quda::blas::cDotProduct(), quda::ColorSpinorField::Component(), quda::ColorSpinorField::Components(), quda::ColorSpinorParam::composite_dim, quda::Solver::convergence(), quda::ColorSpinorParam::create, quda::ColorSpinorField::Create(), csParam, quda::SolverParam::deflation_grid, FlexArnoldiProcedure(), quda::blas::flops, quda::DiracMatrix::flops(), quda::SolverParam::gflops, gmresdr_args, quda::blas::HeavyQuarkResidualNorm(), init, quda::ColorSpinorParam::is_composite, quda::SolverParam::iter, quda::GMResDRArgs::k, K, quda::TimeProfile::Last(), quda::SolverParam::m, mat, quda::SolverParam::nev, quda::norm(), quda::norm2(), p_pre, quda::Solver::param, quda::SolverParam::precision, quda::SolverParam::precision_precondition, quda::SolverParam::precision_sloppy, printfQuda, quda::Solver::PrintStats(), quda::Solver::PrintSummary(), profile, QUDA_DOUBLE_PRECISION, QUDA_HEAVY_QUARK_RESIDUAL, quda::QUDA_PROFILE_COMPUTE, quda::QUDA_PROFILE_EPILOGUE, quda::QUDA_PROFILE_INIT, quda::QUDA_PROFILE_PREAMBLE, QUDA_ZERO_FIELD_CREATE, r_pre, r_sloppy, quda::GMResDRArgs::ResetArgs(), quda::SolverParam::residual_type, RestartVZH(), quda::SolverParam::rhs_idx, rp, quda::SolverParam::secs, quda::ColorSpinorParam::setPrecision(), quda::sqrt(), tmpp, quda::SolverParam::tol, quda::SolverParam::tol_hq, quda::SolverParam::true_res, UpdateSolution(), quda::GMResDRArgs::Vkp1, Vm, quda::blas::xmyNorm(), quda::blas::xpy(), yp, quda::blas::zero(), quda::zero(), and Zm.

Here is the call graph for this function:

◆ RestartVZH()

void quda::GMResDR::RestartVZH ( )

◆ RunDeflatedCycles()

void quda::GMResDR::RunDeflatedCycles ( ColorSpinorField out,
ColorSpinorField in,
const double  tol_threshold 
)

◆ UpdateSolution()

void quda::GMResDR::UpdateSolution ( ColorSpinorField x,
ColorSpinorField r,
bool  do_gels 
)

Member Data Documentation

◆ gmresdr_args

GMResDRArgs* quda::GMResDR::gmresdr_args
private

◆ init

bool quda::GMResDR::init
private

Definition at line 1302 of file invert_quda.h.

Referenced by operator()(), and ~GMResDR().

◆ K

Solver* quda::GMResDR::K
private

Definition at line 1285 of file invert_quda.h.

Referenced by FlexArnoldiProcedure(), GMResDR(), operator()(), and ~GMResDR().

◆ Kparam

SolverParam quda::GMResDR::Kparam
private

Definition at line 1286 of file invert_quda.h.

Referenced by GMResDR().

◆ mat

DiracMatrix& quda::GMResDR::mat
private

Definition at line 1281 of file invert_quda.h.

Referenced by operator()().

◆ matPrecon

DiracMatrix& quda::GMResDR::matPrecon
private

Definition at line 1283 of file invert_quda.h.

◆ matSloppy

DiracMatrix& quda::GMResDR::matSloppy
private

Definition at line 1282 of file invert_quda.h.

Referenced by FlexArnoldiProcedure().

◆ p_pre

ColorSpinorField* quda::GMResDR::p_pre
private

residual passed to preconditioner

Definition at line 1296 of file invert_quda.h.

Referenced by FlexArnoldiProcedure(), operator()(), and ~GMResDR().

◆ profile

TimeProfile& quda::GMResDR::profile
private

preconditioner result

Definition at line 1298 of file invert_quda.h.

Referenced by operator()(), and ~GMResDR().

◆ r_pre

ColorSpinorField* quda::GMResDR::r_pre
private

sloppy residual vector

Definition at line 1295 of file invert_quda.h.

Referenced by FlexArnoldiProcedure(), operator()(), and ~GMResDR().

◆ r_sloppy

ColorSpinorField* quda::GMResDR::r_sloppy
private

temporary for mat-vec

Definition at line 1294 of file invert_quda.h.

Referenced by FlexArnoldiProcedure(), operator()(), and ~GMResDR().

◆ rp

ColorSpinorField* quda::GMResDR::rp
private

Definition at line 1291 of file invert_quda.h.

Referenced by operator()(), and ~GMResDR().

◆ tmpp

ColorSpinorField* quda::GMResDR::tmpp
private

high precision accumulator

Definition at line 1293 of file invert_quda.h.

Referenced by FlexArnoldiProcedure(), operator()(), and ~GMResDR().

◆ Vm

ColorSpinorFieldSet* quda::GMResDR::Vm
private

◆ yp

ColorSpinorField* quda::GMResDR::yp
private

residual vector

Definition at line 1292 of file invert_quda.h.

Referenced by operator()(), and ~GMResDR().

◆ Zm

ColorSpinorFieldSet* quda::GMResDR::Zm
private

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