10 #ifndef KOKKOSBLAS3_GEMM_MP_VECTOR_HPP
11 #define KOKKOSBLAS3_GEMM_MP_VECTOR_HPP
13 #include <type_traits>
14 #include "Sacado_ConfigDefs.h"
20 #include "KokkosBlas.hpp"
24 template <
typename DA,
typename... PA,
25 typename DB,
typename... PB,
26 typename DC,
typename... PC>
32 typename Kokkos::View<DA, PA...>::const_value_type &alpha,
33 const Kokkos::View<DA, PA...> &
A,
34 const Kokkos::View<DB, PB...> &
B,
35 typename Kokkos::View<DC, PC...>::const_value_type &beta,
36 const Kokkos::View<DC, PC...> &
C)
39 static_assert(Kokkos::View<DA, PA...>::rank == 2,
"GEMM: A must have rank 2 (be a matrix).");
40 static_assert(Kokkos::View<DB, PB...>::rank == 2,
"GEMM: B must have rank 2 (be a matrix).");
41 static_assert(Kokkos::View<DC, PC...>::rank == 2,
"GEMM: C must have rank 2 (be a matrix).");
43 if (B.extent(1) == 1 && C.extent(1) == 1)
45 auto x = Kokkos::subview(B, Kokkos::ALL, 0);
46 auto y = Kokkos::subview(C, Kokkos::ALL, 0);
std::enable_if< Kokkos::is_view_mp_vector< Kokkos::View< DA, PA...> >::value &&Kokkos::is_view_mp_vector< Kokkos::View< DX, PX...> >::value &&Kokkos::is_view_mp_vector< Kokkos::View< DY, PY...> >::value >::type gemv(const char trans[], typename Kokkos::View< DA, PA...>::const_value_type &alpha, const Kokkos::View< DA, PA...> &A, const Kokkos::View< DX, PX...> &x, typename Kokkos::View< DY, PY...>::const_value_type &beta, const Kokkos::View< DY, PY...> &y)
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
std::enable_if< Kokkos::is_view_mp_vector< Kokkos::View< DA, PA...> >::value &&Kokkos::is_view_mp_vector< Kokkos::View< DB, PB...> >::value &&Kokkos::is_view_mp_vector< Kokkos::View< DC, PC...> >::value >::type gemm(const char transA[], const char transB[], typename Kokkos::View< DA, PA...>::const_value_type &alpha, const Kokkos::View< DA, PA...> &A, const Kokkos::View< DB, PB...> &B, typename Kokkos::View< DC, PC...>::const_value_type &beta, const Kokkos::View< DC, PC...> &C)