QUDA  0.9.0
Public Member Functions | Private Attributes | List of all members
quda::GCR Class Reference

#include <invert_quda.h>

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

Public Member Functions

 GCR (DiracMatrix &mat, DiracMatrix &matSloppy, DiracMatrix &matPrecon, SolverParam &param, TimeProfile &profile)
 
 GCR (DiracMatrix &mat, Solver &K, DiracMatrix &matSloppy, DiracMatrix &matPrecon, SolverParam &param, TimeProfile &profile)
 
virtual ~GCR ()
 
void operator() (ColorSpinorField &out, ColorSpinorField &in)
 
- Public Member Functions inherited from quda::Solver
 Solver (SolverParam &param, TimeProfile &profile)
 
virtual ~Solver ()
 
virtual void solve (ColorSpinorField &out, ColorSpinorField &in)
 
bool convergence (const double &r2, const double &hq2, const double &r2_tol, const double &hq_tol)
 
bool convergenceHQ (const double &r2, const double &hq2, const double &r2_tol, const double &hq_tol)
 
bool convergenceL2 (const double &r2, const double &hq2, const double &r2_tol, const double &hq_tol)
 
void PrintStats (const char *, int k, const double &r2, const double &b2, const double &hq2)
 
void PrintSummary (const char *name, int k, const double &r2, const double &b2)
 
virtual double flops () const
 

Private Attributes

const DiracMatrixmat
 
const DiracMatrixmatSloppy
 
const DiracMatrixmatPrecon
 
SolverK
 
SolverParam Kparam
 
int nKrylov
 
Complexalpha
 
Complex ** beta
 
doublegamma
 
bool init
 
ColorSpinorFieldrp
 
ColorSpinorFieldyp
 residual vector More...
 
ColorSpinorFieldtmpp
 high precision accumulator More...
 
ColorSpinorFieldx_sloppy
 temporary for mat-vec More...
 
ColorSpinorFieldr_sloppy
 sloppy solution vector More...
 
ColorSpinorFieldr_pre
 sloppy residual vector More...
 
ColorSpinorFieldp_pre
 residual passed to preconditioner More...
 
ColorSpinorFieldrM
 preconditioner result More...
 
std::vector< ColorSpinorField * > p
 residual vector for doing multi-cycle preconditioning More...
 
std::vector< ColorSpinorField * > Ap
 

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 (const double &tol, const double &b2, QudaResidualType residual_type)
 
- Protected Attributes inherited from quda::Solver
SolverParamparam
 
TimeProfileprofile
 

Detailed Description

Definition at line 595 of file invert_quda.h.

Constructor & Destructor Documentation

◆ GCR() [1/2]

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

◆ GCR() [2/2]

quda::GCR::GCR ( DiracMatrix mat,
Solver K,
DiracMatrix matSloppy,
DiracMatrix matPrecon,
SolverParam param,
TimeProfile profile 
)
Parameters
KPreconditioner

Definition at line 190 of file inv_gcr_quda.cpp.

References alpha, Ap, beta, gamma, fused_exterior_ndeg_tm_dslash_cuda_gen::i, nKrylov, and p.

◆ ~GCR()

quda::GCR::~GCR ( )
virtual

Member Function Documentation

◆ operator()()

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

Implements quda::Solver.

Definition at line 237 of file inv_gcr_quda.cpp.

References alpha, Ap, quda::blas::axpy(), b, beta, quda::blas::cabxpyAxNorm(), quda::blas::cDotProductNormA(), commCoords(), quda::SolverParam::compute_null_vector, quda::SolverParam::compute_true_res, quda::Solver::convergence(), quda::blas::copy(), quda::ColorSpinorField::Create(), csParam, quda::SolverParam::delta, e, errorQuda, quda::blas::flops, quda::Solver::flops(), quda::DiracMatrix::flops(), gamma, getVerbosity(), quda::SolverParam::gflops, quda::blas::HeavyQuarkResidualNorm(), fused_exterior_ndeg_tm_dslash_cuda_gen::i, init, quda::SolverParam::inv_type_precondition, quda::SolverParam::iter, K, quda::TimeProfile::Last(), mat, matPrecon, matSloppy, quda::SolverParam::max_res_increase, quda::SolverParam::max_res_increase_total, quda::SolverParam::maxiter, nKrylov, quda::blas::norm2(), quda::orthoDir(), p, p_pre, quda::Solver::param, parity, pipeline, quda::SolverParam::pipeline, popVerbosity(), quda::SolverParam::precision, quda::SolverParam::precision_precondition, quda::SolverParam::precision_sloppy, quda::SolverParam::precondition_cycle, printfQuda, quda::Solver::PrintStats(), quda::Solver::PrintSummary(), quda::Solver::profile, pushVerbosity(), QUDA_ADDITIVE_SCHWARZ, QUDA_COMPUTE_NULL_VECTOR_NO, QUDA_CPU_FIELD_LOCATION, QUDA_DEBUG_VERBOSE, QUDA_HEAVY_QUARK_RESIDUAL, QUDA_INVALID_INVERTER, QUDA_NULL_FIELD_CREATE, quda::QUDA_PROFILE_COMPUTE, quda::QUDA_PROFILE_EPILOGUE, quda::QUDA_PROFILE_FREE, quda::QUDA_PROFILE_INIT, quda::QUDA_PROFILE_PREAMBLE, QUDA_SUMMARIZE, QUDA_USE_INIT_GUESS_YES, QUDA_VERBOSE, r_pre, r_sloppy, quda::SolverParam::residual_type, rM, rp, quda::SolverParam::schwarz_type, quda::SolverParam::secs, quda::sqrt(), quda::Solver::stopping(), tmp, tmpp, quda::SolverParam::tol, quda::SolverParam::tol_hq, quda::SolverParam::true_res, quda::SolverParam::true_res_hq, quda::updateSolution(), quda::SolverParam::use_init_guess, quda::SolverParam::verbosity_precondition, warningQuda, x, x_sloppy, quda::blas::xmyNorm(), quda::blas::xpy(), y, yp, z, and quda::blas::zero().

Here is the call graph for this function:

Member Data Documentation

◆ alpha

Complex* quda::GCR::alpha
private

Definition at line 610 of file invert_quda.h.

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

◆ Ap

std::vector<ColorSpinorField*> quda::GCR::Ap
private

Definition at line 629 of file invert_quda.h.

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

◆ beta

Complex** quda::GCR::beta
private

Definition at line 611 of file invert_quda.h.

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

◆ gamma

double* quda::GCR::gamma
private

Definition at line 612 of file invert_quda.h.

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

◆ init

bool quda::GCR::init
private

Solver uses lazy allocation: this flag to determine whether we have allocated.

Definition at line 617 of file invert_quda.h.

Referenced by operator()().

◆ K

Solver* quda::GCR::K
private

Definition at line 602 of file invert_quda.h.

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

◆ Kparam

SolverParam quda::GCR::Kparam
private

Definition at line 603 of file invert_quda.h.

Referenced by GCR().

◆ mat

const DiracMatrix& quda::GCR::mat
private

Definition at line 598 of file invert_quda.h.

Referenced by operator()().

◆ matPrecon

const DiracMatrix& quda::GCR::matPrecon
private

Definition at line 600 of file invert_quda.h.

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

◆ matSloppy

const DiracMatrix& quda::GCR::matSloppy
private

Definition at line 599 of file invert_quda.h.

Referenced by operator()().

◆ nKrylov

int quda::GCR::nKrylov
private

The size of the Krylov space that GCR uses

Definition at line 608 of file invert_quda.h.

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

◆ p

std::vector<ColorSpinorField*> quda::GCR::p
private

residual vector for doing multi-cycle preconditioning

Definition at line 628 of file invert_quda.h.

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

◆ p_pre

ColorSpinorField* quda::GCR::p_pre
private

residual passed to preconditioner

Definition at line 625 of file invert_quda.h.

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

◆ r_pre

ColorSpinorField* quda::GCR::r_pre
private

sloppy residual vector

Definition at line 624 of file invert_quda.h.

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

◆ r_sloppy

ColorSpinorField* quda::GCR::r_sloppy
private

sloppy solution vector

Definition at line 623 of file invert_quda.h.

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

◆ rM

ColorSpinorField* quda::GCR::rM
private

preconditioner result

Definition at line 626 of file invert_quda.h.

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

◆ rp

ColorSpinorField* quda::GCR::rp
private

Definition at line 619 of file invert_quda.h.

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

◆ tmpp

ColorSpinorField* quda::GCR::tmpp
private

high precision accumulator

Definition at line 621 of file invert_quda.h.

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

◆ x_sloppy

ColorSpinorField* quda::GCR::x_sloppy
private

temporary for mat-vec

Definition at line 622 of file invert_quda.h.

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

◆ yp

ColorSpinorField* quda::GCR::yp
private

residual vector

Definition at line 620 of file invert_quda.h.

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


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