QUDA
v1.1.0
A library for QCD on GPUs
|
#include <invert_quda.h>
Public Member Functions | |
SolverParam () | |
SolverParam (const QudaInvertParam ¶m) | |
SolverParam (const SolverParam ¶m) | |
~SolverParam () | |
void | updateInvertParam (QudaInvertParam ¶m, int offset=-1) |
void | updateRhsIndex (QudaInvertParam ¶m) |
SolverParam is the meta data used to define linear solvers.
Definition at line 17 of file invert_quda.h.
|
inline |
Default constructor
Definition at line 253 of file invert_quda.h.
|
inline |
Constructor that matches the initial values to that of the QudaInvertParam instance
param | The QudaInvertParam instance from which the values are copied |
Definition at line 268 of file invert_quda.h.
|
inline |
Definition at line 345 of file invert_quda.h.
|
inline |
Definition at line 422 of file invert_quda.h.
|
inline |
Update the QudaInvertParam with the data from this
param | the QudaInvertParam to be updated |
Definition at line 428 of file invert_quda.h.
|
inline |
Definition at line 455 of file invert_quda.h.
QudaCABasis quda::SolverParam::ca_basis |
Basis for CA algorithms
Definition at line 205 of file invert_quda.h.
double quda::SolverParam::ca_lambda_max |
Maximum eigenvalue for Chebyshev CA basis
Definition at line 211 of file invert_quda.h.
double quda::SolverParam::ca_lambda_min |
Minimum eigenvalue for Chebyshev CA basis
Definition at line 208 of file invert_quda.h.
QudaComputeNullVector quda::SolverParam::compute_null_vector |
Reliable update tolerance
Definition at line 61 of file invert_quda.h.
bool quda::SolverParam::compute_true_res |
Definition at line 118 of file invert_quda.h.
bool quda::SolverParam::deflate |
Used to define deflation
Definition at line 52 of file invert_quda.h.
int quda::SolverParam::deflation_grid |
Definition at line 228 of file invert_quda.h.
void* quda::SolverParam::deflation_op |
Deflation operator
Definition at line 38 of file invert_quda.h.
double quda::SolverParam::delta |
Whether to user alternative reliable updates (CG only at the moment)
Definition at line 64 of file invert_quda.h.
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.
int quda::SolverParam::eigcg_max_restarts |
Definition at line 231 of file invert_quda.h.
double quda::SolverParam::eigenval_tol |
Definition at line 234 of file invert_quda.h.
QudaExtLibType quda::SolverParam::extlib_type |
Which external lib to use in the solver
Definition at line 248 of file invert_quda.h.
double quda::SolverParam::gflops |
Definition at line 220 of file invert_quda.h.
bool quda::SolverParam::global_reduction |
whether the solver acting as a preconditioner for another solver
Definition at line 240 of file invert_quda.h.
int quda::SolverParam::heavy_quark_check |
Enable pipeline solver
Definition at line 103 of file invert_quda.h.
double quda::SolverParam::inc_tol |
Definition at line 233 of file invert_quda.h.
QudaInverterType quda::SolverParam::inv_type |
Which linear solver to use
Definition at line 22 of file invert_quda.h.
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.
bool quda::SolverParam::is_preconditioner |
verbosity to use for preconditioner
Definition at line 238 of file invert_quda.h.
int quda::SolverParam::iter |
The precision used by the QUDA solver
Definition at line 133 of file invert_quda.h.
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.
int quda::SolverParam::m |
Definition at line 227 of file invert_quda.h.
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.
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.
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.
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.
int quda::SolverParam::max_restart_num |
Definition at line 232 of file invert_quda.h.
int quda::SolverParam::maxiter |
The number of iterations performed by the solver
Definition at line 130 of file invert_quda.h.
int quda::SolverParam::maxiter_precondition |
Maximum number of iterations allowed in the inner solver
Definition at line 199 of file invert_quda.h.
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.
int quda::SolverParam::n_ev |
Definition at line 226 of file invert_quda.h.
int quda::SolverParam::Nkrylov |
Maximum size of Krylov space used by solver
Definition at line 190 of file invert_quda.h.
int quda::SolverParam::Nsteps |
Number of steps in s-step algorithms
Definition at line 187 of file invert_quda.h.
int quda::SolverParam::num_offset |
< Number of offsets in the multi-shift solver
Definition at line 166 of file invert_quda.h.
int quda::SolverParam::num_src |
Definition at line 161 of file invert_quda.h.
double quda::SolverParam::offset[QUDA_MAX_MULTI_SHIFT] |
Offsets for multi-shift solver
Definition at line 169 of file invert_quda.h.
double quda::SolverParam::omega |
Relaxation parameter used in GCR-DD (default = 1.0)
Definition at line 202 of file invert_quda.h.
int quda::SolverParam::overlap_precondition |
Number of sources in the multi-src solver
Definition at line 158 of file invert_quda.h.
int quda::SolverParam::pipeline |
Solver tolerance in the L2 residual norm
Definition at line 106 of file invert_quda.h.
QudaPrecision quda::SolverParam::precision |
The precision used by the QUDA sloppy operator
Definition at line 136 of file invert_quda.h.
QudaPrecision quda::SolverParam::precision_eigensolver |
Preserve the source or not in the linear solver (deprecated?)
Definition at line 148 of file invert_quda.h.
QudaPrecision quda::SolverParam::precision_precondition |
The precision used by the QUDA eigensolver
Definition at line 145 of file invert_quda.h.
QudaPrecision quda::SolverParam::precision_refinement_sloppy |
The precision used by the QUDA preconditioner
Definition at line 142 of file invert_quda.h.
QudaPrecision quda::SolverParam::precision_ritz |
< The precision of the Ritz vectors
Definition at line 224 of file invert_quda.h.
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.
int quda::SolverParam::precondition_cycle |
Number of preconditioner cycles to perform per iteration
Definition at line 193 of file invert_quda.h.
void* quda::SolverParam::preconditioner |
Preconditioner instance, e.g., multigrid
Definition at line 33 of file invert_quda.h.
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.
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.
bool quda::SolverParam::return_residual |
Domain overlap to use in the preconditioning
Definition at line 155 of file invert_quda.h.
int quda::SolverParam::rhs_idx |
Definition at line 229 of file invert_quda.h.
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.
double quda::SolverParam::secs |
The Gflops rate of the solver
Definition at line 217 of file invert_quda.h.
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.
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.
double quda::SolverParam::tol |
Solver tolerance in the L2 residual norm
Definition at line 109 of file invert_quda.h.
double quda::SolverParam::tol_hq |
Whether to compute the true residual post solve
Definition at line 115 of file invert_quda.h.
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.
double quda::SolverParam::tol_offset[QUDA_MAX_MULTI_SHIFT] |
Solver tolerance for each offset
Definition at line 172 of file invert_quda.h.
double quda::SolverParam::tol_precondition |
Tolerance in the inner solver
Definition at line 196 of file invert_quda.h.
double quda::SolverParam::tol_restart |
Solver tolerance in the heavy quark residual norm
Definition at line 112 of file invert_quda.h.
double quda::SolverParam::true_res |
Actual heavy quark residual norm achieved in solver
Definition at line 124 of file invert_quda.h.
double quda::SolverParam::true_res_hq |
Maximum number of iterations in the linear solver
Definition at line 127 of file invert_quda.h.
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.
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.
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.
QudaUseInitGuess quda::SolverParam::use_init_guess |
Whether to solve linear system with zero RHS
Definition at line 58 of file invert_quda.h.
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.
QudaVerbosity quda::SolverParam::verbosity_precondition |
Definition at line 236 of file invert_quda.h.