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::MGParam Struct Reference

#include <multigrid.h>

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

Public Member Functions

 MGParam (QudaMultigridParam &param, std::vector< ColorSpinorField *> &B, DiracMatrix *matResidual, DiracMatrix *matSmooth, DiracMatrix *matSmoothSloppy, int level=0)
 
 MGParam (const MGParam &param, std::vector< ColorSpinorField *> &B, std::vector< Complex > evals, DiracMatrix *matResidual, DiracMatrix *matSmooth, DiracMatrix *matSmoothSloppy, int level=0)
 
- Public Member Functions inherited from quda::SolverParam
 SolverParam ()
 
 SolverParam (const QudaInvertParam &param)
 
 SolverParam (const SolverParam &param)
 
 ~SolverParam ()
 
void updateInvertParam (QudaInvertParam &param, int offset=-1)
 
void updateRhsIndex (QudaInvertParam &param)
 

Public Attributes

QudaMultigridParammg_global
 
int level
 
int Nlevel
 
int geoBlockSize [QUDA_MAX_DIM]
 
int spinBlockSize
 
int Nvec
 
int NblockOrtho
 
MGcoarse
 
MGfine
 
std::vector< ColorSpinorField * > & B
 
std::vector< Complexevals
 
int nu_pre
 
int nu_post
 
double smoother_tol
 
QudaMultigridCycleType cycle_type
 
QudaBoolean global_reduction
 
DiracMatrixmatResidual
 
DiracMatrixmatSmooth
 
DiracMatrixmatSmoothSloppy
 
QudaInverterType smoother
 
QudaSolutionType coarse_grid_solution_type
 
QudaSolveType smoother_solve_type
 
QudaFieldLocation location
 
QudaFieldLocation setup_location
 
char filename [100]
 
- Public Attributes inherited from quda::SolverParam
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

This struct contains all the metadata required to define the multigrid solver. For each level of multigrid we will have an instance of MGParam describing all the meta data appropriate for given level.

Definition at line 26 of file multigrid.h.

Constructor & Destructor Documentation

◆ MGParam() [1/2]

quda::MGParam::MGParam ( QudaMultigridParam param,
std::vector< ColorSpinorField *> &  B,
DiracMatrix matResidual,
DiracMatrix matSmooth,
DiracMatrix matSmoothSloppy,
int  level = 0 
)
inline

This is top level instantiation done when we start creating the multigrid operator.

Definition at line 108 of file multigrid.h.

References QudaMultigridParam_s::geo_block_size, quda::SolverParam::omega, QudaMultigridParam_s::omega, and QUDA_MAX_DIM.

◆ MGParam() [2/2]

quda::MGParam::MGParam ( const MGParam param,
std::vector< ColorSpinorField *> &  B,
std::vector< Complex evals,
DiracMatrix matResidual,
DiracMatrix matSmooth,
DiracMatrix matSmoothSloppy,
int  level = 0 
)
inline

Member Data Documentation

◆ B

std::vector<ColorSpinorField*>& quda::MGParam::B

◆ coarse

MG* quda::MGParam::coarse

This is the next lower level

Definition at line 51 of file multigrid.h.

◆ coarse_grid_solution_type

QudaSolutionType quda::MGParam::coarse_grid_solution_type

The type of residual to send to the next coarse grid, and thus the type of solution to receive back from this coarse grid

Definition at line 91 of file multigrid.h.

Referenced by quda::MG::createCoarseDirac(), quda::MG::MG(), quda::MG::operator()(), and quda::MG::verify().

◆ cycle_type

QudaMultigridCycleType quda::MGParam::cycle_type

Multigrid cycle type

Definition at line 72 of file multigrid.h.

Referenced by quda::MG::createCoarseSolver(), quda::MG::destroyCoarseSolver(), and quda::MG::~MG().

◆ evals

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

The eigenvalue array

Definition at line 60 of file multigrid.h.

Referenced by quda::MG::MG(), and quda::MG::reset().

◆ filename

char quda::MGParam::filename[100]

Filename for where to load/store the null space

Definition at line 103 of file multigrid.h.

◆ fine

MG* quda::MGParam::fine

This is the immediate finer level

Definition at line 54 of file multigrid.h.

Referenced by quda::MG::reset().

◆ geoBlockSize

int quda::MGParam::geoBlockSize[QUDA_MAX_DIM]

Geometric block size

Definition at line 39 of file multigrid.h.

Referenced by quda::MG::reset(), and quda::MG::verify().

◆ global_reduction

QudaBoolean quda::MGParam::global_reduction

Whether to use global or local (node) reductions

Definition at line 75 of file multigrid.h.

Referenced by quda::MG::createSmoother().

◆ level

int quda::MGParam::level

◆ location

QudaFieldLocation quda::MGParam::location

Where to compute this level of multigrid

Definition at line 97 of file multigrid.h.

Referenced by quda::MG::MG(), and quda::MG::verify().

◆ matResidual

DiracMatrix* quda::MGParam::matResidual

The Dirac operator to use for residual computation

Definition at line 78 of file multigrid.h.

Referenced by quda::MG::operator()(), quda::MG::reset(), and quda::MG::verify().

◆ matSmooth

DiracMatrix* quda::MGParam::matSmooth

The Dirac operator to use for smoothing

Definition at line 81 of file multigrid.h.

Referenced by quda::MG::createCoarseDirac(), quda::MG::createSmoother(), quda::MG::generateNullVectors(), and quda::MG::reset().

◆ matSmoothSloppy

DiracMatrix* quda::MGParam::matSmoothSloppy

The sloppy Dirac operator to use for smoothing

Definition at line 84 of file multigrid.h.

Referenced by quda::MG::createSmoother(), quda::MG::generateNullVectors(), and quda::MG::reset().

◆ mg_global

QudaMultigridParam& quda::MGParam::mg_global

◆ NblockOrtho

int quda::MGParam::NblockOrtho

Number of times to apply Gram-Schmidt within a block

Definition at line 48 of file multigrid.h.

Referenced by quda::MG::reset().

◆ Nlevel

int quda::MGParam::Nlevel

◆ nu_post

int quda::MGParam::nu_post

Number of pre-smoothing applications to perform

Definition at line 66 of file multigrid.h.

Referenced by quda::MG::createSmoother().

◆ nu_pre

int quda::MGParam::nu_pre

Number of pre-smoothing applications to perform

Definition at line 63 of file multigrid.h.

Referenced by quda::MG::createSmoother().

◆ Nvec

int quda::MGParam::Nvec

Number of vectors used to define coarse space

Definition at line 45 of file multigrid.h.

Referenced by quda::MG::createCoarseDirac(), quda::MG::generateNullVectors(), quda::MG::reset(), quda::MG::verify(), and quda::MG::~MG().

◆ setup_location

QudaFieldLocation quda::MGParam::setup_location

Where to compute this level of the multigrid setup

Definition at line 100 of file multigrid.h.

Referenced by quda::MG::createCoarseDirac().

◆ smoother

QudaInverterType quda::MGParam::smoother

What type of smoother to use

Definition at line 87 of file multigrid.h.

Referenced by quda::MG::createSmoother().

◆ smoother_solve_type

QudaSolveType quda::MGParam::smoother_solve_type

The type of smoother solve to do on each grid (e/o preconditioning or not)

Definition at line 94 of file multigrid.h.

Referenced by quda::MG::createCoarseDirac(), quda::MG::MG(), quda::MG::operator()(), quda::MG::verify(), and quda::MG::~MG().

◆ smoother_tol

double quda::MGParam::smoother_tol

Tolerance to use for the solver / smoother (if applicable)

Definition at line 69 of file multigrid.h.

Referenced by quda::MG::createSmoother().

◆ spinBlockSize

int quda::MGParam::spinBlockSize

Spin block size

Definition at line 42 of file multigrid.h.

Referenced by quda::MG::reset(), and quda::MG::verify().


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