The secondi, firsti, and overlapi choices for the multiplication part of a semiring were added while working on https://github.com/metagraph-dev/mlir-graphblas/pull/224/. This happened while we were in the middle of converting our FileCheck tests from syntax/translation-checking tests into functional tests. Thus, the task of creating functional tests for secondi, firsti, and overlapi was put on hold.
At some point, we should add functional tests for secondi, firsti, and overlapi.
These tests should:
[ ] Allow us to have the output tensor have an integer or floating point type regardless of what the input tensors' types are.
[ ] Verify behavior of all combinations of {mat,vec} x {mat,vec}.
[ ] Verify that the behavior of matrix multiply fusions with secondi, firsti, and overlapi are sane.
Additionally, it'll be nice to:
[ ] Sanity check that our docs are updated with more explanation of how secondi, firsti, and overlapi work (especially with the different output tensor types).
[ ] Add more verification to the verifier for MatrixMultiplyGenericOp (e.g. checking that each block has the correct number of arguments, argument types, etc. ; ExtensionBlocks::extractBlocks is a great place to start doing this or investigating this).
The
secondi
,firsti
, andoverlapi
choices for the multiplication part of a semiring were added while working on https://github.com/metagraph-dev/mlir-graphblas/pull/224/. This happened while we were in the middle of converting our FileCheck tests from syntax/translation-checking tests into functional tests. Thus, the task of creating functional tests forsecondi
,firsti
, andoverlapi
was put on hold.At some point, we should add functional tests for
secondi
,firsti
, andoverlapi
.These tests should:
{mat,vec} x {mat,vec}
.secondi
,firsti
, andoverlapi
are sane.Additionally, it'll be nice to:
secondi
,firsti
, andoverlapi
work (especially with the different output tensor types).MatrixMultiplyGenericOp
(e.g. checking that each block has the correct number of arguments, argument types, etc. ;ExtensionBlocks::extractBlocks
is a great place to start doing this or investigating this).