-
-
Notifications
You must be signed in to change notification settings - Fork 71
Description
What kind of problems is it mostly used for? Please describe.
SPD matrices. I know there's already CholeskyFactorization
, BunchKaufmanFactorization
and CHOLMODFactorization
. But none of these call ldlt
first (as far as I understand, CHOLMODFactorization
only calls it if cholesky
fails.) I'm mainly interested in this because my application sometimes involves SymTridiagonal
matrices, for which ldlt
has a brutally fast specialized implementation.
I opened #671 a while ago, the solution to which apparently involved an algorithm that just calls ldiv!
. Looking at the ldiv implementation for SymTridiagonal, this literally just delegates to ldlt
. So we can save compute here if we just cache the ldlt
result and use that for all future solves.
Describe the algorithm you’d like
An algorithm that literally just calls Julia's built-in ldlt
and saves the resulting factorisation in the cache, reusing it for future solves. The default algorithm should use this new LDLTFactorization
algorithm if it detects a SymTridiagonal
matrix.
Other implementations to know about
/
References
/
If there's interest in this, I can try to contribute. Personally I'd be very interested in this as otherwise I'd have to come up with a hacky workaround to sidestep LinearSolve.jl somehow.