|
QUDA
0.9.0
|
#include <invert_quda.h>

Public Member Functions | |
| MinResExt (DiracMatrix &mat, bool orthogonal, bool apply_mat, TimeProfile &profile) | |
| virtual | ~MinResExt () |
| void | operator() (ColorSpinorField &x, ColorSpinorField &b, std::vector< std::pair< ColorSpinorField *, ColorSpinorField *> > basis) |
| void | operator() (ColorSpinorField &x, ColorSpinorField &b, std::vector< ColorSpinorField *> p, std::vector< ColorSpinorField *> q) |
Protected Attributes | |
| const DiracMatrix & | mat |
| bool | orthogonal |
| bool | apply_mat |
| Whether to construct an orthogonal basis or not. More... | |
| TimeProfile & | profile |
| Whether to compute q = Ap or assume it is provided. More... | |
This computes the optimum guess for the system Ax=b in the L2 residual norm. For use in the HMD force calculations using a minimal residual chronological method. This computes the guess solution as a linear combination of a given number of previous solutions. Following Brower et al, only the orthogonalised vector basis is stored to conserve memory.
If Eigen support is enabled then Eigen's SVD algorithm is used for solving the linear system, else Gaussian eliminiation with partial pivots is used.
Definition at line 771 of file invert_quda.h.
| quda::MinResExt::MinResExt | ( | DiracMatrix & | mat, |
| bool | orthogonal, | ||
| bool | apply_mat, | ||
| TimeProfile & | profile | ||
| ) |
| mat | The operator for the linear system we wish to solve |
| orthogonal | Whether to construct an orthogonal basis prior to constructing the linear system |
| apply_mat | Whether to apply the operator in place or assume q already contains this Timing profile to use |
Definition at line 10 of file inv_mre.cpp.
|
virtual |
Definition at line 15 of file inv_mre.cpp.
| void quda::MinResExt::operator() | ( | ColorSpinorField & | x, |
| ColorSpinorField & | b, | ||
| std::vector< std::pair< ColorSpinorField *, ColorSpinorField *> > | basis | ||
| ) |
| x | The optimum for the solution vector. |
| b | The source vector in the equation to be solved. This is not preserved and is overwritten by the new residual. |
| basis | Vector of pairs storing the basis (p,Ap) |
Definition at line 203 of file inv_mre.cpp.
References b, fused_exterior_ndeg_tm_dslash_cuda_gen::i, p, and x.
| void quda::MinResExt::operator() | ( | ColorSpinorField & | x, |
| ColorSpinorField & | b, | ||
| std::vector< ColorSpinorField *> | p, | ||
| std::vector< ColorSpinorField *> | q | ||
| ) |
| x | The optimum for the solution vector. |
| b | The source vector in the equation to be solved. This is not preserved. |
| p | The basis vectors in which we are building the guess |
| q | The basis vectors multipled by A |
Definition at line 133 of file inv_mre.cpp.
References apply_mat, quda::blas::ax(), b, quda::blas::caxpy(), quda::blas::cDotProduct(), getVerbosity(), fused_exterior_ndeg_tm_dslash_cuda_gen::i, mat, quda::blas::norm2(), orthogonal, p, printfQuda, profile, quda::QUDA_PROFILE_COMPUTE, quda::QUDA_PROFILE_FREE, quda::QUDA_PROFILE_INIT, quda::QUDA_PROFILE_PREAMBLE, QUDA_SUMMARIZE, quda::solve(), quda::sqrt(), X, x, and quda::blas::zero().

|
protected |
Whether to construct an orthogonal basis or not.
Definition at line 776 of file invert_quda.h.
Referenced by operator()().
|
protected |
Definition at line 774 of file invert_quda.h.
Referenced by operator()().
|
protected |
Definition at line 775 of file invert_quda.h.
Referenced by operator()().
|
protected |
Whether to compute q = Ap or assume it is provided.
Definition at line 777 of file invert_quda.h.
Referenced by operator()().
1.8.14