Function sprs::smmp::mul_csr_csr_with_workspace
source · pub fn mul_csr_csr_with_workspace<N, A, B, I, Iptr>(
lhs: CsMatViewI<'_, A, I, Iptr>,
rhs: CsMatViewI<'_, B, I, Iptr>,
seens: &mut [Box<[bool]>],
tmps: &mut [Box<[N]>]
) -> CsMatI<N, I, Iptr>where
N: MulAcc<A, B> + Zero + Clone + Send + Sync,
A: Send + Sync,
B: Send + Sync,
I: SpIndex,
Iptr: SpIndex,
Expand description
Compute a sparse matrix product using the SMMP routines, using temporary storage that was already allocated
seens
and tmps
are temporary storage vectors used to accumulate non
zero locations and values. Their values need not be specified on input.
They will be zero on output. They are slices of boxed slices, where the
outer slice is there to give mutliple workspaces for multi-threading.
Therefore, seens.len()
controls the number of threads used for symbolic
computation, and tmps.len()
the number of threads for numeric computation.
Panics
- if
lhs.cols() != rhs.rows()
. - if
seens.len() == 0
- if
tmps.len() == 0
- if
seens[i].len() != lhs.cols().max(lhs.rows()).max(rhs.cols())
- if
tmps[i].len() != lhs.cols().max(lhs.rows()).max(rhs.cols())