Pressio / pressio

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

ops: tpetra-block: revise matrix-matrix product #535

Closed mzuzek closed 1 year ago

mzuzek commented 1 year ago

@fnrizzi

refs #451

Contents

Overloads

Tpetra-block level-3 pressio::ops::product() (i.e. performing C = alpha * op(A) * op(B) + beta * C) overloads:

A B C op(A) op(B)
tpetra MV-block tpetra MV-block eigen col-major matrix transpose nontranspose
tpetra MV-block tpetra MV-block dynamic eigen matrix
(returned value)
transpose nontranspose
tpetra MV-block
(self product)
eigen matrix transpose nontranspose
tpetra MV-block
(self product)
dynamic eigen matrix
(returned value)
transpose nontranspose
tpetra MV-block
(self product)
kokkos dense matrix transpose nontranspose
tpetra MV-block
(self product)
dynamic kokkos dense matrix
(returned value)
transpose nontranspose
tpetra MV-block tpetra MV-block kokkos dense matrix transpose nontranspose

Test coverage

Test cases for Tpetra-block level-3 implementations of pressio::ops::product() (op(A) is always transpose and op(B) is always nontranspose):

test A B C
mv_T_mv_storein_eigen_C Tpetra::BlockMultiVector Tpetra::BlockMultiVector Eigen::MatrixXd
mv_T_self_storein_eigen_C Tpetra::BlockMultiVector Eigen::MatrixXd
mv_T_self_create_result_eigen_C
mv_T_self_storein_eigen_C_beta0
Tpetra::BlockMultiVector Tpetra::BlockMultiVector Eigen::MatrixXd
mv_T_self_storein_kokkos_C
mv_T_self_storein_kokkos_C_beta0
Tpetra::BlockMultiVector Kokkos::View<double**, Kokkos::LayoutLeft>
mv_T_mv_storein_kokkos_C
mv_T_mv_storein_kokkos_C_beta0
Tpetra::BlockMultiVector Tpetra::BlockMultiVector Kokkos::View<double**, Kokkos::LayoutLeft>
mzuzek commented 1 year ago

thanks @fnrizzi for your review!