Julia's Extended Sparse Array Interface

The following ArrayInterface functions extend Julia's Base LinearAlgebra interface to improve the ability to do sparse linear algebra.

Sparse Indexing

These routines allow for improving sparse iteration and indexing.

ArrayInterface.findstructralnzFunction
findstructralnz(x::AbstractArray)

Return: (I,J) #indexable objects Find sparsity pattern of special matrices, the same as the first two elements of findnz(::SparseMatrixCSC).

source

Matrix Coloring

Many routines require calculating the coloring of a matrix, such as for sparse differentation. The matrix_colors function is the high level function which returns a color vector Vector{Int} with the column colors. This function is overloaded for many special matrix types with analytical solutions for the matrix colors.

ArrayInterface.matrix_colorsFunction
matrix_colors(A::Union{Array,UpperTriangular,LowerTriangular})

The color vector for dense matrix and triangular matrix is simply [1,2,3,..., Base.size(A,2)].

source

General Matrix Colors

For the general dispatch of matrix_colors, see SparseDiffTools.jl for a full graph-based coloring algorithm which extends ArrayInterface.

Addtional Sparse Array Interface Tools

If dealing with general sparse arrays, consider:

  • SparseDiffTools.jl: A general set of tools for extending calculus libraries for sparse optimizations.
  • LinearSolve.jl: An extended linear solving library with support for generic sparse arrays.