-
Notifications
You must be signed in to change notification settings - Fork 910
FGCRODR linear solver #2658
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
Merged
Merged
FGCRODR linear solver #2658
+682
−165
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Contributor
|
When should we not use it? Or can this be used as an alternative for any linear solver? |
Member
Author
|
It can replace any solver, for a single system its performance should be better than restarted GMRES but worse than full GMRES (although full GMRES will use a lot more memory). |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Proposed Changes
https://hal.science/hal-00650239v2/document
Deflation is the state-of-the-art way of reducing the size of the Krylov subspace needed by linear solvers.
The TLDR is that deflation approaches reserve a certain number of basis vectors to compute and refine on each restart cycle. When applied to RFGMRES this "memory" keeps the solver from stalling (the linear residual plateaus).
In addition to deflation, this particular method claims to be suitable for subspace recycling, that is, using information from a previous linear solve to accelerate the convergence for a new matrix, RHS, or both. This sounded interesting to explore for problems with expensive linear solves, such as nonlinear elasticity, and CFD with Newton-Krylov.
I'm not using it for NK yet. A bit more testing is needed. For the testcase I modified, the speedup compared with plain RFGMRES is ~3x (from 170 to 64 linear iterations). So the deflation part is working as it should.
PR Checklist
pre-commit run --allto format old commits.