Crate oxiblas_sparse

Crate oxiblas_sparse 

Source
Expand description

OxiBLAS Sparse - Sparse matrix support.

This crate provides sparse matrix formats and operations:

  • CSR: Compressed Sparse Row format
  • CSC: Compressed Sparse Column format
  • COO: Coordinate format (for construction)
  • DIA: Diagonal format (for banded matrices)
  • ELL: ELLPACK format (for GPU computation)
  • BSR: Block Sparse Row format (for block-structured matrices)
  • BSC: Block Sparse Column format (for column-oriented block structure)
  • HYB: Hybrid ELL+COO format (for irregular sparsity patterns)
  • SELL: Sliced ELLPACK format (for GPU-optimized row-variable matrices)

§Sparse Matrix Formats

§CSR (Compressed Sparse Row)

Efficient for row-wise operations and matrix-vector products. Stores values row by row.

§CSC (Compressed Sparse Column)

Efficient for column-wise operations and direct solvers. Stores values column by column.

§DIA (Diagonal)

Efficient for banded matrices (tridiagonal, pentadiagonal, etc.). Stores diagonals explicitly.

§ELL (ELLPACK)

Efficient for GPU computation with uniform row lengths. Fixed number of entries per row.

§BSR (Block Sparse Row)

Efficient for block-structured matrices (FEM, etc.). Stores dense blocks in CSR-like structure.

§Example

use oxiblas_sparse::{CsrMatrix, CscMatrix, DiaMatrix, EllMatrix, BsrMatrix};

// Create a sparse matrix in CSR format
// [1 0 2]
// [0 3 0]
// [4 0 5]
let values = vec![1.0, 2.0, 3.0, 4.0, 5.0];
let col_indices = vec![0, 2, 1, 0, 2];
let row_ptrs = vec![0, 2, 3, 5];

let csr = CsrMatrix::new(3, 3, row_ptrs, col_indices, values).unwrap();
assert_eq!(csr.nnz(), 5);

// Convert to CSC
let csc = csr.to_csc();
assert_eq!(csc.nnz(), 5);

// Create a tridiagonal matrix in DIA format
let sub = vec![1.0, 1.0];
let main = vec![2.0, 2.0, 2.0];
let super_diag = vec![1.0, 1.0];
let dia = DiaMatrix::tridiagonal(sub, main, super_diag).unwrap();
assert_eq!(dia.ndiag(), 3);

Re-exports§

pub use bsc::BscError;
pub use bsc::BscMatrix;
pub use bsr::BsrError;
pub use bsr::BsrMatrix;
pub use bsr::DenseBlock;
pub use convert::RecommendedFormat;
pub use convert::SparsityAnalysis;
pub use convert::analyze_sparsity_pattern;
pub use convert::bsc_to_bsr;
pub use convert::bsc_to_csr;
pub use convert::bsr_to_bsc;
pub use convert::bsr_to_csr;
pub use convert::bsr_to_dia;
pub use convert::bsr_to_ell;
pub use convert::coo_to_csc;
pub use convert::coo_to_csr;
pub use convert::csc_to_coo;
pub use convert::csc_to_csr;
pub use convert::csr_to_bsc;
pub use convert::csr_to_bsr;
pub use convert::csr_to_coo;
pub use convert::csr_to_csc;
pub use convert::csr_to_dia;
pub use convert::csr_to_ell;
pub use convert::csr_to_hyb;
pub use convert::csr_to_sell;
pub use convert::dia_to_bsr;
pub use convert::dia_to_csr;
pub use convert::dia_to_ell;
pub use convert::ell_to_bsr;
pub use convert::ell_to_csr;
pub use convert::ell_to_dia;
pub use convert::ell_to_hyb;
pub use convert::hyb_to_csr;
pub use convert::hyb_to_ell;
pub use convert::sell_to_csr;
pub use coo::CooMatrix;
pub use coo::CooMatrixBuilder;
pub use csc::CscMatrix;
pub use csr::CsrMatrix;
pub use dia::DiaError;
pub use dia::DiaMatrix;
pub use ell::EllError;
pub use ell::EllMatrix;
pub use graph::BandwidthProfileResult;
pub use graph::BipartiteMatchingResult;
pub use graph::BipartiteResult;
pub use graph::ConnectedComponentsResult;
pub use graph::LevelSetResult;
pub use graph::PartitionResult;
pub use graph::WeightedMatchingResult;
pub use graph::bandwidth_profile;
pub use graph::bandwidth_profile_csc;
pub use graph::bipartite_matching;
pub use graph::connected_components;
pub use graph::connected_components_csc;
pub use graph::degree_sequence;
pub use graph::is_bipartite;
pub use graph::is_structurally_symmetric;
pub use graph::level_sets;
pub use graph::partition_graph_bisect;
pub use graph::partition_graph_kway;
pub use graph::pseudo_peripheral_vertex;
pub use graph::weighted_bipartite_matching;
pub use hyb::HybError;
pub use hyb::HybMatrix;
pub use hyb::HybStats;
pub use hyb::HybWidthStrategy;
pub use mtx::MtxError;
pub use mtx::MtxField;
pub use mtx::MtxFormat;
pub use mtx::MtxHeader;
pub use mtx::MtxObject;
pub use mtx::MtxSymmetry;
pub use mtx::read_matrix_market;
pub use mtx::read_matrix_market_coo;
pub use mtx::read_matrix_market_str;
pub use mtx::write_matrix_market;
pub use mtx::write_matrix_market_str;
pub use mtx::write_matrix_market_symmetric;
pub use sell::SellError;
pub use sell::SellMatrix;
pub use sell::SellStats;
pub use sell::SliceSize;

Modules§

bsc
Block Sparse Column (BSC) matrix format.
bsr
Block Sparse Row (BSR) matrix format.
convert
Format conversion utilities for sparse matrices.
coo
Coordinate (COO) format for sparse matrices.
csc
Compressed Sparse Column (CSC) matrix format.
csr
Compressed Sparse Row (CSR) matrix format.
dia
Diagonal (DIA) sparse matrix format.
ell
ELLPACK (ELL) sparse matrix format.
graph
Auto-generated module structure
hyb
Hybrid ELL+COO (HYB) matrix format.
linalg
Sparse linear algebra operations.
mtx
Matrix Market format support.
ops
Auto-generated module structure
prelude
Prelude module for convenient imports.
sell
Sliced ELLPACK (SELL) matrix format.