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

#include <invert_quda.h>

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

Public Member Functions

 SolverParam ()
 
 SolverParam (const QudaInvertParam &param)
 
 SolverParam (const SolverParam &param)
 
 ~SolverParam ()
 
void updateInvertParam (QudaInvertParam &param, int offset=-1)
 
void updateRhsIndex (QudaInvertParam &param)
 

Public Attributes

QudaInverterType inv_type
 
QudaInverterType inv_type_precondition
 
void * preconditioner
 
void * deflation_op
 
QudaResidualType residual_type
 
bool deflate
 
QudaEigParam eig_param
 
std::vector< ColorSpinorField * > evecs
 
std::vector< Complexevals
 
QudaUseInitGuess use_init_guess
 
QudaComputeNullVector compute_null_vector
 
double delta
 
bool use_alternative_reliable
 
bool use_sloppy_partial_accumulator
 
int solution_accumulator_pipeline
 
int max_res_increase
 
int max_res_increase_total
 
int max_hq_res_increase
 
int max_hq_res_restart_total
 
int heavy_quark_check
 
int pipeline
 
double tol
 
double tol_restart
 
double tol_hq
 
bool compute_true_res
 
bool sloppy_converge
 
double true_res
 
double true_res_hq
 
int maxiter
 
int iter
 
QudaPrecision precision
 
QudaPrecision precision_sloppy
 
QudaPrecision precision_refinement_sloppy
 
QudaPrecision precision_precondition
 
QudaPreserveSource preserve_source
 
bool return_residual
 
int overlap_precondition
 
int num_src
 
int num_offset
 
double offset [QUDA_MAX_MULTI_SHIFT]
 
double tol_offset [QUDA_MAX_MULTI_SHIFT]
 
double tol_hq_offset [QUDA_MAX_MULTI_SHIFT]
 
double true_res_offset [QUDA_MAX_MULTI_SHIFT]
 
double iter_res_offset [QUDA_MAX_MULTI_SHIFT]
 
double true_res_hq_offset [QUDA_MAX_MULTI_SHIFT]
 
int Nsteps
 
int Nkrylov
 
int precondition_cycle
 
double tol_precondition
 
int maxiter_precondition
 
double omega
 
QudaCABasis ca_basis
 
double ca_lambda_min
 
double ca_lambda_max
 
QudaSchwarzType schwarz_type
 
double secs
 
double gflops
 
QudaPrecision precision_ritz
 
int nev
 
int m
 
int deflation_grid
 
int rhs_idx
 
int eigcg_max_restarts
 
int max_restart_num
 
double inc_tol
 
double eigenval_tol
 
QudaVerbosity verbosity_precondition
 
bool is_preconditioner
 verbosity to use for preconditioner More...
 
bool global_reduction
 whether the solver acting as a preconditioner for another solver More...
 
bool mg_instance
 whether to use a global or local (node) reduction for this solver More...
 
QudaExtLibType extlib_type
 

Detailed Description

SolverParam is the meta data used to define linear solvers.

Definition at line 17 of file invert_quda.h.

Constructor & Destructor Documentation

◆ SolverParam() [1/3]

quda::SolverParam::SolverParam ( )
inline

Default constructor

Definition at line 256 of file invert_quda.h.

◆ SolverParam() [2/3]

quda::SolverParam::SolverParam ( const QudaInvertParam param)
inline

Constructor that matches the initial values to that of the QudaInvertParam instance

Parameters
paramThe QudaInvertParam instance from which the values are copied

Definition at line 271 of file invert_quda.h.

References QudaInvertParam_s::inv_type, num_offset, QudaInvertParam_s::offset, QUDA_GMRESDR_PROJ_INVERTER, QUDA_INC_EIGCG_INVERTER, QudaInvertParam_s::rhs_idx, QudaInvertParam_s::tol_hq_offset, and QudaInvertParam_s::tol_offset.

◆ SolverParam() [3/3]

quda::SolverParam::SolverParam ( const SolverParam param)
inline

◆ ~SolverParam()

quda::SolverParam::~SolverParam ( )
inline

Definition at line 422 of file invert_quda.h.

Member Function Documentation

◆ updateInvertParam()

void quda::SolverParam::updateInvertParam ( QudaInvertParam param,
int  offset = -1 
)
inline

◆ updateRhsIndex()

void quda::SolverParam::updateRhsIndex ( QudaInvertParam param)
inline

Definition at line 453 of file invert_quda.h.

References QudaInvertParam_s::rhs_idx.

Member Data Documentation

◆ ca_basis

QudaCABasis quda::SolverParam::ca_basis

Basis for CA algorithms

Definition at line 208 of file invert_quda.h.

Referenced by quda::MG::createCoarseSolver(), and quda::MG::generateNullVectors().

◆ ca_lambda_max

double quda::SolverParam::ca_lambda_max

Maximum eigenvalue for Chebyshev CA basis

Definition at line 214 of file invert_quda.h.

Referenced by quda::MG::createCoarseSolver(), quda::MG::generateNullVectors(), quda::CACG::operator()(), and updateInvertParam().

◆ ca_lambda_min

double quda::SolverParam::ca_lambda_min

Minimum eigenvalue for Chebyshev CA basis

Definition at line 211 of file invert_quda.h.

Referenced by quda::MG::createCoarseSolver(), quda::MG::generateNullVectors(), quda::CACG::operator()(), and updateInvertParam().

◆ compute_null_vector

QudaComputeNullVector quda::SolverParam::compute_null_vector

◆ compute_true_res

bool quda::SolverParam::compute_true_res

◆ deflate

bool quda::SolverParam::deflate

◆ deflation_grid

int quda::SolverParam::deflation_grid

◆ deflation_op

void* quda::SolverParam::deflation_op

Deflation operator

Definition at line 38 of file invert_quda.h.

Referenced by quda::IncEigCG::initCGsolve(), and quda::IncEigCG::operator()().

◆ delta

double quda::SolverParam::delta

◆ eig_param

QudaEigParam quda::SolverParam::eig_param

Deflation eigenvectors

Definition at line 55 of file invert_quda.h.

Referenced by quda::Solver::constructDeflationSpace(), and quda::MG::createCoarseSolver().

◆ eigcg_max_restarts

int quda::SolverParam::eigcg_max_restarts

Definition at line 234 of file invert_quda.h.

Referenced by quda::IncEigCG::operator()().

◆ eigenval_tol

double quda::SolverParam::eigenval_tol

Definition at line 237 of file invert_quda.h.

Referenced by quda::IncEigCG::operator()().

◆ evals

std::vector<Complex> quda::SolverParam::evals

Whether to use an initial guess in the solver or not

Definition at line 61 of file invert_quda.h.

Referenced by quda::Solver::constructDeflationSpace(), quda::CG::operator()(), quda::GCR::operator()(), quda::CACG::operator()(), and quda::CAGCR::operator()().

◆ evecs

std::vector<ColorSpinorField *> quda::SolverParam::evecs

◆ extlib_type

QudaExtLibType quda::SolverParam::extlib_type

Which external lib to use in the solver

Definition at line 251 of file invert_quda.h.

Referenced by quda::IncEigCG::RestartVT(), quda::GMResDR::RestartVZH(), and quda::GMResDR::UpdateSolution().

◆ gflops

double quda::SolverParam::gflops

◆ global_reduction

bool quda::SolverParam::global_reduction

whether the solver acting as a preconditioner for another solver

Definition at line 243 of file invert_quda.h.

Referenced by quda::MG::createCoarseSolver(), quda::MG::createSmoother(), quda::fillFGMResDRInnerSolveParam(), quda::fillInnerSolveParam(), quda::MR::operator()(), and quda::SD::operator()().

◆ heavy_quark_check

int quda::SolverParam::heavy_quark_check

◆ inc_tol

double quda::SolverParam::inc_tol

Definition at line 236 of file invert_quda.h.

Referenced by quda::IncEigCG::initCGsolve(), and quda::IncEigCG::operator()().

◆ inv_type

QudaInverterType quda::SolverParam::inv_type

◆ inv_type_precondition

QudaInverterType quda::SolverParam::inv_type_precondition

◆ is_preconditioner

bool quda::SolverParam::is_preconditioner

◆ iter

int quda::SolverParam::iter

◆ iter_res_offset

double quda::SolverParam::iter_res_offset[QUDA_MAX_MULTI_SHIFT]

Iterated L2 residual norm achieved in multi shift solver for each offset

Definition at line 184 of file invert_quda.h.

Referenced by quda::MultiShiftCG::operator()().

◆ m

int quda::SolverParam::m

◆ max_hq_res_increase

int quda::SolverParam::max_hq_res_increase

This parameter determines how many total heavy-quark residual restarts we tolerate before terminating the solver, i.e., how long do we want to keep trying to converge

Definition at line 101 of file invert_quda.h.

Referenced by quda::CG::operator()().

◆ max_hq_res_restart_total

int quda::SolverParam::max_hq_res_restart_total

After how many iterations shall the heavy quark residual be updated

Definition at line 106 of file invert_quda.h.

Referenced by quda::CG::operator()().

◆ max_res_increase

int quda::SolverParam::max_res_increase

This parameter determines how many total reliable update residual increases we tolerate before terminating the solver, i.e., how long do we want to keep trying to converge

Definition at line 91 of file invert_quda.h.

Referenced by quda::CG::blocksolve(), quda::CG::operator()(), quda::CG3::operator()(), quda::CG3NE::operator()(), quda::PreconCG::operator()(), quda::GCR::operator()(), quda::CACG::operator()(), quda::CAGCR::operator()(), and quda::MultiShiftCG::operator()().

◆ max_res_increase_total

int quda::SolverParam::max_res_increase_total

This parameter determines how many consecutive heavy-quark residual increases we tolerate before terminating the solver, i.e., how long do we want to keep trying to converge

Definition at line 96 of file invert_quda.h.

Referenced by quda::CG::blocksolve(), quda::CG::operator()(), quda::CG3::operator()(), quda::CG3NE::operator()(), quda::PreconCG::operator()(), quda::GCR::operator()(), quda::CACG::operator()(), quda::CAGCR::operator()(), and quda::MultiShiftCG::operator()().

◆ max_restart_num

int quda::SolverParam::max_restart_num

Definition at line 235 of file invert_quda.h.

Referenced by quda::IncEigCG::initCGsolve().

◆ maxiter

int quda::SolverParam::maxiter

◆ maxiter_precondition

int quda::SolverParam::maxiter_precondition

Maximum number of iterations allowed in the inner solver

Definition at line 202 of file invert_quda.h.

Referenced by quda::fillEigCGInnerSolverParam(), quda::fillFGMResDRInnerSolveParam(), quda::fillInnerSolveParam(), quda::fillInnerSolverParam(), and quda::MG::generateNullVectors().

◆ mg_instance

bool quda::SolverParam::mg_instance

whether to use a global or local (node) reduction for this solver

Whether the MG preconditioner (if any) is an instance of MG (used internally in MG) or of multigrid_solver (used in the interface)

Definition at line 248 of file invert_quda.h.

Referenced by quda::Solver::create(), and quda::MG::createCoarseSolver().

◆ nev

int quda::SolverParam::nev

◆ Nkrylov

int quda::SolverParam::Nkrylov

◆ Nsteps

int quda::SolverParam::Nsteps

◆ num_offset

int quda::SolverParam::num_offset

< Number of offsets in the multi-shift solver

Definition at line 169 of file invert_quda.h.

Referenced by quda::MultiShiftCG::operator()(), SolverParam(), and updateInvertParam().

◆ num_src

int quda::SolverParam::num_src

Definition at line 164 of file invert_quda.h.

Referenced by quda::Solver::blocksolve(), and quda::CG::blocksolve().

◆ offset

double quda::SolverParam::offset[QUDA_MAX_MULTI_SHIFT]

Offsets for multi-shift solver

Definition at line 172 of file invert_quda.h.

Referenced by quda::MultiShiftCG::operator()(), SolverParam(), and updateInvertParam().

◆ omega

double quda::SolverParam::omega

Relaxation parameter used in GCR-DD (default = 1.0)

Definition at line 205 of file invert_quda.h.

Referenced by quda::MG::generateNullVectors(), quda::MGParam::MGParam(), and quda::MR::operator()().

◆ overlap_precondition

int quda::SolverParam::overlap_precondition

Number of sources in the multi-src solver

Definition at line 161 of file invert_quda.h.

Referenced by quda::XSD::XSD().

◆ pipeline

int quda::SolverParam::pipeline

◆ precision

QudaPrecision quda::SolverParam::precision

◆ precision_precondition

QudaPrecision quda::SolverParam::precision_precondition

◆ precision_refinement_sloppy

QudaPrecision quda::SolverParam::precision_refinement_sloppy

The precision used by the QUDA preconditioner

Definition at line 148 of file invert_quda.h.

Referenced by quda::MultiShiftCG::operator()().

◆ precision_ritz

QudaPrecision quda::SolverParam::precision_ritz

< The precision of the Ritz vectors

Definition at line 227 of file invert_quda.h.

Referenced by quda::IncEigCG::eigCGsolve(), and quda::IncEigCG::initCGsolve().

◆ precision_sloppy

QudaPrecision quda::SolverParam::precision_sloppy

◆ precondition_cycle

int quda::SolverParam::precondition_cycle

Number of preconditioner cycles to perform per iteration

Definition at line 196 of file invert_quda.h.

Referenced by quda::fillInnerSolveParam(), and quda::MG::generateNullVectors().

◆ preconditioner

void* quda::SolverParam::preconditioner

Preconditioner instance, e.g., multigrid

Definition at line 33 of file invert_quda.h.

Referenced by quda::Solver::create(), quda::MG::createCoarseSolver(), and quda::MG::generateNullVectors().

◆ preserve_source

QudaPreserveSource quda::SolverParam::preserve_source

◆ residual_type

QudaResidualType quda::SolverParam::residual_type

◆ return_residual

bool quda::SolverParam::return_residual

Domain overlap to use in the preconditioning

Definition at line 158 of file invert_quda.h.

Referenced by quda::MG::createCoarseSolver(), quda::MG::createSmoother(), quda::CACG::operator()(), and quda::CAGCR::operator()().

◆ rhs_idx

int quda::SolverParam::rhs_idx

◆ schwarz_type

QudaSchwarzType quda::SolverParam::schwarz_type

Whether to use additive or multiplicative Schwarz preconditioning The time taken by the solver

Definition at line 217 of file invert_quda.h.

Referenced by quda::MG::createSmoother(), quda::fillInnerSolveParam(), quda::MG::generateNullVectors(), quda::MR::MR(), and quda::MR::operator()().

◆ secs

double quda::SolverParam::secs

◆ sloppy_converge

bool quda::SolverParam::sloppy_converge

Whether to declare convergence without checking the true residual Actual L2 residual norm achieved in solver

Definition at line 127 of file invert_quda.h.

Referenced by quda::MG::createCoarseSolver(), quda::MG::createSmoother(), quda::fillInnerSolveParam(), quda::GCR::operator()(), quda::CACG::operator()(), and quda::CAGCR::operator()().

◆ solution_accumulator_pipeline

int quda::SolverParam::solution_accumulator_pipeline

This parameter determines how many consecutive reliable update residual increases we tolerate before terminating the solver, i.e., how long do we want to keep trying to converge

Definition at line 86 of file invert_quda.h.

Referenced by quda::CG::operator()().

◆ tol

double quda::SolverParam::tol

◆ tol_hq

double quda::SolverParam::tol_hq

◆ tol_hq_offset

double quda::SolverParam::tol_hq_offset[QUDA_MAX_MULTI_SHIFT]

Solver tolerance for each shift when refinement is applied using the heavy-quark residual

Definition at line 178 of file invert_quda.h.

Referenced by SolverParam().

◆ tol_offset

double quda::SolverParam::tol_offset[QUDA_MAX_MULTI_SHIFT]

Solver tolerance for each offset

Definition at line 175 of file invert_quda.h.

Referenced by quda::MultiShiftCG::operator()(), and SolverParam().

◆ tol_precondition

double quda::SolverParam::tol_precondition

◆ tol_restart

double quda::SolverParam::tol_restart

Solver tolerance in the heavy quark residual norm

Definition at line 118 of file invert_quda.h.

Referenced by quda::fillInitCGSolverParam(), and quda::IncEigCG::initCGsolve().

◆ true_res

double quda::SolverParam::true_res

◆ true_res_hq

double quda::SolverParam::true_res_hq

◆ true_res_hq_offset

double quda::SolverParam::true_res_hq_offset[QUDA_MAX_MULTI_SHIFT]

Actual heavy quark residual norm achieved in solver for each offset

Definition at line 187 of file invert_quda.h.

Referenced by quda::Solver::blocksolve(), quda::CG::blocksolve(), invertMultiShiftQuda(), and quda::MultiShiftCG::operator()().

◆ true_res_offset

double quda::SolverParam::true_res_offset[QUDA_MAX_MULTI_SHIFT]

Actual L2 residual norm achieved in solver for each offset

Definition at line 181 of file invert_quda.h.

Referenced by quda::Solver::blocksolve(), quda::CG::blocksolve(), invertMultiShiftQuda(), and quda::MultiShiftCG::operator()().

◆ use_alternative_reliable

bool quda::SolverParam::use_alternative_reliable

Whether to keep the partial solution accumulator in sloppy precision

Definition at line 73 of file invert_quda.h.

Referenced by quda::CG::operator()().

◆ use_init_guess

QudaUseInitGuess quda::SolverParam::use_init_guess

◆ use_sloppy_partial_accumulator

bool quda::SolverParam::use_sloppy_partial_accumulator

This parameter determines how often we accumulate into the solution vector from the direction vectors in the solver. E.g., running with solution_accumulator_pipeline = 4, means we will update the solution vector every four iterations using the direction vectors from the prior four iterations. This increases performance of mixed-precision solvers since it means less high-precision vector round-trip memory travel, but requires more low-precision memory allocation.

Definition at line 76 of file invert_quda.h.

Referenced by quda::CG::blocksolve(), quda::fillEigCGInnerSolverParam(), quda::fillInitCGSolverParam(), quda::CG::operator()(), quda::PreconCG::operator()(), quda::BiCGstab::operator()(), quda::BiCGstabL::operator()(), quda::GCR::operator()(), quda::MultiShiftCG::operator()(), and quda::GCR::~GCR().

◆ verbosity_precondition

QudaVerbosity quda::SolverParam::verbosity_precondition

The documentation for this struct was generated from the following file: