QUDA
1.0.0
|
#include <invert_quda.h>
Public Member Functions | |
GMResDR (DiracMatrix &mat, DiracMatrix &matSloppy, DiracMatrix &matPrecon, SolverParam ¶m, TimeProfile &profile) | |
GMResDR (DiracMatrix &mat, Solver &K, DiracMatrix &matSloppy, DiracMatrix &matPrecon, SolverParam ¶m, TimeProfile &profile) | |
virtual | ~GMResDR () |
void | operator() (ColorSpinorField &out, ColorSpinorField &in) |
void | RunDeflatedCycles (ColorSpinorField *out, ColorSpinorField *in, const double tol_threshold) |
int | FlexArnoldiProcedure (const int start_idx, const bool do_givens) |
void | RestartVZH () |
void | UpdateSolution (ColorSpinorField *x, ColorSpinorField *r, bool do_gels) |
![]() | |
Solver (SolverParam ¶m, TimeProfile &profile) | |
virtual | ~Solver () |
virtual void | blocksolve (ColorSpinorField &out, ColorSpinorField &in) |
bool | convergence (double r2, double hq2, double r2_tol, double hq_tol) |
bool | convergenceHQ (double r2, double hq2, double r2_tol, double hq_tol) |
Test for HQ solver convergence – ignore L2 residual. More... | |
bool | convergenceL2 (double r2, double hq2, double r2_tol, double hq_tol) |
Test for L2 solver convergence – ignore HQ residual. More... | |
void | PrintStats (const char *name, int k, double r2, double b2, double hq2) |
Prints out the running statistics of the solver (requires a verbosity of QUDA_VERBOSE) More... | |
void | PrintSummary (const char *name, int k, double r2, double b2, double r2_tol, double hq_tol) |
Prints out the summary of the solver convergence (requires a verbosity of QUDA_SUMMARIZE). Assumes SolverParam.true_res and SolverParam.true_res_hq has been set. More... | |
void | constructDeflationSpace (const ColorSpinorField &meta, const DiracMatrix &mat, bool svd) |
Constructs the deflation space. More... | |
virtual double | flops () const |
Private Attributes | |
DiracMatrix & | mat |
DiracMatrix & | matSloppy |
DiracMatrix & | matPrecon |
Solver * | K |
SolverParam | Kparam |
ColorSpinorFieldSet * | Vm |
ColorSpinorFieldSet * | Zm |
ColorSpinorField * | rp |
ColorSpinorField * | yp |
residual vector More... | |
ColorSpinorField * | tmpp |
high precision accumulator More... | |
ColorSpinorField * | r_sloppy |
temporary for mat-vec More... | |
ColorSpinorField * | r_pre |
sloppy residual vector More... | |
ColorSpinorField * | p_pre |
residual passed to preconditioner More... | |
TimeProfile & | profile |
preconditioner result More... | |
GMResDRArgs * | gmresdr_args |
bool | init |
Additional Inherited Members | |
![]() | |
static Solver * | create (SolverParam ¶m, DiracMatrix &mat, DiracMatrix &matSloppy, DiracMatrix &matPrecon, TimeProfile &profile) |
static double | stopping (double tol, double b2, QudaResidualType residual_type) |
Set the solver L2 stopping condition. More... | |
![]() | |
EigenSolver * | eig_solve |
bool | deflate_init = false |
std::vector< ColorSpinorField * > | defl_tmp1 |
std::vector< ColorSpinorField * > | defl_tmp2 |
![]() | |
SolverParam & | param |
TimeProfile & | profile |
int | node_parity |
Definition at line 1277 of file invert_quda.h.
quda::GMResDR::GMResDR | ( | DiracMatrix & | mat, |
DiracMatrix & | matSloppy, | ||
DiracMatrix & | matPrecon, | ||
SolverParam & | param, | ||
TimeProfile & | profile | ||
) |
Definition at line 211 of file inv_gmresdr_quda.cpp.
References errorQuda, quda::fillFGMResDRInnerSolveParam(), quda::SolverParam::inv_type_precondition, K, Kparam, QUDA_BICGSTAB_INVERTER, QUDA_CG_INVERTER, QUDA_INVALID_INVERTER, QUDA_MR_INVERTER, and QUDA_SD_INVERTER.
quda::GMResDR::GMResDR | ( | DiracMatrix & | mat, |
Solver & | K, | ||
DiracMatrix & | matSloppy, | ||
DiracMatrix & | matPrecon, | ||
SolverParam & | param, | ||
TimeProfile & | profile | ||
) |
Definition at line 234 of file inv_gmresdr_quda.cpp.
|
virtual |
Definition at line 239 of file inv_gmresdr_quda.cpp.
References gmresdr_args, init, K, p_pre, quda::Solver::param, quda::SolverParam::precision_precondition, quda::SolverParam::precision_sloppy, profile, quda::QUDA_PROFILE_FREE, r_pre, r_sloppy, rp, tmpp, Vm, yp, and Zm.
int quda::GMResDR::FlexArnoldiProcedure | ( | const int | start_idx, |
const bool | do_givens = false |
||
) |
Definition at line 371 of file inv_gmresdr_quda.cpp.
References quda::blas::ax(), quda::GMResDRArgs::c, quda::caxpy(), quda::blas::cDotProduct(), quda::ColorSpinorField::Component(), quda::ColorSpinorField::Components(), quda::conj(), quda::GMResDRArgs::eta, gmresdr_args, quda::GMResDRArgs::H, quda::GMResDRArgs::k, K, quda::GMResDRArgs::m, matSloppy, memset(), quda::norm(), quda::norm2(), p_pre, quda::Solver::param, popVerbosity(), quda::SolverParam::precision_precondition, quda::SolverParam::precision_sloppy, pushVerbosity(), r_pre, r_sloppy, quda::sqrt(), tmp, tmpp, quda::SolverParam::verbosity_precondition, Vm, quda::zero(), and Zm.
Referenced by operator()().
|
virtual |
Implements quda::Solver.
Definition at line 453 of file inv_gmresdr_quda.cpp.
References quda::blas::axpy(), quda::GMResDRArgs::c, quda::blas::cDotProduct(), quda::ColorSpinorField::Component(), quda::ColorSpinorField::Components(), quda::ColorSpinorParam::composite_dim, quda::Solver::convergence(), quda::ColorSpinorParam::create, quda::ColorSpinorField::Create(), csParam, quda::SolverParam::deflation_grid, FlexArnoldiProcedure(), quda::blas::flops, quda::DiracMatrix::flops(), quda::SolverParam::gflops, gmresdr_args, quda::blas::HeavyQuarkResidualNorm(), init, quda::ColorSpinorParam::is_composite, quda::SolverParam::iter, quda::GMResDRArgs::k, K, quda::TimeProfile::Last(), quda::SolverParam::m, mat, quda::SolverParam::nev, quda::norm(), quda::norm2(), p_pre, quda::Solver::param, quda::SolverParam::precision, quda::SolverParam::precision_precondition, quda::SolverParam::precision_sloppy, printfQuda, quda::Solver::PrintStats(), quda::Solver::PrintSummary(), profile, QUDA_DOUBLE_PRECISION, QUDA_HEAVY_QUARK_RESIDUAL, quda::QUDA_PROFILE_COMPUTE, quda::QUDA_PROFILE_EPILOGUE, quda::QUDA_PROFILE_INIT, quda::QUDA_PROFILE_PREAMBLE, QUDA_ZERO_FIELD_CREATE, r_pre, r_sloppy, quda::GMResDRArgs::ResetArgs(), quda::SolverParam::residual_type, RestartVZH(), quda::SolverParam::rhs_idx, rp, quda::SolverParam::secs, quda::ColorSpinorParam::setPrecision(), quda::sqrt(), tmpp, quda::SolverParam::tol, quda::SolverParam::tol_hq, quda::SolverParam::true_res, UpdateSolution(), quda::GMResDRArgs::Vkp1, Vm, quda::blas::xmyNorm(), quda::blas::xpy(), yp, quda::blas::zero(), quda::zero(), and Zm.
void quda::GMResDR::RestartVZH | ( | ) |
Definition at line 302 of file inv_gmresdr_quda.cpp.
References quda::blas::ax(), quda::blas::caxpy(), quda::caxpy(), quda::blas::cDotProduct(), checkCudaError, quda::ColorSpinorField::Component(), quda::ColorSpinorField::Components(), quda::blas::copy(), errorQuda, quda::SolverParam::extlib_type, gmresdr_args, quda::GMResDRArgs::H, quda::GMResDRArgs::k, quda::GMResDRArgs::m, quda::blas::norm2(), quda::Solver::param, QUDA_EIGEN_EXTLIB, QUDA_MAGMA_EXTLIB, quda::GMResDRArgs::ritzVecs, quda::sqrt(), quda::ColorSpinorField::V(), quda::GMResDRArgs::Vkp1, Vm, quda::blas::zero(), and Zm.
Referenced by operator()().
void quda::GMResDR::RunDeflatedCycles | ( | ColorSpinorField * | out, |
ColorSpinorField * | in, | ||
const double | tol_threshold | ||
) |
void quda::GMResDR::UpdateSolution | ( | ColorSpinorField * | x, |
ColorSpinorField * | r, | ||
bool | do_gels | ||
) |
Definition at line 271 of file inv_gmresdr_quda.cpp.
References quda::GMResDRArgs::c, quda::blas::caxpy(), quda::ColorSpinorField::Components(), errorQuda, quda::GMResDRArgs::eta, quda::SolverParam::extlib_type, gmresdr_args, quda::GMResDRArgs::H, quda::GMResDRArgs::m, quda::Solver::param, QUDA_EIGEN_EXTLIB, QUDA_MAGMA_EXTLIB, Vm, and Zm.
Referenced by operator()().
|
private |
Definition at line 1300 of file invert_quda.h.
Referenced by FlexArnoldiProcedure(), operator()(), RestartVZH(), UpdateSolution(), and ~GMResDR().
|
private |
Definition at line 1302 of file invert_quda.h.
Referenced by operator()(), and ~GMResDR().
|
private |
Definition at line 1285 of file invert_quda.h.
Referenced by FlexArnoldiProcedure(), GMResDR(), operator()(), and ~GMResDR().
|
private |
Definition at line 1286 of file invert_quda.h.
Referenced by GMResDR().
|
private |
Definition at line 1281 of file invert_quda.h.
Referenced by operator()().
|
private |
Definition at line 1283 of file invert_quda.h.
|
private |
Definition at line 1282 of file invert_quda.h.
Referenced by FlexArnoldiProcedure().
|
private |
residual passed to preconditioner
Definition at line 1296 of file invert_quda.h.
Referenced by FlexArnoldiProcedure(), operator()(), and ~GMResDR().
|
private |
preconditioner result
Definition at line 1298 of file invert_quda.h.
Referenced by operator()(), and ~GMResDR().
|
private |
sloppy residual vector
Definition at line 1295 of file invert_quda.h.
Referenced by FlexArnoldiProcedure(), operator()(), and ~GMResDR().
|
private |
temporary for mat-vec
Definition at line 1294 of file invert_quda.h.
Referenced by FlexArnoldiProcedure(), operator()(), and ~GMResDR().
|
private |
Definition at line 1291 of file invert_quda.h.
Referenced by operator()(), and ~GMResDR().
|
private |
high precision accumulator
Definition at line 1293 of file invert_quda.h.
Referenced by FlexArnoldiProcedure(), operator()(), and ~GMResDR().
|
private |
Definition at line 1288 of file invert_quda.h.
Referenced by FlexArnoldiProcedure(), operator()(), RestartVZH(), UpdateSolution(), and ~GMResDR().
|
private |
residual vector
Definition at line 1292 of file invert_quda.h.
Referenced by operator()(), and ~GMResDR().
|
private |
Definition at line 1289 of file invert_quda.h.
Referenced by FlexArnoldiProcedure(), operator()(), RestartVZH(), UpdateSolution(), and ~GMResDR().