-
Notifications
You must be signed in to change notification settings - Fork 106
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
QMR #255
QMR #255
Conversation
Codecov Report
@@ Coverage Diff @@
## master #255 +/- ##
==========================================
+ Coverage 90.52% 90.53% +<.01%
==========================================
Files 17 18 +1
Lines 1077 1130 +53
==========================================
+ Hits 975 1023 +48
- Misses 102 107 +5
Continue to review full report at Codecov.
|
Ref Issue #1 Added a bit of documentation and renamed the iterable construction to keep in line with the syntax for other methods. |
Thank you. How would you assess this code yourself? Do you think it is good to go once checked? |
Yes I think so. I haven't built the documentation so I don't know if there will be any issues there, but the core code works with minimal allocations. I have used it successfully where As I said, it is missing preconditioners, but so are other methods. There could be an argument made for eliminating the (very small) vectors storing the relevant Hessenberg and right-hand-side values ( One potentially dicey issue is the convergence for low-precision dense matrices. In the tests for dense matrices, I relaxed the tolerance by a factor of 10. Even though the solve would show up as converged, the residual test when calculated directly for |
Thank you, this is really helpful |
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 can merge this.
Can this be merged? Are there any open items left to address? |
I've finished a bare-bones QMR implementation. No pre-conditioning or look-ahead Lanczos (yet). Please have a look and let me know what you think.
I've mostly followed the style for MINRES. I split the Lanczos bi-orthogonalization process from the QMR iteration, in keeping with how the algorithms are abstracted in the original papers.
This algorithm should work with GPUs though it remains untested.