23#include <cusp/detail/config.h>
24#include <cusp/detail/execution_policy.h>
38template <
typename DerivedPolicy,
41void offsets_to_indices(
const thrust::detail::execution_policy_base<DerivedPolicy> &exec,
42 const OffsetArray& offsets,
81template <
typename OffsetArray,
87template <
typename DerivedPolicy,
90void indices_to_offsets(
const thrust::detail::execution_policy_base<DerivedPolicy> &exec,
91 const IndexArray& indices,
92 OffsetArray& offsets);
131template <
typename IndexArray,
132 typename OffsetArray>
134 OffsetArray& offsets);
137template <
typename DerivedPolicy,
140void extract_diagonal(
const thrust::detail::execution_policy_base<DerivedPolicy> &exec,
182template <
typename MatrixType,
188template <
typename DerivedPolicy,
191size_t count_diagonals(
const thrust::detail::execution_policy_base<DerivedPolicy> &exec,
192 const size_t num_rows,
193 const size_t num_cols,
194 const ArrayType1& row_indices,
195 const ArrayType2& column_indices );
233template <
typename ArrayType1,
236 const size_t num_cols,
237 const ArrayType1& row_indices,
238 const ArrayType2& column_indices);
241template <
typename DerivedPolicy,
244 const ArrayType& row_offsets);
275template <
typename ArrayType>
279template <
typename DerivedPolicy,
282 const ArrayType& row_offsets,
283 float relative_speed = 3.0f,
284 size_t breakeven_threshold = 4096);
319template <
typename ArrayType>
321 float relative_speed = 3.0f,
322 size_t breakeven_threshold = 4096);
328#include <cusp/detail/format_utils.inl>
void offsets_to_indices(const OffsetArray &offsets, IndexArray &indices)
Expand CSR row offsets to COO row indices.
void extract_diagonal(const MatrixType &A, ArrayType &output)
Extract the main diagonal of a matrix.
size_t count_diagonals(const size_t num_rows, const size_t num_cols, const ArrayType1 &row_indices, const ArrayType2 &column_indices)
Count the number of occupied diagonals in the input matrix.
void indices_to_offsets(const IndexArray &indices, OffsetArray &offsets)
Compress COO row indices to CSR row offsets.
size_t compute_optimal_entries_per_row(const ArrayType &row_offsets, float relative_speed=3.0f, size_t breakeven_threshold=4096)
Compute the optimal number of entries per row of HYB matrix.
size_t compute_max_entries_per_row(const ArrayType &row_offsets)
Compute the maximum row length of a matrix.