Skip to main content

oxicuda_sparse/ops/
mod.rs

1//! Sparse matrix operations.
2//!
3//! This module provides GPU-accelerated sparse matrix operations:
4//!
5//! - [`fn@spmv`] -- Sparse matrix-vector multiplication (y = alpha*A*x + beta*y)
6//! - [`fn@spmm`] -- Sparse matrix-dense matrix multiplication (C = alpha*A*B + beta*C)
7//! - [`spgemm`] -- Sparse matrix-sparse matrix multiplication (C = A*B)
8//! - [`mod@spgemm_symbolic`] -- Gustavson symbolic SpGEMM: the sparsity pattern
9//!   of `C = A*B` (host CSR, values not computed)
10//! - [`fn@sptrsv`] -- Sparse triangular solve (L*x = b or U*x = b)
11//! - [`fn@sddmm`] -- Sampled Dense-Dense Matrix Multiply
12//! - [`krylov`] -- Krylov subspace methods (Lanczos & Arnoldi iteration)
13//! - [`matrix_powers`] -- Sparse matrix powers (A^k) and polynomial evaluation
14
15pub mod auto_spmv;
16pub mod batched;
17pub mod krylov;
18pub mod matrix_powers;
19pub mod mixed_precision_spmv;
20pub mod sddmm;
21pub mod spgemm;
22pub mod spgemm_estimate;
23pub mod spgemm_merge;
24pub mod spgemm_symbolic;
25pub mod spmm;
26pub mod spmv;
27pub mod spmv_bsr;
28pub mod spmv_csr5;
29pub mod spmv_ell;
30pub mod sptrsv;
31pub mod tensor;
32
33pub use auto_spmv::{
34    RecommendedFormat, SpMatFormat, analyze_sparsity, auto_spmv, recommend_format, select_format,
35};
36pub use batched::{
37    BatchScheduler, BatchedSpGEMM, BatchedSpMV, BatchedSpMVPlan, BatchedTriSolve, Strategy,
38    UniformBatchedSpMV, batched_spmv_cpu, generate_batched_spmv_ptx, mixed_precision_spmv_cpu,
39};
40pub use krylov::{
41    ArnoldiConfig, ArnoldiPlan, ArnoldiResult, EigenTarget, LanczosConfig, LanczosPlan,
42    LanczosResult,
43};
44pub use matrix_powers::{
45    MatrixPowerConfig, MatrixPowerResult, estimate_power_nnz, sparse_identity,
46    sparse_matrix_polynomial, sparse_matrix_power,
47};
48pub use mixed_precision_spmv::{
49    ComputePrecision, MixedPrecisionConfig, MixedPrecisionPlan, MixedPrecisionStats, MixedSpMVAlgo,
50    StoragePrecision, estimate_precision_loss, generate_mixed_scalar_spmv_ptx,
51    generate_mixed_vector_spmv_ptx, generate_packed_vector_spmv_ptx, plan_mixed_precision_spmv,
52    validate_mixed_precision_config,
53};
54pub use sddmm::sddmm;
55pub use spgemm::{spgemm_numeric, spgemm_symbolic};
56pub use spgemm_estimate::{
57    EstimationMethod, SpGEMMEstimate, auto_estimate_spgemm, count_nnz_exact, estimate_nnz_sampling,
58    estimate_nnz_upper_bound, estimate_spgemm_memory,
59};
60pub use spgemm_merge::spgemm_merge;
61pub use spgemm_symbolic::{SymbolicPattern, spgemm_symbolic_pattern};
62pub use spmm::spmm;
63pub use spmv::{SpMVAlgo, spmv};
64pub use spmv_bsr::spmv_bsr;
65pub use spmv_csr5::csr5_spmv;
66pub use spmv_ell::spmv_ell;
67pub use sptrsv::sptrsv;
68pub use tensor::{
69    EdgeFeatures, GnnSparseConfig, MessagePassingOp, add_self_loops, compute_degree_matrix, gather,
70    scatter_reduce, sparse_attention_message, sparse_message_passing, sparse_row_softmax,
71    symmetric_normalize,
72};