At the moment, our only optimized decompression is for SparseMatrixCSC in :direct mode: we store a vector of compressed_indices such that nonzeros(A) = vec(B)[compressed_indices].
We can probably find a similar optimization for :substitution mode.
What do we want to do for other matrix types, like:
the ones from LinearAlgebra: Bidiagonal, Tridiagonal, Symmetric, etc.
It would be rather tiring to find optimal decompression methods for each of these. My proposal (as a first step) would be to always have a SparseMatrixCSC buffer into which we decompress, and then copy the A_buffer::SparseMatrixCSC into A::SomeWeirdMatrix.
Essentially, it's easier to implement fast copy from SparseMatrixCSC than fast decompression.
At the moment, our only optimized decompression is for
SparseMatrixCSC
in:direct
mode: we store a vector ofcompressed_indices
such thatnonzeros(A) = vec(B)[compressed_indices]
. We can probably find a similar optimization for:substitution
mode.What do we want to do for other matrix types, like:
LinearAlgebra
:Bidiagonal
,Tridiagonal
,Symmetric
, etc.It would be rather tiring to find optimal decompression methods for each of these. My proposal (as a first step) would be to always have a
SparseMatrixCSC
buffer into which we decompress, and then copy theA_buffer::SparseMatrixCSC
intoA::SomeWeirdMatrix
. Essentially, it's easier to implement fast copy fromSparseMatrixCSC
than fast decompression.Related:
65
44