21 using auto_const_t =
typename Base::template auto_const_t<U>;
24 static_assert(!std::is_const_v<T>,
"T must be non-const");
31 using ThisViewer = std::conditional_t<IsConst, CViewer, Viewer>;
38 int m_doublet_index_offset = 0;
39 int m_doublet_count = 0;
40 int m_total_doublet_count = 0;
43 auto_const_t<int>* m_indices =
nullptr;
44 auto_const_t<T>* m_values =
nullptr;
46 mutable cusparseSpVecDescr_t m_descr =
nullptr;
51 int doublet_index_offset,
53 int total_doublet_count,
54 auto_const_t<int>* indices,
55 auto_const_t<T>* values,
56 cusparseSpVecDescr_t descr)
58 , m_doublet_index_offset(doublet_index_offset)
59 , m_doublet_count(doublet_count)
60 , m_total_doublet_count(total_doublet_count)
65 MUDA_KERNEL_ASSERT(doublet_index_offset + doublet_count <= total_doublet_count,
66 "COOVectorView: out of range, m_total_doublet_count=%d, "
67 "your doublet_index_offset=%d, doublet_count=%d",
75 MUDA_GENERIC
auto as_const()
const ->
ConstView
78 m_doublet_index_offset,
80 m_total_doublet_count,
86 MUDA_GENERIC
operator ConstView()
const {
return as_const(); }
90 MUDA_GENERIC
auto viewer()
93 m_size, m_doublet_index_offset, m_doublet_count, m_total_doublet_count, m_indices, m_values};
96 MUDA_GENERIC
auto subview(
int offset,
int count)
99 m_doublet_index_offset + offset,
101 m_total_doublet_count,
107 MUDA_GENERIC
auto subview(
int offset)
109 return subview(offset, m_doublet_count - offset);
114 MUDA_GENERIC
ConstView subview(
int offset,
int count)
const
116 return remove_const(*this).subview(offset, count);
119 MUDA_GENERIC
ConstView subview(
int offset)
const
121 return remove_const(*this).subview(offset);
124 MUDA_GENERIC
auto cviewer()
const {
return remove_const(*this).viewer(); }
127 MUDA_GENERIC
auto vector_size()
const {
return m_size; }
129 MUDA_GENERIC
auto doublet_index_offset()
const
131 return m_doublet_index_offset;
134 MUDA_GENERIC
auto doublet_count()
const {
return m_doublet_count; }
136 MUDA_GENERIC
auto total_doublet_count()
const
138 return m_total_doublet_count;
141 MUDA_GENERIC
auto descr()
const {
return m_descr; }