Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
Announcements
This community is designed for sharing of public information. Please do not share Intel or third-party confidential information here.

## FGMRES preconditioner applied to?

Beginner
208 Views

I am using the MKL's preconditioned FGMRES solver and I am trying to understand what exactly is the vector that FGMRES is asking to apply the preconditioner to. From the reference for the solver, Saad's Iterative methods for sparse linear systems, the left-preconditioned GMRES iteration (I'm assuming that FGMRES does left-preconditioning, please correct me if I'm wrong) involves computing at each step M^-1 A v_j.  That is, FGMRES first asks to compute the matrix vector product A v_j, and then I would assume that FGMRES would ask to apply the preconditioner on that result, i.e. compute M^-1 A v_j. Only, when I compute the squared 2 norm of the vectors involved, I get that the vector on which FGMRES asks to apply the preconditioner (which I would assume to be A v_j) always has a unit norm, regardless of the norm of A v_j. What is this unit norm vector that FGMRES is asking the user to apply the preconditioner to?

3 Replies
Beginner
208 Views

Bump, I'm not an expert in iterative methods, just a user seeking more information, hopefully this question does not expose a gross misunderstanding of mine about the GMRES algorithm.

Thanks!

Employee
208 Views

Hi,

MKL uses flexible GMRES which allows the preconditioner to vary from step to step. In the FGMRES, preconditioner will be changed at each step, and according to Saad's doc, the flexible seems do changes bases on right precondition that the action of AM^−1 j on a vector v do not in the span of Vm+1. MKL provides Incomplete LU factorization for preconditioners, you could use ILU0 & ILUT to apply it for FGMRES solver, please refer this document for detailed implement steps:

Best regards,
Fiona

Beginner
208 Views

Thank you Fiona, I had somehow missed the fact that F in FGMRES stands for Flexible, and it does say so in the documentation, my bad! Nevertheless I appreciate you clarifying this for me!