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

#include <invert_quda.h>

+ Inheritance diagram for quda::SolverParam:

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
 
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
 
QudaPrecision precision_eigensolver
 
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 n_ev
 
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 253 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 268 of file invert_quda.h.

◆ SolverParam() [3/3]

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

Definition at line 345 of file invert_quda.h.

◆ ~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

Update the QudaInvertParam with the data from this

Parameters
paramthe QudaInvertParam to be updated

Definition at line 428 of file invert_quda.h.

◆ updateRhsIndex()

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

Definition at line 455 of file invert_quda.h.

Member Data Documentation

◆ ca_basis

QudaCABasis quda::SolverParam::ca_basis

Basis for CA algorithms

Definition at line 205 of file invert_quda.h.

◆ ca_lambda_max

double quda::SolverParam::ca_lambda_max

Maximum eigenvalue for Chebyshev CA basis

Definition at line 211 of file invert_quda.h.

◆ ca_lambda_min

double quda::SolverParam::ca_lambda_min

Minimum eigenvalue for Chebyshev CA basis

Definition at line 208 of file invert_quda.h.

◆ compute_null_vector

QudaComputeNullVector quda::SolverParam::compute_null_vector

Reliable update tolerance

Definition at line 61 of file invert_quda.h.

◆ compute_true_res

bool quda::SolverParam::compute_true_res

Definition at line 118 of file invert_quda.h.

◆ deflate

bool quda::SolverParam::deflate

Used to define deflation

Definition at line 52 of file invert_quda.h.

◆ deflation_grid

int quda::SolverParam::deflation_grid

Definition at line 228 of file invert_quda.h.

◆ deflation_op

void* quda::SolverParam::deflation_op

Deflation operator

Definition at line 38 of file invert_quda.h.

◆ delta

double quda::SolverParam::delta

Whether to user alternative reliable updates (CG only at the moment)

Definition at line 64 of file invert_quda.h.

◆ eig_param

QudaEigParam quda::SolverParam::eig_param

Whether to use an initial guess in the solver or not

Definition at line 55 of file invert_quda.h.

◆ eigcg_max_restarts

int quda::SolverParam::eigcg_max_restarts

Definition at line 231 of file invert_quda.h.

◆ eigenval_tol

double quda::SolverParam::eigenval_tol

Definition at line 234 of file invert_quda.h.

◆ extlib_type

QudaExtLibType quda::SolverParam::extlib_type

Which external lib to use in the solver

Definition at line 248 of file invert_quda.h.

◆ gflops

double quda::SolverParam::gflops

Definition at line 220 of file invert_quda.h.

◆ global_reduction

bool quda::SolverParam::global_reduction

whether the solver acting as a preconditioner for another solver

Definition at line 240 of file invert_quda.h.

◆ heavy_quark_check

int quda::SolverParam::heavy_quark_check

Enable pipeline solver

Definition at line 103 of file invert_quda.h.

◆ inc_tol

double quda::SolverParam::inc_tol

Definition at line 233 of file invert_quda.h.

◆ inv_type

QudaInverterType quda::SolverParam::inv_type

Which linear solver to use

Definition at line 22 of file invert_quda.h.

◆ inv_type_precondition

QudaInverterType quda::SolverParam::inv_type_precondition

The inner Krylov solver used in the preconditioner. Set to QUDA_INVALID_INVERTER to disable the preconditioner entirely.

Definition at line 28 of file invert_quda.h.

◆ is_preconditioner

bool quda::SolverParam::is_preconditioner

verbosity to use for preconditioner

Definition at line 238 of file invert_quda.h.

◆ iter

int quda::SolverParam::iter

The precision used by the QUDA solver

Definition at line 133 of file invert_quda.h.

◆ 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 181 of file invert_quda.h.

◆ m

int quda::SolverParam::m

Definition at line 227 of file invert_quda.h.

◆ 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 95 of file invert_quda.h.

◆ 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 100 of file invert_quda.h.

◆ 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 85 of file invert_quda.h.

◆ 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 90 of file invert_quda.h.

◆ max_restart_num

int quda::SolverParam::max_restart_num

Definition at line 232 of file invert_quda.h.

◆ maxiter

int quda::SolverParam::maxiter

The number of iterations performed by the solver

Definition at line 130 of file invert_quda.h.

◆ maxiter_precondition

int quda::SolverParam::maxiter_precondition

Maximum number of iterations allowed in the inner solver

Definition at line 199 of file invert_quda.h.

◆ 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 245 of file invert_quda.h.

◆ n_ev

int quda::SolverParam::n_ev

Definition at line 226 of file invert_quda.h.

◆ Nkrylov

int quda::SolverParam::Nkrylov

Maximum size of Krylov space used by solver

Definition at line 190 of file invert_quda.h.

◆ Nsteps

int quda::SolverParam::Nsteps

Number of steps in s-step algorithms

Definition at line 187 of file invert_quda.h.

◆ num_offset

int quda::SolverParam::num_offset

< Number of offsets in the multi-shift solver

Definition at line 166 of file invert_quda.h.

◆ num_src

int quda::SolverParam::num_src

Definition at line 161 of file invert_quda.h.

◆ offset

double quda::SolverParam::offset[QUDA_MAX_MULTI_SHIFT]

Offsets for multi-shift solver

Definition at line 169 of file invert_quda.h.

◆ omega

double quda::SolverParam::omega

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

Definition at line 202 of file invert_quda.h.

◆ overlap_precondition

int quda::SolverParam::overlap_precondition

Number of sources in the multi-src solver

Definition at line 158 of file invert_quda.h.

◆ pipeline

int quda::SolverParam::pipeline

Solver tolerance in the L2 residual norm

Definition at line 106 of file invert_quda.h.

◆ precision

QudaPrecision quda::SolverParam::precision

The precision used by the QUDA sloppy operator

Definition at line 136 of file invert_quda.h.

◆ precision_eigensolver

QudaPrecision quda::SolverParam::precision_eigensolver

Preserve the source or not in the linear solver (deprecated?)

Definition at line 148 of file invert_quda.h.

◆ precision_precondition

QudaPrecision quda::SolverParam::precision_precondition

The precision used by the QUDA eigensolver

Definition at line 145 of file invert_quda.h.

◆ precision_refinement_sloppy

QudaPrecision quda::SolverParam::precision_refinement_sloppy

The precision used by the QUDA preconditioner

Definition at line 142 of file invert_quda.h.

◆ precision_ritz

QudaPrecision quda::SolverParam::precision_ritz

< The precision of the Ritz vectors

Definition at line 224 of file invert_quda.h.

◆ precision_sloppy

QudaPrecision quda::SolverParam::precision_sloppy

The precision used by the QUDA sloppy operator for multishift refinement

Definition at line 139 of file invert_quda.h.

◆ precondition_cycle

int quda::SolverParam::precondition_cycle

Number of preconditioner cycles to perform per iteration

Definition at line 193 of file invert_quda.h.

◆ preconditioner

void* quda::SolverParam::preconditioner

Preconditioner instance, e.g., multigrid

Definition at line 33 of file invert_quda.h.

◆ preserve_source

QudaPreserveSource quda::SolverParam::preserve_source

Whether the source vector should contain the residual vector when the solver returns

Definition at line 151 of file invert_quda.h.

◆ residual_type

QudaResidualType quda::SolverParam::residual_type

Whether to use the L2 relative residual, L2 absolute residual or Fermilab heavy-quark residual, or combinations therein to determine convergence. To require that multiple stopping conditions are satisfied, use a bitwise OR as follows:

p.residual_type = (QudaResidualType) (QUDA_L2_RELATIVE_RESIDUAL | QUDA_HEAVY_QUARK_RESIDUAL); Whether deflate the initial guess

Definition at line 49 of file invert_quda.h.

◆ return_residual

bool quda::SolverParam::return_residual

Domain overlap to use in the preconditioning

Definition at line 155 of file invert_quda.h.

◆ rhs_idx

int quda::SolverParam::rhs_idx

Definition at line 229 of file invert_quda.h.

◆ schwarz_type

QudaSchwarzType quda::SolverParam::schwarz_type

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

Definition at line 214 of file invert_quda.h.

◆ secs

double quda::SolverParam::secs

The Gflops rate of the solver

Definition at line 217 of file invert_quda.h.

◆ 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 121 of file invert_quda.h.

◆ 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 80 of file invert_quda.h.

◆ tol

double quda::SolverParam::tol

Solver tolerance in the L2 residual norm

Definition at line 109 of file invert_quda.h.

◆ tol_hq

double quda::SolverParam::tol_hq

Whether to compute the true residual post solve

Definition at line 115 of file invert_quda.h.

◆ 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 175 of file invert_quda.h.

◆ tol_offset

double quda::SolverParam::tol_offset[QUDA_MAX_MULTI_SHIFT]

Solver tolerance for each offset

Definition at line 172 of file invert_quda.h.

◆ tol_precondition

double quda::SolverParam::tol_precondition

Tolerance in the inner solver

Definition at line 196 of file invert_quda.h.

◆ tol_restart

double quda::SolverParam::tol_restart

Solver tolerance in the heavy quark residual norm

Definition at line 112 of file invert_quda.h.

◆ true_res

double quda::SolverParam::true_res

Actual heavy quark residual norm achieved in solver

Definition at line 124 of file invert_quda.h.

◆ true_res_hq

double quda::SolverParam::true_res_hq

Maximum number of iterations in the linear solver

Definition at line 127 of file invert_quda.h.

◆ 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 184 of file invert_quda.h.

◆ 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 178 of file invert_quda.h.

◆ use_alternative_reliable

bool quda::SolverParam::use_alternative_reliable

Whether to keep the partial solution accumulator in sloppy precision

Definition at line 67 of file invert_quda.h.

◆ use_init_guess

QudaUseInitGuess quda::SolverParam::use_init_guess

Whether to solve linear system with zero RHS

Definition at line 58 of file invert_quda.h.

◆ 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 70 of file invert_quda.h.

◆ verbosity_precondition

QudaVerbosity quda::SolverParam::verbosity_precondition

Definition at line 236 of file invert_quda.h.


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