QUDA
1.0.0
|
#include <invert_quda.h>
Public Member Functions | |
BiCGstabL (DiracMatrix &mat, DiracMatrix &matSloppy, SolverParam ¶m, TimeProfile &profile) | |
virtual | ~BiCGstabL () |
void | operator() (ColorSpinorField &out, ColorSpinorField &in) |
![]() | |
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 Member Functions | |
int | reliable (double &rNorm, double &maxrx, double &maxrr, const double &r2, const double &delta) |
Current residual, in BiCG language. More... | |
void | computeTau (Complex **tau, double *sigma, std::vector< ColorSpinorField *> r, int begin, int size, int j) |
void | updateR (Complex **tau, std::vector< ColorSpinorField *> r, int begin, int size, int j) |
void | orthoDir (Complex **tau, double *sigma, std::vector< ColorSpinorField *> r, int j, int pipeline) |
void | updateUend (Complex *gamma, std::vector< ColorSpinorField *> u, int nKrylov) |
void | updateXRend (Complex *gamma, Complex *gamma_prime, Complex *gamma_prime_prime, std::vector< ColorSpinorField *> r, ColorSpinorField &x, int nKrylov) |
Private Attributes | |
DiracMatrix & | mat |
const DiracMatrix & | matSloppy |
int | nKrylov |
Complex | rho0 |
Complex | rho1 |
Complex | alpha |
Complex | omega |
Complex | beta |
Complex * | gamma |
Complex * | gamma_prime |
Complex * | gamma_prime_prime |
Complex ** | tau |
double * | sigma |
ColorSpinorField * | r_fullp |
ColorSpinorField * | yp |
Full precision residual. More... | |
ColorSpinorField * | tempp |
Full precision temporary. More... | |
std::vector< ColorSpinorField * > | r |
Sloppy temporary vector. More... | |
std::vector< ColorSpinorField * > | u |
ColorSpinorField * | x_sloppy_saved_p |
ColorSpinorField * | r0_saved_p |
Sloppy solution vector. More... | |
ColorSpinorField * | r_sloppy_saved_p |
Shadow residual, in BiCG language. More... | |
bool | init |
std::string | solver_name |
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 755 of file invert_quda.h.
quda::BiCGstabL::BiCGstabL | ( | DiracMatrix & | mat, |
DiracMatrix & | matSloppy, | ||
SolverParam & | param, | ||
TimeProfile & | profile | ||
) |
Definition at line 255 of file inv_bicgstabl_quda.cpp.
References gamma, gamma_prime, gamma_prime_prime, nKrylov, r, sigma, solver_name, tau, and u.
|
virtual |
Definition at line 274 of file inv_bicgstabl_quda.cpp.
References gamma, gamma_prime, gamma_prime_prime, init, nKrylov, quda::Solver::profile, quda::QUDA_PROFILE_FREE, r, r0_saved_p, r_fullp, r_sloppy_saved_p, sigma, tau, tempp, u, x_sloppy_saved_p, and yp.
|
private |
Internal routines for pipelined Gram-Schmidt. Made to not conflict with GCR's implementation.
Definition at line 21 of file inv_bicgstabl_quda.cpp.
References quda::blas::cDotProduct(), and quda::size.
Referenced by orthoDir().
|
virtual |
Implements quda::Solver.
Definition at line 322 of file inv_bicgstabl_quda.cpp.
References alpha, quda::dslash::aux_worker, beta, quda::BICGSTABL_UPDATE_R, quda::BICGSTABL_UPDATE_U, quda::blas::caxpby(), quda::blas::caxpy(), quda::blas::cDotProduct(), quda::blas::cDotProductNormA(), quda::SolverParam::compute_null_vector, quda::SolverParam::compute_true_res, quda::Solver::convergence(), quda::blas::copy(), quda::ColorSpinorParam::create, quda::ColorSpinorField::Create(), csParam, quda::SolverParam::delta, errorQuda, quda::blas::flops, quda::DiracMatrix::flops(), gamma, gamma_prime, gamma_prime_prime, quda::DiracMatrix::getStencilSteps(), getVerbosity(), quda::SolverParam::gflops, quda::SolverParam::heavy_quark_check, quda::blas::HeavyQuarkResidualNorm(), init, quda::SolverParam::is_preconditioner, quda::SolverParam::iter, quda::TimeProfile::Last(), mat, matSloppy, quda::SolverParam::maxiter, nKrylov, quda::blas::norm2(), omega, orthoDir(), quda::Solver::param, pipeline, quda::SolverParam::pipeline, quda::LatticeField::Precision(), quda::SolverParam::precision_sloppy, quda::SolverParam::preserve_source, printfQuda, quda::Solver::PrintStats(), quda::Solver::PrintSummary(), quda::Solver::profile, QUDA_COMPUTE_NULL_VECTOR_NO, QUDA_HEAVY_QUARK_RESIDUAL, QUDA_PRESERVE_SOURCE_NO, quda::QUDA_PROFILE_COMPUTE, quda::QUDA_PROFILE_EPILOGUE, quda::QUDA_PROFILE_FREE, quda::QUDA_PROFILE_PREAMBLE, QUDA_USE_INIT_GUESS_YES, QUDA_VERBOSE, QUDA_ZERO_FIELD_CREATE, r, r0_saved_p, r_fullp, r_sloppy_saved_p, reliable(), quda::SolverParam::residual_type, rho0, rho1, quda::SolverParam::secs, quda::ColorSpinorParam::setPrecision(), sigma, solver_name, quda::sqrt(), quda::Solver::stopping(), tau, tempp, quda::SolverParam::tol, quda::SolverParam::tol_hq, quda::SolverParam::true_res, quda::SolverParam::true_res_hq, u, updateUend(), updateXRend(), quda::SolverParam::use_init_guess, quda::SolverParam::use_sloppy_partial_accumulator, warningQuda, x_sloppy_saved_p, quda::blas::xmyNorm(), quda::blas::xpy(), quda::blas::xpyHeavyQuarkResidualNorm(), yp, and quda::blas::zero().
|
private |
Definition at line 57 of file inv_bicgstabl_quda.cpp.
References quda::blas::caxpy(), quda::blas::caxpyDotzy(), quda::blas::cDotProduct(), computeTau(), pipeline, and updateR().
Referenced by operator()().
|
private |
Current residual, in BiCG language.
Internal routine for reliable updates. Made to not conflict with BiCGstab's implementation.
Definition at line 308 of file inv_bicgstabl_quda.cpp.
References quda::sqrt(), and updateR().
Referenced by operator()().
|
private |
Definition at line 40 of file inv_bicgstabl_quda.cpp.
References quda::blas::caxpy(), and quda::size.
Referenced by orthoDir(), and reliable().
|
private |
Definition at line 108 of file inv_bicgstabl_quda.cpp.
References quda::blas::caxpy(), and nKrylov.
Referenced by operator()().
|
private |
Definition at line 125 of file inv_bicgstabl_quda.cpp.
References quda::blas::caxpyBxpz(), and nKrylov.
Referenced by operator()().
|
private |
Definition at line 767 of file invert_quda.h.
Referenced by operator()().
|
private |
Definition at line 767 of file invert_quda.h.
Referenced by operator()().
|
private |
Definition at line 768 of file invert_quda.h.
Referenced by BiCGstabL(), operator()(), and ~BiCGstabL().
|
private |
Definition at line 768 of file invert_quda.h.
Referenced by BiCGstabL(), operator()(), and ~BiCGstabL().
|
private |
Definition at line 768 of file invert_quda.h.
Referenced by BiCGstabL(), operator()(), and ~BiCGstabL().
|
private |
Solver uses lazy allocation: this flag determines whether we have allocated or not.
Definition at line 805 of file invert_quda.h.
Referenced by operator()(), and ~BiCGstabL().
|
private |
Definition at line 758 of file invert_quda.h.
Referenced by operator()().
|
private |
Definition at line 759 of file invert_quda.h.
Referenced by operator()().
|
private |
The size of the Krylov space that BiCGstabL uses.
Definition at line 764 of file invert_quda.h.
Referenced by BiCGstabL(), operator()(), updateUend(), updateXRend(), and ~BiCGstabL().
|
private |
Definition at line 767 of file invert_quda.h.
Referenced by operator()().
|
private |
Sloppy temporary vector.
Definition at line 778 of file invert_quda.h.
Referenced by BiCGstabL(), operator()(), and ~BiCGstabL().
|
private |
Sloppy solution vector.
Definition at line 783 of file invert_quda.h.
Referenced by operator()(), and ~BiCGstabL().
|
private |
Definition at line 774 of file invert_quda.h.
Referenced by operator()(), and ~BiCGstabL().
|
private |
Shadow residual, in BiCG language.
Definition at line 784 of file invert_quda.h.
Referenced by operator()(), and ~BiCGstabL().
|
private |
Definition at line 767 of file invert_quda.h.
Referenced by operator()().
|
private |
Definition at line 767 of file invert_quda.h.
Referenced by operator()().
|
private |
Definition at line 770 of file invert_quda.h.
Referenced by BiCGstabL(), operator()(), and ~BiCGstabL().
|
private |
Definition at line 807 of file invert_quda.h.
Referenced by BiCGstabL(), and operator()().
|
private |
Definition at line 769 of file invert_quda.h.
Referenced by BiCGstabL(), operator()(), and ~BiCGstabL().
|
private |
Full precision temporary.
Definition at line 777 of file invert_quda.h.
Referenced by operator()(), and ~BiCGstabL().
|
private |
Definition at line 779 of file invert_quda.h.
Referenced by BiCGstabL(), operator()(), and ~BiCGstabL().
|
private |
Definition at line 782 of file invert_quda.h.
Referenced by operator()(), and ~BiCGstabL().
|
private |
Full precision residual.
Definition at line 775 of file invert_quda.h.
Referenced by operator()(), and ~BiCGstabL().