30 #ifndef HIPCUB_CUB_DEVICE_DEVICE_SPMV_HPP_
31 #define HIPCUB_CUB_DEVICE_DEVICE_SPMV_HPP_
33 #include "../../../config.hpp"
35 #include <cub/device/device_spmv.cuh>
36 #include <cub/iterator/tex_ref_input_iterator.cuh>
38 BEGIN_HIPCUB_NAMESPACE
51 OffsetT* d_row_end_offsets;
52 OffsetT* d_column_indices;
61 ::cub::TexRefInputIterator<ValueT, 66778899, OffsetT> t_vector_x;
64 template <
typename ValueT>
65 HIPCUB_RUNTIME_FUNCTION
66 static hipError_t CsrMV(
68 size_t& temp_storage_bytes,
71 int* d_column_indices,
77 hipStream_t stream = 0,
78 bool debug_synchronous =
false)
80 ::cub::SpmvParams<ValueT, int> spmv_params;
81 spmv_params.d_values = d_values;
82 spmv_params.d_row_end_offsets = d_row_offsets + 1;
83 spmv_params.d_column_indices = d_column_indices;
84 spmv_params.d_vector_x = d_vector_x;
85 spmv_params.d_vector_y = d_vector_y;
86 spmv_params.num_rows = num_rows;
87 spmv_params.num_cols = num_cols;
88 spmv_params.num_nonzeros = num_nonzeros;
89 spmv_params.alpha = 1.0;
90 spmv_params.beta = 0.0;
92 return static_cast<hipError_t
>(::cub::DispatchSpmv<ValueT, int>::Dispatch(
103 #endif // HIPCUB_CUB_DEVICE_DEVICE_SELECT_HPP_