Main change: Native support for multiplication with CSC and CSR. (Before this PR, our sparse matrix multiplication only allowed COO, which basically converted to CSC without the CSCMatrix abstraction.)
New files in sparse_data folder.
csc_multiply.hh. Kernel pulled from coo_multiply.hh.
csr_multiply.hh. Kernel implemented from scratch.
spgemm.hh. Dispatcher functions akin to sketch_general.
Updates to files in sparse_data folder.
conversions.hh now includes transposition functions (view-based or copy-based) from CSC to CSR and from CSR to CSC.
Updated CSC, CSR, COO classes so that if SpMatrix is one of these classes then we can access the numerical type withSpMatrix::scalar_t and we can access the index type with SpMatrix::index_t.
"Move-constructors" for CSC, CSR, and COO matrices.
This PR also restructures testing infrastructure for sparse data matrices. The restructuring was based on more effective use of templates to reduce code duplication when defining test classes.
Main change: Native support for multiplication with CSC and CSR. (Before this PR, our sparse matrix multiplication only allowed COO, which basically converted to CSC without the CSCMatrix abstraction.)
New files in sparse_data folder.
Updates to files in sparse_data folder.
SpMatrix
is one of these classes then we can access the numerical type withSpMatrix::scalar_t
and we can access the index type withSpMatrix::index_t
.This PR also restructures testing infrastructure for sparse data matrices. The restructuring was based on more effective use of templates to reduce code duplication when defining test classes.