Pressio / pressio

core C++ library
Other
45 stars 7 forks source link

ops: revise tpetra block matrix-vector product #506

Closed mzuzek closed 1 year ago

mzuzek commented 1 year ago

refs #446

mzuzek commented 1 year ago

@fnrizzi

Overloads

For y = alpha * op(A) * x + beta * y there are level-2 pressio::ops::product() implementations:

A x y mode
Tpetra::BlockMultiVector Teuchos::SerialDenseVector Tpetra::BlockVector nontranspose
Tpetra::BlockMultiVector Eigen vector or expression Tpetra::BlockVector nontranspose
Tpetra::BlockMultiVector Kokkos vector or expression Tpetra::BlockVector nontranspose
Tpetra::BlockMultiVector Tpetra::BlockVector Eigen vector or expression transpose
Tpetra::BlockMultiVector Tpetra::BlockVector Kokkos vector or expression transpose

Note: unlike in Epetra, there is no overload storing in Teuchos vector

Test coverage

Epetra level-2 implementations of pressio::ops::product() are tested with (A is always Tpetra::BlockMultiVector in all tests):

test x y mode
ops_tpetra_block.mv_prod_teuchos_vector Teuchos vector Tpetra::BlockVector nontranspose
ops_tpetra_block.mv_prod_eigen_vector Eigen vector Tpetra::BlockVector nontranspose
ops_tpetra_block.mv_prod_eigen_span Eigen span Tpetra::BlockVector nontranspose
ops_tpetra_block.mv_prod_eigen_diag Eigen diag Tpetra::BlockVector nontranspose
ops_tpetra_block.mv_prod_eigen_vector Kokkos vector Tpetra::BlockVector nontranspose
ops_tpetra_block.mv_prod_eigen_span Kokkos span Tpetra::BlockVector nontranspose
ops_tpetra_block.mv_prod_eigen_diag Kokkos diag Tpetra::BlockVector nontranspose
ops_tpetra_block.mv_T_vector_storein_eigen_vector Tpetra::BlockVector Eigen vector transpose
ops_tpetra_block.mv_T_vector_storein_eigen_span Tpetra::BlockVector Eigen span transpose
ops_tpetra_block.mv_T_vector_storein_eigen_diag Tpetra::BlockVector Eigen diag transpose
ops_tpetra_block.mv_T_vector_storein_kokkos_vector Tpetra::BlockVector Kokkos vector transpose
ops_tpetra_block.mv_T_vector_storein_kokkos_span Tpetra::BlockVector Kokkos span transpose
ops_tpetra_block.mv_T_vector_storein_kokkos_diag Tpetra::BlockVector Kokkos diag transpose