Cholmod In-place Solvers


I noticed that Base.SparseArrays.CHOLMOD define

(\), A_mul_Bc, A_mul_Bt, Ac_ldiv_B, Ac_mul_B, At_ldiv_B, At_mul_B

but none of the in-place variants. Does the CHOLMOD package not support in-place?

It would be nice to hove in-place variants since in some cases, when the sparse factors are very simple, the allocation is actually more overhead than the solve. (but I need many, hence the concern)


This is not exactly what you requested, but I wrote some in-place forward/backward substitution routines that can be used with the Cholesky factorization from SparseSuite. I also wrote a sparse rank-determination routine based on the SparseSuite “squeezed QR factorization.” I’m not really supporting this code, since it is for my personal use, but you are welcome to grab anything helpful from it (MIT License):


thanks for this, I’ll try it out. But as you wrote your own, it seems to confirm that no in-place solvers are available in CHOLMOD?


Since none of the core Julia developers have answered this thread, I’ll give you my impression of the state of affairs. Right now Julia exposes and documents a few of the most useful capabilities of SuiteSparse. The remaining capabilities, also quite useful, are available via low-level wrappers that require reading the SuiteSparse documentation or even the code. The core developers seem to agree that it would be useful to have more of the capabilities of SuiteSparse wrapped in a user-friendly way and documented in Julia, but this task is not a high priority for inclusion in 0.6.


Where is this though on the priority list compared with re-implementing those factorisations in pure Julia?