14#include <alien/handlers/scalar/BaseProfiledMatrixBuilder.h>
19 template <
typename Scalar>
25 template <
typename ValueT,
typename IndexT>
29 using ResetFlag = ProfiledMatrixOptions::ResetFlag;
32 using MatrixElement = MatrixElementT<ProfiledMatrixBuilderT<ValueT,IndexT>>;
34 typedef ValueT ValueType ;
46 ProfiledMatrixBuilderT(IMatrix& matrix, ResetFlag reset_values);
48 virtual ~ProfiledMatrixBuilderT();
50 ProfiledMatrixBuilderT(
const ProfiledMatrixBuilderT&) =
delete;
51 ProfiledMatrixBuilderT(ProfiledMatrixBuilderT&&) =
delete;
52 ProfiledMatrixBuilderT& operator=(
const ProfiledMatrixBuilderT&) =
delete;
53 ProfiledMatrixBuilderT& operator=(ProfiledMatrixBuilderT&&) =
delete;
56 inline MatrixElement operator()(
const Integer iIndex,
const Integer jIndex)
58 return MatrixElement(iIndex, jIndex, *
this);
61 View view(SYCLControlGroupHandler& cgh) ;
63 ConstView constView(SYCLControlGroupHandler& cgh)
const ;
65 HostView hostView()
const ;
70 bool isLocal(Integer jIndex)
const
72 return (jIndex >= m_local_offset) && (jIndex < m_next_offset);
80 IndexT entryIndex(IndexT row, IndexT col)
const {
81 for(
auto k=m_row_starts[row];k<m_row_starts[row+1];++k)
88 HCSRMatrix<ValueType>* m_matrix_impl;
89 std::unique_ptr<Impl> m_impl;
91 Integer m_local_offset = 0;
92 Integer m_local_size = 0;
93 Integer m_next_offset= 0;
94 ConstArrayView<Integer> m_row_starts;
95 ConstArrayView<Integer> m_cols;
96 ConstArrayView<Integer> m_local_row_size;
97 ArrayView<ValueType> m_values;
98 bool m_finalized =
false;
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --