QUDA  1.0.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Member Functions | Protected Attributes | List of all members
quda::MultiShiftCG Class Reference

Multi-Shift Conjugate Gradient Solver. More...

#include <invert_quda.h>

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

Public Member Functions

 MultiShiftCG (DiracMatrix &mat, DiracMatrix &matSloppy, SolverParam &param, 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...
 
- Public Member Functions inherited from quda::MultiShiftSolver
 MultiShiftSolver (SolverParam &param, TimeProfile &profile)
 
virtual ~MultiShiftSolver ()
 
bool convergence (const double *r2, const double *r2_tol, int n) const
 

Protected Attributes

const DiracMatrixmat
 
const DiracMatrixmatSloppy
 
- Protected Attributes inherited from quda::MultiShiftSolver
SolverParamparam
 
TimeProfileprofile
 

Detailed Description

Multi-Shift Conjugate Gradient Solver.

Definition at line 1121 of file invert_quda.h.

Constructor & Destructor Documentation

◆ MultiShiftCG()

quda::MultiShiftCG::MultiShiftCG ( DiracMatrix mat,
DiracMatrix matSloppy,
SolverParam param,
TimeProfile profile 
)

Definition at line 115 of file inv_multi_cg_quda.cpp.

◆ ~MultiShiftCG()

quda::MultiShiftCG::~MultiShiftCG ( )
virtual

Definition at line 121 of file inv_multi_cg_quda.cpp.

Member Function Documentation

◆ operator()() [1/2]

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.

Parameters
outstd::vector of pointer to solutions for all the shifts.
inright-hand side.
pstd::vector of pointers to hold search directions. Note this will be resized as necessary.
r2_old_arraypointer 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().

Here is the call graph for this function:

◆ operator()() [2/2]

void quda::MultiShiftCG::operator() ( std::vector< ColorSpinorField *>  out,
ColorSpinorField in 
)
inlinevirtual

Run multi-shift and return Krylov-space at the end of the solve in p and r2_old_arry.

Parameters
outstd::vector of pointer to solutions for all the shifts.
inright-hand side.

Implements quda::MultiShiftSolver.

Definition at line 1146 of file invert_quda.h.

References in, out, and QUDA_MAX_MULTI_SHIFT.

Member Data Documentation

◆ mat

const DiracMatrix& quda::MultiShiftCG::mat
protected

Definition at line 1124 of file invert_quda.h.

Referenced by operator()().

◆ matSloppy

const DiracMatrix& quda::MultiShiftCG::matSloppy
protected

Definition at line 1125 of file invert_quda.h.

Referenced by operator()().


The documentation for this class was generated from the following files: