JuliaDiff / JuliaDiff/SparseMatrixColorings.jl
Optimized decompression for specific matrix types
Nobody has claimed this yet.
- Dominant language
- Julia
- Stars
- 45
- Forks
- 11
- Avg merge
- 1h 35m
- Merged PRs (30d)
- 3
Description
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. - BandedMatrices.jl, BlockBandedMatrices.jl
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.
Related:
- #65
- #44
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the existing SparseMatrixCSC decompression path for :direct mode, then review related issues #65 and #44. The proposed direction is to decompress into a SparseMatrixCSC buffer and copy into other matrix types, but the supported matrix types and completion criteria still need to be decided.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- julia
- Domain
- data, performance
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100