template<class Matrix, class InnerPreconditioner, class ContainerType>
struct dg::LeastSquaresPreconditioner< Matrix, InnerPreconditioner, ContainerType >
Least Squares Polynomial Preconditioner \( M^{-1} s( AM^{-1})\).
Implements the least squares polynomial preconditioner as suggested by Youcef Saad, Practical Use of Polynomial Preconditionings for the Conjugate Gradient Method,SIAM J. Sci. and Stat. Comput., 6(4), 865–881 (1985)
- Note
- The least squares polynomial might (or might not) perform better than Chebyshev Polynomials and does not need an estimate of the lowest Eigenvalue
-
This class can be used as a Preconditioner in the CG algorithm. The CG algorithm forms an approximation to the solution in the form \( x_{k+1} = x_0 + P_k(A) r_0\) where \( P_k\) is a polynomial of degree
k
, which is optimal in minimizing the A-norm. Thus a polynomial preconditioner cannot decrease the number of matrix-vector multiplications needed to achieve a certain accuracy. However, since polynomial preconditioners do not use scalar products they may offset the increased overhead if the dot product becomes a bottleneck for performance or scalability.
- See also
- For more information see the book Iteratvie Methods for Sparse Linear Systems" 2nd edition by Yousef Saad
- Template Parameters
-
Matrix | Preferably a reference type |
InnerPreconditioner | Preferably a reference type |
ContainerType | Any class for which a specialization of TensorTraits exists and which fulfills the requirements of the there defined data and execution policies derived from AnyVectorTag and AnyPolicyTag . Among others
dg::HVec (serial), dg::DVec (cuda / omp), dg::MHVec (mpi + serial) or dg::MDVec (mpi + cuda / omp)
std::vector<dg::DVec> (vector of shared device vectors), std::array<double, 4> (array of 4 doubles) or std::map < std::string, dg::DVec> ( a map of named vectors)
double (scalar) and other primitive types ...
If there are several ContainerTypes in the argument list, then TensorTraits must exist for all of them |
- See also
- See The dg dispatch system for a detailed explanation of our type dispatch system