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//! - [`fn@sptrsv`] -- Sparse triangular solve (L*x = b or U*x = b)
9//! - [`fn@sddmm`] -- Sampled Dense-Dense Matrix Multiply
10//! - [`krylov`] -- Krylov subspace methods (Lanczos & Arnoldi iteration)
11//! - [`matrix_powers`] -- Sparse matrix powers (A^k) and polynomial evaluation
12
13pub mod auto_spmv;
14pub mod batched;
15pub mod krylov;
16pub mod matrix_powers;
17pub mod mixed_precision_spmv;
18pub mod sddmm;
19pub mod spgemm;
20pub mod spgemm_estimate;
21pub mod spgemm_merge;
22pub mod spmm;
23pub mod spmv;
24pub mod spmv_bsr;
25pub mod spmv_csr5;
26pub mod spmv_ell;
27pub mod sptrsv;
28pub mod tensor;
29
30pub use auto_spmv::{
31    RecommendedFormat, SpMatFormat, analyze_sparsity, auto_spmv, recommend_format, select_format,
32};
33pub use batched::{
34    BatchScheduler, BatchedSpGEMM, BatchedSpMV, BatchedSpMVPlan, BatchedTriSolve, Strategy,
35    UniformBatchedSpMV, batched_spmv_cpu, generate_batched_spmv_ptx, mixed_precision_spmv_cpu,
36};
37pub use krylov::{
38    ArnoldiConfig, ArnoldiPlan, ArnoldiResult, EigenTarget, LanczosConfig, LanczosPlan,
39    LanczosResult,
40};
41pub use matrix_powers::{
42    MatrixPowerConfig, MatrixPowerResult, estimate_power_nnz, sparse_identity,
43    sparse_matrix_polynomial, sparse_matrix_power,
44};
45pub use mixed_precision_spmv::{
46    ComputePrecision, MixedPrecisionConfig, MixedPrecisionPlan, MixedPrecisionStats, MixedSpMVAlgo,
47    StoragePrecision, estimate_precision_loss, generate_mixed_scalar_spmv_ptx,
48    generate_mixed_vector_spmv_ptx, generate_packed_vector_spmv_ptx, plan_mixed_precision_spmv,
49    validate_mixed_precision_config,
50};
51pub use sddmm::sddmm;
52pub use spgemm::{spgemm_numeric, spgemm_symbolic};
53pub use spgemm_estimate::{
54    EstimationMethod, SpGEMMEstimate, auto_estimate_spgemm, count_nnz_exact, estimate_nnz_sampling,
55    estimate_nnz_upper_bound, estimate_spgemm_memory,
56};
57pub use spgemm_merge::spgemm_merge;
58pub use spmm::spmm;
59pub use spmv::{SpMVAlgo, spmv};
60pub use spmv_bsr::spmv_bsr;
61pub use spmv_csr5::csr5_spmv;
62pub use spmv_ell::spmv_ell;
63pub use sptrsv::sptrsv;
64pub use tensor::{
65    EdgeFeatures, GnnSparseConfig, MessagePassingOp, add_self_loops, compute_degree_matrix, gather,
66    scatter_reduce, sparse_attention_message, sparse_message_passing, sparse_row_softmax,
67    symmetric_normalize,
68};