30#ifndef REMORA_KERNELS_GEMV_HPP
31#define REMORA_KERNELS_GEMV_HPP
35#ifdef REMORA_USE_CBLAS
40namespace remora{
namespace bindings{
41template<
class M1,
class M2,
class M3>
42struct has_optimized_gemv
43:
public std::false_type{};
49namespace remora{
namespace kernels{
58template<
class M,
class E1,
class E2>
60 matrix_expression<E1, cpu_tag>
const& e1,
61 vector_expression<E2, cpu_tag>
const& e2,
62 vector_expression<M, cpu_tag>& m,
63 typename M::value_type alpha
65 assert(m().size() == e1().size1());
66 assert(e1().size2() == e2().size());
70 typename bindings::has_optimized_gemv<M,E1,E2>::type()
76#ifdef REMORA_USE_CLBLAST
78#elif defined REMORA_USE_GPU