GMRES - Generalized Minimal Residual method. (Saad and Schultz, 1986) with restart
Usage:
-ksp_type gmres
Options:
-ksp_gmres_restart <restart>
the number of Krylov directions to orthogonalize against
-ksp_gmres_haptol <tol>
sets the tolerance for "happy ending" (exact convergence)
-ksp_gmres_preallocate
preallocate all the Krylov search directions initially (otherwise groups of vectors are allocated as needed)
-ksp_gmres_classicalgramschmidt
use classical (unmodified) Gram-Schmidt to orthogonalize against the Krylov space (fast) (the default)
-ksp_gmres_modifiedgramschmidt
use modified Gram-Schmidt in the orthogonalization (more stable, but slower)
-ksp_gmres_cgs_refinement_type <never,ifneeded,always>
determine if iterative refinement is used to increase the stability of the classical Gram-Schmidt orthogonalization.
-ksp_gmres_krylov_monitor
plot the Krylov space generated
Options:
GMRES(1) – GMRES with no restarts
GMRES(k) – Algorithm is restarted after k iteration steps so that a large number of basis vectors do not need to be maintained.
Benefits: Minimizes residuals by constructing an orthogonal basis for some suitable Krylov subspace.
Drawbacks: Long expensive recursion. In skew-symmetric situation, this method can stagnate unless restarts are utilized (say k=2).
The Generalized Minimal Residual method computes a sequence of orthogonal vectors (like MINRES), and combines these through a least-squares solve and update. However, unlike MINRES (and CG) it requires storing the whole sequence, so that a large amount of storage is needed. For this reason, restarted versions of this method are used. In restarted versions, computation and storage costs are limited by specifying a fixed number of vectors to be generated. This method is useful for general nonsymmetric matrices.
GMRES is an extension of MINRES to unsymmetric systems.