Here is stored different preconditioning routines for the GMRES algorithm such as ILU(k), ILU(t,p) and an hybrid version of them.
Incomplete LU like algorithms are perfectly well explained in Iterative Methods for Sparse Linear Systems p. 321 written by Youssef Saad, and I recommand to read the relative chapter (named Preconditioning Techniques) for a good understanding of how these approaches work.
Everything has been developed by my own but (obviously) routines imported from SparseArrays and LinearAlgebra.
Feel free to use and comment on my work! :-)
- Julia
- SparseArrays.jl
- LinearAlgebra.jl
- MatrixMarket.jl
git clone https://github.com/Protoniac/Preconditioned-GMRES
cd Preconditioned-GMRES/src/
julia main.jl
By default, the code is ran on an Harwel-Boeing matrix orsirr_1.mtx.
I discussed with the Professor Serge G. Petiton and he adviced me to use the Parallel Generator of Non-Hermitian Matrices Computed from Given Spectra he developed himself with Xinzhe Wu. This can be a very useful tool for benchmarking GMRES and Preconditioners given a set of eigenvalues, and will be called soon.
Output returns performances of :
- Direct solver method x = A\b
- Restarted GMRES without preconditioning
- Restarted GMRES with the hybrid preconditioning algorithm explained below (but other preconditioners can be chosen).
- Improve the Hybrid Incomplete LU factorization and think about other approaches
- Implement parallelism for ILU routines described in the chapter called Parallel Preconditioners of the book Iterative Methods for Sparse Linear Systems.