Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Example for set_solver!(ps, Pardiso.ITERATIVE_SOLVER) #32

Open
wsshin opened this issue Mar 28, 2018 · 0 comments
Open

Example for set_solver!(ps, Pardiso.ITERATIVE_SOLVER) #32

wsshin opened this issue Mar 28, 2018 · 0 comments

Comments

@wsshin
Copy link

wsshin commented Mar 28, 2018

Section 1.6, "Direct-Iterative Preconditioning for Nonsymmetric Linear Systems", of the PARDISO User Guide says

Many applications of sparse solvers require solutions of systems with gradually changing values of the nonzero coefficient matrix, but the same identical sparsity pattern. In these applications, the analysis phase of the solvers has to be performed only once and the numerical factorizations are the important time-consuming steps during the simulation. PARDISO uses a numerical factorization A = LU for the first system and applies these exact factors L and U for the next steps in a preconditioned Krylov-Subspace iteration.

So, when the matrix changes slightly, PARDISO has the capability to perform matrix factorization only once and uses it over and over again until the accumulated changes in the matrix becomes too large.

The User Guide continues to say

If the iteration does not converge, the solver will automatically switch back to the numerical factorization.

So, along the evolution of the matrix, it seems that the users do not have to decide when to discard the old factorization result by themselves: PARDISO has the capability to recognize such a situation automatically and generate a new factorization result.

Pardiso.jl seems to support these capabilities via set_solver!(ps, Pardiso.ITERATIVE_SOLVER), but I am not sure how to use this properly. It will be great to have an example of using ITERATIVE_SOLVER in the example directory, because avoiding factorization as much as possible reduces the total solution time significantly, as factorization is the most expensive step in the solution procedure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants