-
Notifications
You must be signed in to change notification settings - Fork 94
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
Minres solver #975
base: develop
Are you sure you want to change the base?
Minres solver #975
Conversation
format-rebase! |
Error: Rebase failed, see the related Action for details |
format! |
26a67da
to
ae95b88
Compare
ae95b88
to
7216293
Compare
SonarCloud Quality Gate failed. |
Codecov ReportAttention:
Additional details and impacted files@@ Coverage Diff @@
## develop #975 +/- ##
===========================================
+ Coverage 91.03% 91.72% +0.69%
===========================================
Files 697 503 -194
Lines 56724 43056 -13668
===========================================
- Hits 51639 39494 -12145
+ Misses 5085 3562 -1523 ☔ View full report in Codecov by Sentry. |
benchmark/solver/solver.cpp
Outdated
"A comma-separated list of solvers to run. " | ||
"Supported values are: bicgstab, bicg, cb_gmres_keep, " | ||
"cb_gmres_reduce1, cb_gmres_reduce2, cb_gmres_integer, " | ||
"cb_gmres_ireduce1, cb_gmres_ireduce2, cg, cgs, fcg, minres, gmres, idr, " |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we try to use alphabetical order here, or?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Right, I guess I wasn't paying attention.
In general, Jacobi is not supposed to work for indefinite systems. Is the system indefinite? If so, this may not be an issue. If the matrix is diagonal dominant, but has both negative and positive diagonal elements, I guess there's a high chance it's indefinite. |
285d451
to
2af34a1
Compare
777448c
to
7e34ec9
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would like to see a mention of the used algorithm in the header description as well (the details can remain in the CPP file).
The rest looks good; my other comments are primarily nits.
Note: This review was done together with @nvenko, so consider our two reviews as one.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The two used bibliographic references can be added in the minres header file. Also, the namespace should be corrected in the minres_kernels header file, from cg to minres.
7e34ec9
to
34bc634
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
based on 'Iterative Methods for Solving Linear Systems' (https://doi.org/10.1137/1.9781611970937) and 'Iterative Methods for Singular Linear Equations and Least-Squares Problems' (PhD thesis, Stanford University) Co-authored-by: Aditya Kashi <aditya.kashi@kit.edu> Co-authored-by: Hartwig Anzt <hanzt@icl.utk.edu> Signed-off-by: Marcel Koch <marcel.koch@kit.edu>
- documentation - missing tests - refactor Co-authored-by: Thomas Grützmacher <thomas.gruetzmacher@tum.de> Co-authored-by: nvenko <venkovic@gmail.com> Signed-off-by: Marcel Koch <marcel.koch@kit.edu>
aa12d70
to
9a45b07
Compare
This PR will add a Minres solver for symmetric/hermitian indefinite matrices. The implementation is based in the book 'Iterative Methods for Solving Linear Systems' (Ch. 8) by Anne Greenbaum (DOI: https://doi.org/10.1137/1.9781611970937). It uses the common kernel interface to define kernels.
One uncertainty for me is the computation of the residual norm approximation. I'm using the approach from Iterative Methods for Singular Linear Equations and Least-Squares Problems, but somehow this does not define the initial value for the used recursion. The three possible values are
beta = sqrt(<r, z>)
,||r||
or||z||
. I'm currently using||z||
, since I could also find that used by petsc. I've compared these three in matlab for smaller matrices, and the difference between these does not seem to matter.Todo: