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

Optimise solvers #106

Merged
merged 62 commits into from
Oct 4, 2022
Merged

Optimise solvers #106

merged 62 commits into from
Oct 4, 2022

Conversation

eprovst
Copy link
Collaborator

@eprovst eprovst commented Sep 20, 2022

PR description

Overall improvements of Legolas, mainly with respect to optimising the eigensolvers.

To do

  • Rebase on develop, so a merge is possible.
  • Computation of residuals needs to be optimised.
  • Documentation needs to be updated.
  • Tests need to be added for inverse vector iteration.
  • Tests need to be added for QR-cholesky.
  • QR-cholesky's results have to be normalized.
  • QR-invert and QR-cholesky need to be merged.
  • Techniques of QR-cholesky need to be applied to Arnoldi.
  • Sparse matrices need to be immediately converted to banded, instead of going through dense.

New features

Legolas

  • More compile time optimizations for release builds.
  • Faster QZ-direct.
  • QZ-direct now gives eigenvectors.
  • Faster QR-invert.
  • New QR-cholesky.
  • New inverse-iteration.
  • Much faster Arnoldi.
  • Output of eigenvectors.
  • Computation and output of residuals.
  • Timing logs of eigensolvers.
  • Some ease of use fixes with regard to parfiles.
  • Tolerance of iterative methods can now be set.

Pylbo

  • Reading eigenvectors.
  • Reading residuals.

Bugfixes

Legolas

  • Arnoldi now works for only a couple of eigenvalues.
  • Greatly reduced numerical error in some cases.

Checklist

  • all tests pass (and for new features, new tests are added)
  • documentation has been updated (if applicable)

@eprovst eprovst marked this pull request as draft September 20, 2022 14:56
@eprovst
Copy link
Collaborator Author

eprovst commented Sep 21, 2022

Note: I'm currently rebasing my changes on the develop branch. This will likely involve some forced pushes. Arnoldi diverged the most and hence will see the most changes.

@n-claes n-claes added feature Implementation of a new feature legolas-backend Under-the-hood changes to Legolas performance Affects performance refactor Refactoring existing code labels Sep 22, 2022
@codecov
Copy link

codecov bot commented Oct 4, 2022

Codecov Report

Merging #106 (7c39a20) into develop (2819e9e) will decrease coverage by 0.85%.
The diff coverage is 81.91%.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop     #106      +/-   ##
===========================================
- Coverage    88.74%   87.89%   -0.86%     
===========================================
  Files          112      115       +3     
  Lines         6470     6659     +189     
===========================================
+ Hits          5742     5853     +111     
- Misses         728      806      +78     
Flag Coverage Δ
legolas 90.53% <90.43%> (-0.52%) ⬇️
pylbo 81.89% <28.84%> (-1.66%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

@n-claes n-claes marked this pull request as ready for review October 4, 2022 12:33
@n-claes n-claes changed the title [WIP] Optimise solvers Optimise solvers Oct 4, 2022
@n-claes
Copy link
Owner

n-claes commented Oct 4, 2022

Open todo-tasks can go in a separate PR, merging this so we can start rebasing and integrating other branches into develop as well.

@n-claes n-claes merged commit fb1dd1b into develop Oct 4, 2022
@n-claes n-claes deleted the optim/solvers branch December 8, 2022 14:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature Implementation of a new feature legolas-backend Under-the-hood changes to Legolas performance Affects performance refactor Refactoring existing code
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Segmentation fault for gcc <= 8 Error of "znaupd: starting vector is zero, try rerunning?"
2 participants