The main change in this PR (at the moment) is to redesign the testing framework for sketching. The new framework is able to test correctness of abstract linear operators that can be applied in the same way that a sketching operator might be applied in sketch_general. I've updated test_sketch_gef[X][Y] (where [X] is the side, left or right, and [Y] is the type of operator, dense or sparse) so that they're basically tiny wrappers around calls to the functions in the new testing framework. It remains to write tests for sparse data matrices that utilize this framework.
A minor (but still very consequential) change in this PR is to change our required standard to C++20. This lets us use template concepts.
This PR also changes the signature for sketch_vector so that it more closely follows GEMV. While making that change I noticed that documentation in the overload of sketch_general which set (i_off, j_off) = (0, 0) wasn't quite correct. It said that it applied op(S), when it still allowed op(submat(S)) provided submat(S) is a leading principal submatrix. I've changed this overload to raise an error if the declared dimensions ((d,n,m) or (m, d, n)) suggest that we'd work with submat(S) and not all of S.
The main change in this PR (at the moment) is to redesign the testing framework for sketching. The new framework is able to test correctness of abstract linear operators that can be applied in the same way that a sketching operator might be applied in
sketch_general
. I've updatedtest_sketch_gef[X][Y]
(where[X]
is the side, left or right, and[Y]
is the type of operator, dense or sparse) so that they're basically tiny wrappers around calls to the functions in the new testing framework. It remains to write tests for sparse data matrices that utilize this framework.A minor (but still very consequential) change in this PR is to change our required standard to C++20. This lets us use template concepts.
This PR also changes the signature for
sketch_vector
so that it more closely follows GEMV. While making that change I noticed that documentation in the overload ofsketch_general
which set(i_off, j_off) = (0, 0)
wasn't quite correct. It said that it appliedop(S)
, when it still allowedop(submat(S))
providedsubmat(S)
is a leading principal submatrix. I've changed this overload to raise an error if the declared dimensions ((d,n,m)
or(m, d, n)
) suggest that we'd work withsubmat(S)
and not all ofS
.