numr 0.5.2

High-performance numerical computing with multi-backend GPU acceleration (CPU/CUDA/WebGPU)
Documentation
//! Sparse operations implementation for CPU runtime
//!
//! This module implements the SparseOps trait for CpuRuntime, providing
//! CPU-based sparse matrix operations.

use super::{CpuClient, CpuRuntime};
use crate::error::Result;
use crate::tensor::Tensor;

// Submodules
mod dsmm;
mod esc_spgemm;
mod format_convert;
mod high_level_ops;
mod iterative;
mod linalg;
pub(crate) mod merge;
mod sparse_highlevel;
#[cfg(test)]
mod tests;

// Re-export merge types for use via path in fallback.rs (e.g. cpu::sparse::MergeStrategy)
// Lint false positive: accessed via path resolution, not `use` imports
#[allow(unused_imports)]
pub(crate) use merge::{MergeStrategy, OperationSemantics, merge_coo_impl, merge_csc_impl};

// ============================================================================
// SparseAlgorithms Trait Implementation (Backend Parity Contract)
// ============================================================================

impl crate::algorithm::sparse::SparseAlgorithms<CpuRuntime> for CpuClient {
    fn esc_spgemm_csr(
        &self,
        a_csr: &crate::sparse::CsrData<CpuRuntime>,
        b_csr: &crate::sparse::CsrData<CpuRuntime>,
    ) -> Result<crate::sparse::CsrData<CpuRuntime>> {
        esc_spgemm::esc_spgemm_csr(self, a_csr, b_csr)
    }

    fn column_parallel_dsmm(
        &self,
        dense_a: &Tensor<CpuRuntime>,
        sparse_b_csc: &crate::sparse::CscData<CpuRuntime>,
    ) -> Result<Tensor<CpuRuntime>> {
        dsmm::column_parallel_dsmm(self, dense_a, sparse_b_csc)
    }
}