JuliaLinearAlgebra / ArnoldiMethod.jl

The Arnoldi Method with Krylov-Schur restart, natively in Julia.
https://julialinearalgebra.github.io/ArnoldiMethod.jl/dev
MIT License
96 stars 18 forks source link

Support starting vec #141

Closed haampie closed 7 months ago

haampie commented 7 months ago

Closes #91

This allows

partialschur(rand(100, 100) v1=rand(100))

Just V, V_tmp, H and Q are in ArnoldiWorkspace. Further allocations are one-dimensional and tiny (and actually the householder reflector can be computed in-place in H now #139 is merged)

As a follow-up, partialschur(A, ::ArnoldiWorkspace) could be implemented to let users allocate themselves, which is also useful for supporting GPU arrays. I think easiest would be with unified memory, cause then I don't really have to sprinkle copies to and from GPU around.

codecov[bot] commented 7 months ago

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (55a09aa) 95.73% compared to head (255b8f1) 96.69%.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## master #141 +/- ## ========================================== + Coverage 95.73% 96.69% +0.95% ========================================== Files 10 10 Lines 845 787 -58 ========================================== - Hits 809 761 -48 + Misses 36 26 -10 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.