With the PETSc built-in preconditioners, such as ICC, one should call KSPSetOperators(ksp,A,A'*A,...) since the preconditioner needs to work for the normal equations A'*A.
Supports only left preconditioning.
References:The original unpreconditioned algorithm can be found in Paige and Saunders, ACM Transactions on Mathematical Software, Vol 8, pp 43-71, 1982. In exact arithmetic the LSQR method (with no preconditioning) is identical to the KSPCG algorithm applied to the normal equations. The preconditioned varient was implemented by Bas van't Hof and is essentially a left preconditioning for the Normal Equations.
Developer Notes: How is this related to the KSPCGNE implementation? One difference is that KSPCGNE applies the preconditioner transpose times the preconditioner, so one does not need to pass A'*A as the third argument to KSPSetOperators().
Level:beginner
Location:src/ksp/ksp/impls/lsqr/lsqr.c
Index of all KSP routines
Table of Contents for all manual pages
Index of all manual pages