QUDA
1.0.0
|
Multi-Shift Conjugate Gradient Solver. More...
#include <invert_quda.h>
Public Member Functions | |
MultiShiftCG (DiracMatrix &mat, DiracMatrix &matSloppy, SolverParam ¶m, TimeProfile &profile) | |
virtual | ~MultiShiftCG () |
void | operator() (std::vector< ColorSpinorField *>x, ColorSpinorField &b, std::vector< ColorSpinorField *> &p, double *r2_old_array) |
Run multi-shift and return Krylov-space at the end of the solve in p and r2_old_arry. More... | |
void | operator() (std::vector< ColorSpinorField *> out, ColorSpinorField &in) |
Run multi-shift and return Krylov-space at the end of the solve in p and r2_old_arry. More... | |
![]() | |
MultiShiftSolver (SolverParam ¶m, TimeProfile &profile) | |
virtual | ~MultiShiftSolver () |
bool | convergence (const double *r2, const double *r2_tol, int n) const |
Protected Attributes | |
const DiracMatrix & | mat |
const DiracMatrix & | matSloppy |
![]() | |
SolverParam & | param |
TimeProfile & | profile |
Multi-Shift Conjugate Gradient Solver.
Definition at line 1121 of file invert_quda.h.
quda::MultiShiftCG::MultiShiftCG | ( | DiracMatrix & | mat, |
DiracMatrix & | matSloppy, | ||
SolverParam & | param, | ||
TimeProfile & | profile | ||
) |
Definition at line 115 of file inv_multi_cg_quda.cpp.
|
virtual |
Definition at line 121 of file inv_multi_cg_quda.cpp.
void quda::MultiShiftCG::operator() | ( | std::vector< ColorSpinorField *> | x, |
ColorSpinorField & | b, | ||
std::vector< ColorSpinorField *> & | p, | ||
double * | r2_old_array | ||
) |
Run multi-shift and return Krylov-space at the end of the solve in p and r2_old_arry.
out | std::vector of pointer to solutions for all the shifts. |
in | right-hand side. |
p | std::vector of pointers to hold search directions. Note this will be resized as necessary. |
r2_old_array | pointer to last values of r2_old for old shifts. Needs to be large enough to hold r2_old for all shifts. |
Definition at line 157 of file inv_multi_cg_quda.cpp.
References quda::ShiftUpdate::apply(), quda::dslash::aux_worker, quda::blas::axpby(), quda::blas::axpy(), quda::blas::axpyCGNorm(), quda::blas::axpyReDot(), quda::blas::axpyZpbx(), quda::blas::caxpy(), quda::blas::cDotProduct(), checkLocation, quda::SolverParam::compute_true_res, quda::MultiShiftSolver::convergence(), quda::blas::copy(), quda::ColorSpinorParam::create, quda::ColorSpinorField::Create(), csParam, quda::SolverParam::delta, epsilon, errorQuda, quda::blas::flops, quda::DiracMatrix::flops(), getVerbosity(), quda::SolverParam::gflops, quda::blas::HeavyQuarkResidualNorm(), quda::DiracMatrix::isStaggered(), quda::SolverParam::iter, quda::SolverParam::iter_res_offset, quda::TimeProfile::Last(), mat, matSloppy, quda::SolverParam::max_res_increase, quda::SolverParam::max_res_increase_total, quda::SolverParam::maxiter, quda::blas::norm2(), quda::SolverParam::num_offset, quda::SolverParam::offset, quda::MultiShiftSolver::param, quda::pow(), quda::SolverParam::precision, quda::LatticeField::Precision(), quda::SolverParam::precision_refinement_sloppy, quda::SolverParam::precision_sloppy, printfQuda, quda::MultiShiftSolver::profile, QUDA_COPY_FIELD_CREATE, QUDA_CUDA_FIELD_LOCATION, QUDA_MAX_MULTI_SHIFT, quda::QUDA_PROFILE_COMPUTE, quda::QUDA_PROFILE_EPILOGUE, quda::QUDA_PROFILE_FREE, quda::QUDA_PROFILE_INIT, quda::QUDA_PROFILE_PREAMBLE, QUDA_SUMMARIZE, QUDA_VERBOSE, QUDA_ZERO_FIELD_CREATE, quda::blas::reDotProduct(), quda::reliable(), quda::SolverParam::residual_type, quda::SolverParam::secs, quda::ColorSpinorParam::setPrecision(), quda::sqrt(), quda::Solver::stopping(), tmp1, tmp2, quda::SolverParam::tol_offset, quda::SolverParam::true_res_hq_offset, quda::SolverParam::true_res_offset, quda::updateAlphaZeta(), quda::ShiftUpdate::updateNshift(), quda::ShiftUpdate::updateNupdate(), updateR(), quda::SolverParam::use_sloppy_partial_accumulator, warningQuda, quda::blas::xmyNorm(), quda::blas::xpay(), quda::blas::xpy(), and quda::blas::zero().
|
inlinevirtual |
Run multi-shift and return Krylov-space at the end of the solve in p and r2_old_arry.
out | std::vector of pointer to solutions for all the shifts. |
in | right-hand side. |
Implements quda::MultiShiftSolver.
Definition at line 1146 of file invert_quda.h.
References in, out, and QUDA_MAX_MULTI_SHIFT.
|
protected |
Definition at line 1124 of file invert_quda.h.
Referenced by operator()().
|
protected |
Definition at line 1125 of file invert_quda.h.
Referenced by operator()().