From my reading of the SuiteSparse: In order to use one of the direct solvers, the CSC sparse matrix is converted to an internal type,
Sparse. Unfortunately, at that point the memory used for the matrix is duplicated because SuiteSparse uses its internal storage to operate on the matrix.
If this is true, it really becomes a prohibiting factor when dealing with large systems of coupled linear algebraic equations. What is the solution? I don’t know, but I suspect that a true Julia-only solver would need to be written.
Do you have some examples where this causes a memory issue? Usually, the factorizations of sparse matrices have fill in, which gets worse with larger matrices - and so this extra copy is not really a problem.
I suppose you can
decrement! in place yourself, call the solver API directly and then
increment! again afterwards - but be sure it is worthwhile to do that.
Writing supernodal or multifrontal sparse solvers is a lot of effort - instead just doing what I suggested above is trivial, if necessary. While it is likely a pure Julia left looking solver may come up soon (and is valuable in many situations), it only makes sense to use if your problems have very little structure.