I implemented a wapper to do in-place solves for sparse Cholesky factorizations (i.e A_ldiv_B!) in https://github.com/mfalt/CholmodSolve2.jl (which is now registered in METADATA)
This could be be used in LeastSquaresDirect here: https://github.com/kul-forbes/ProximalOperators.jl/blob/07df4b3b391d5dac71cfde61470e8919f090baec/src/functions/leastSquaresDirect.jl#L103
and probably here: https://github.com/kul-forbes/ProximalOperators.jl/blob/07df4b3b391d5dac71cfde61470e8919f090baec/src/functions/leastSquaresDirect.jl#L107
to avoid allocations completely (well O(1) allocations even on multiple calls).
The same is true for QuadraticDirect. Are there any other places in the code where we use sparse Cholesky?
EDIT: I guess IndGraphSparse
It seems like epicompose.jl, indGraphFat.jl and indGraphSkinny.jl only has dense implementations, did we have a reason for this? could also have a sparse implementation.
I implemented a wapper to do in-place solves for sparse Cholesky factorizations (i.e
A_ldiv_B!) in https://github.com/mfalt/CholmodSolve2.jl (which is now registered in METADATA)This could be be used in LeastSquaresDirect here: https://github.com/kul-forbes/ProximalOperators.jl/blob/07df4b3b391d5dac71cfde61470e8919f090baec/src/functions/leastSquaresDirect.jl#L103
and probably here: https://github.com/kul-forbes/ProximalOperators.jl/blob/07df4b3b391d5dac71cfde61470e8919f090baec/src/functions/leastSquaresDirect.jl#L107
to avoid allocations completely (well O(1) allocations even on multiple calls).
The same is true for
QuadraticDirect. Are there any other places in the code where we use sparse Cholesky?EDIT: I guess
IndGraphSparseIt seems like
epicompose.jl,could also have a sparse implementation.indGraphFat.jlandindGraphSkinny.jlonly has dense implementations, did we have a reason for this?