31#ifndef REMORA_KERNELS_TRMV_HPP
32#define REMORA_KERNELS_TRMV_HPP
34#ifdef REMORA_USE_CBLAS
39namespace remora{
namespace bindings{
40template<
class M,
class V>
41struct has_optimized_trmv
42:
public std::false_type{};
48namespace remora{
namespace kernels{
54template <
bool Upper,
bool Unit,
typename MatA,
typename VecB>
56 matrix_expression<MatA, cpu_tag>
const &A,
57 vector_expression<VecB, cpu_tag>& b
59 REMORA_SIZE_CHECK(A().size1() == A().size2());
60 REMORA_SIZE_CHECK(A().size1() == b().size());
62 bindings::trmv<Upper,Unit>(A,b,
typename bindings::has_optimized_trmv<MatA, VecB>::type());
67#ifdef REMORA_USE_CLBLAST
69#elif defined REMORA_USE_GPU