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

SolverGMRES: Implement classical Gram-Schmidt with delayed reorthogonalization #16749

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
15 changes: 14 additions & 1 deletion doc/doxygen/references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -2391,4 +2391,17 @@ @article{Shephard1984
author = {Mark S. Shephard},
title = {Linear multipoint constraints applied via transformation as part of a direct stiffness assembly process},
journal = {International Journal for Numerical Methods in Engineering}
}
}

@article{Bielich2022,
title = {Low-synch {G}ram--{S}chmidt with delayed reorthogonalization for {K}rylov solvers},
volume = {112},
url = {https://doi.org/10.1016/j.parco.2022.102940},
DOI = {10.1016/j.parco.2022.102940},
journal = {Parallel Computing},
publisher = {Elsevier},
author = {Bielich, Daniel and Langou, Julien and Thomas, Stephen and Świrydowicz, Kasia and Yamazaki, Ichitaro and Boman, Erik G.},
year = {2022},
pages = {102940}
}

16 changes: 15 additions & 1 deletion include/deal.II/lac/orthogonalization.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,21 @@ namespace LinearAlgebra
* is less stable in terms of roundoff error propagation, requiring
* additional re-orthogonalization steps more frequently.
*/
classical_gram_schmidt
classical_gram_schmidt,
/**
* Use classical Gram-Schmidt algorithm with two orthogonalization
* iterations and delayed orthogonalization using the algorithm described
* in @cite Bielich2022. This approach works on multi-vectors with a
* single global reduction (of multiple elements) and is more efficient
* than the modified Gram-Schmidt algorithm. At the same time, it
* unconditionally performs the second orthogonalization step, making it
* more stable than the classical Gram-Schmidt variant. For deal.II's own
* vectors, there is no additional cost compared to the classical
* Gram-Schmidt algorithm, because the second orthogonalization step is
* done on cached data. For these beneficial reasons, this is the default
* algorithm in the SolverGMRES class.
*/
delayed_classical_gram_schmidt
};
} // namespace LinearAlgebra

Expand Down