Tpetra: OpenMP specializations of triple product kernels
Created by: brian-kelley
@trilinos/tpetra
Description
Added OpenMP specializations to the two triple matrix product kernels already in TpetraExt_TripleMatrixMultiply: RAP and P^T * A * P. Only the 1-pass version of PTAP has a specialization since the 2-pass version is not used anywhere.
Added a new unit test file ("TripleProductTest.cpp") to test both kernels with the existing RAP test matrices. Previously the MatrixMatrix unit tests did not test the P^TAP variant. If OpenMP is disabled then the new tests just run the non-specialized version.
Motivation and Context
This change will improve performance of computing RAP in MueLu.
How Has This Been Tested?
Checklist
-
My commit messages mention the appropriate GitHub issue numbers. -
My code follows the code style of the affected package(s). -
My change requires a change to the documentation. -
I have updated the documentation accordingly. -
I have read the code contribution guidelines for this project. -
I have added tests to cover my changes. -
All new and existing tests passed. -
No new compiler warnings were introduced. -
These changes break backwards compatibility.
The MueLu_Maxwell3D-Epetra_MPI_4, MueLu_MLParameterList-Epetra_MPI_4, and MueLu_MLParameterList_Repartition-Epetra_MPI_4 failed for me but my changes aren't related to these. All Tpetra tests passed.