pub struct BatchedSpGEMM { /* private fields */ }Expand description
Batched sparse-sparse matrix multiplication.
Computes C_i = A_i * B_i for a batch of sparse matrix pairs.
The baseline runs each SpGEMM independently on the host using a
hash-table accumulation approach.
Implementations§
Source§impl BatchedSpGEMM
impl BatchedSpGEMM
Sourcepub fn execute<T: GpuFloat + Add<Output = T> + Mul<Output = T> + AddAssign>(
a_batch: &[CsrMatrix<T>],
b_batch: &[CsrMatrix<T>],
) -> SparseResult<Vec<(Vec<i32>, Vec<i32>, Vec<T>, u32, u32)>>
pub fn execute<T: GpuFloat + Add<Output = T> + Mul<Output = T> + AddAssign>( a_batch: &[CsrMatrix<T>], b_batch: &[CsrMatrix<T>], ) -> SparseResult<Vec<(Vec<i32>, Vec<i32>, Vec<T>, u32, u32)>>
Execute batched SpGEMM on the host.
For each pair (A_i, B_i), computes C_i = A_i * B_i using a
row-by-row hash-table accumulation.
Returns host-side CSR triples (row_ptr, col_idx, values) for each
result matrix.
§Errors
Returns SparseError::InvalidArgument if batch sizes differ or are empty.
Returns SparseError::DimensionMismatch if dimensions are incompatible.
Returns SparseError::Cuda on download failure.
Sourcepub fn execute_host<T: GpuFloat + Add<Output = T> + Mul<Output = T> + AddAssign>(
a_row_ptrs: &[Vec<i32>],
a_col_indices: &[Vec<i32>],
a_values: &[Vec<T>],
a_rows: &[usize],
a_cols: &[usize],
b_row_ptrs: &[Vec<i32>],
b_col_indices: &[Vec<i32>],
b_values: &[Vec<T>],
b_cols: &[usize],
) -> SparseResult<Vec<(Vec<i32>, Vec<i32>, Vec<T>, usize, usize)>>
pub fn execute_host<T: GpuFloat + Add<Output = T> + Mul<Output = T> + AddAssign>( a_row_ptrs: &[Vec<i32>], a_col_indices: &[Vec<i32>], a_values: &[Vec<T>], a_rows: &[usize], a_cols: &[usize], b_row_ptrs: &[Vec<i32>], b_col_indices: &[Vec<i32>], b_values: &[Vec<T>], b_cols: &[usize], ) -> SparseResult<Vec<(Vec<i32>, Vec<i32>, Vec<T>, usize, usize)>>
Execute batched SpGEMM from host-side CSR arrays (no GPU required).
§Errors
Returns SparseError::InvalidArgument on length mismatch.
Returns SparseError::DimensionMismatch on dimension mismatch.