-
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
Make orthogonalization method chooseable for gmres #293
Conversation
Pull Request Test Coverage Report for Build 669141589Warning: This coverage report may be inaccurate.This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.
Details
💛 - Coveralls |
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 modified Gram-Schmidt is what people expect. I don't have the paper but I believe it should be dominated by rounding errors only exactly upon convergence, whereas classical GS can be dominated by noise before convergence.
Co-authored-by: Harmen Stoppels <[email protected]>
Can you include some comments explaining in not too technical terms what the user can choose and why he/she would want to do that? Basically comment on accuracy vs performance. |
Removed the type specification for orth_meth since it resulted in an error and I do not know how to resolve the error. Exporting OrthogonalizationMethod in orthogonalize.jl did not help.
I can't get it running with |
Oh, you need I'm also fine if you replace all occurances of
and make the user pass DGKS(), and the same for the other types |
Ah ok, gonna replace it |
Co-authored-by: Harmen Stoppels <[email protected]>
Thanks for your contribution! |
When using multithreading, Classical Gram-Schmidt with and without the DGKS correction step provides better runtimes then Modified Gram-Schmidt (since they use BLAS level 2 instead of level 1).
The following shows GMRES solving the Bourchtein/atmosmodd linear system from SuiteSparse using the first from the two RHS which come with the matrix. All three runs converged after 1497 iterations (so at least for this linear system round off errors doesn't seem to be a problem).
Since CGS and DGKS are already implemented, I just made them choosable when calling gmres. Set MGS the default, since it might be the best without multithreading.