1#ifndef included_AMP_CSRMatrixDataHelpers_h
2#define included_AMP_CSRMatrixDataHelpers_h
5namespace LinearAlgebra {
7template<
typename Config>
10 using gidx_t =
typename Config::gidx_t;
11 using lidx_t =
typename Config::lidx_t;
28 const gidx_t out_first_col,
43 const gidx_t out_first_col,
55 const lidx_t *diag_row_starts,
56 const lidx_t *offd_row_starts,
63 const lidx_t *diag_row_starts,
64 const lidx_t *offd_row_starts,
65 const lidx_t *diag_cols_loc,
66 const lidx_t *offd_cols_loc,
70 const lidx_t *out_row_starts,
77 const lidx_t *diag_row_starts,
78 const lidx_t *diag_cols_loc,
79 const lidx_t *offd_row_starts,
80 const lidx_t *offd_cols_loc,
81 const gidx_t *offd_cols_unq,
88 const lidx_t *diag_row_starts,
89 const lidx_t *diag_cols_loc,
91 const lidx_t *offd_row_starts,
92 const lidx_t *offd_cols_loc,
93 const gidx_t *offd_cols_unq,
108 const lidx_t *out_row_starts,
118 const bool keep_inside,
126 const bool keep_inside,
128 const lidx_t *out_row_starts,
134 const bool keep_first,
139 const lidx_t *in_cols_loc,
142 const bool keep_first,
144 const lidx_t *out_row_starts,
156 const lidx_t *del_per_row,
161 const lidx_t *old_cols_loc,
166 [[maybe_unused]]
const lidx_t *new_row_starts,
171 const lidx_t *old_cols_loc,
172 const gidx_t *old_cols_unq,
177 [[maybe_unused]]
const lidx_t *new_row_starts,
typename Config::gidx_t gidx_t
static void RemoveRangeFillOffd(const lidx_t *old_row_starts, const lidx_t *old_cols_loc, const gidx_t *old_cols_unq, const scalar_t *old_coeffs, const lidx_t num_rows, const scalar_t bnd_lo, const scalar_t bnd_up, const lidx_t *new_row_starts, gidx_t *new_cols, scalar_t *new_coeffs)
static void ConcatVerticalCountNNZ(const lidx_t *row_starts, const gidx_t *cols, const lidx_t num_rows, const gidx_t first_col, const gidx_t last_col, const bool keep_inside, lidx_t *counts)
static void GlobalToLocalDiag(gidx_t *cols, lidx_t nnz, gidx_t first_col, lidx_t *cols_loc)
static void TransposeOffd(const lidx_t *in_row_starts, const gidx_t *in_cols, const scalar_t *in_coeffs, const lidx_t in_num_rows, const gidx_t in_first_col, const lidx_t out_num_rows, const gidx_t out_first_col, const lidx_t tot_nnz, lidx_t *out_row_starts, lidx_t *out_cols_loc, gidx_t *out_cols, scalar_t *out_coeffs, lidx_t *counters, lidx_t *reduce_space)
static void ConcatVerticalFill(const lidx_t *in_row_starts, const gidx_t *in_cols, const scalar_t *in_coeffs, const lidx_t num_rows, const gidx_t first_col, const gidx_t last_col, const bool keep_inside, const lidx_t row_offset, const lidx_t *out_row_starts, gidx_t *out_cols, scalar_t *out_coeffs)
static void ConcatHorizontalCountNNZ(const lidx_t *in_row_starts, const lidx_t num_rows, lidx_t *out_row_starts)
static void ColSubsetCountNNZ(const gidx_t idx_lo, const gidx_t idx_up, const gidx_t first_col, const lidx_t *diag_row_starts, const lidx_t *diag_cols_loc, const lidx_t *offd_row_starts, const lidx_t *offd_cols_loc, const gidx_t *offd_cols_unq, const lidx_t num_rows, lidx_t *out_row_starts)
static void RemoveRangeFillDiag(const lidx_t *old_row_starts, const lidx_t *old_cols_loc, const scalar_t *old_coeffs, const lidx_t num_rows, const scalar_t bnd_lo, const scalar_t bnd_up, const lidx_t *new_row_starts, lidx_t *new_cols_loc, scalar_t *new_coeffs)
static void RowSubsetCountNNZ(const gidx_t *rows, const lidx_t num_rows, const gidx_t first_row, const lidx_t *diag_row_starts, const lidx_t *offd_row_starts, lidx_t *counts)
static void GlobalToLocalOffd(gidx_t *cols, lidx_t nnz, gidx_t *cols_unq, lidx_t ncols_unq, lidx_t *cols_loc)
typename Config::lidx_t lidx_t
static void MaskCountNNZ(const lidx_t *in_row_starts, const mask_t *mask, const bool keep_first, const lidx_t num_rows, lidx_t *out_row_starts)
static void ColSubsetFill(const gidx_t idx_lo, const gidx_t idx_up, const gidx_t first_col, const lidx_t *diag_row_starts, const lidx_t *diag_cols_loc, const scalar_t *diag_coeffs, const lidx_t *offd_row_starts, const lidx_t *offd_cols_loc, const gidx_t *offd_cols_unq, const scalar_t *offd_coeffs, const lidx_t num_rows, lidx_t *out_row_starts, gidx_t *out_cols, scalar_t *out_coeffs)
static void SortColumnsDiag(lidx_t *row_starts, gidx_t *cols, scalar_t *coeffs, lidx_t num_rows, gidx_t first_col)
static void SortColumnsOffd(lidx_t *row_starts, gidx_t *cols, scalar_t *coeffs, lidx_t num_rows)
static void RemoveRangeUpdateRowStart(const lidx_t *in_row_starts, const lidx_t *del_per_row, const lidx_t num_rows, lidx_t *out_row_starts)
static void ConcatHorizontalFill(const lidx_t *in_row_starts, const gidx_t *in_cols, const scalar_t *in_coeffs, const lidx_t num_rows, const lidx_t *out_row_starts, lidx_t *row_nnz_ctrs, gidx_t *out_cols, scalar_t *out_coeffs)
static void TransposeDiag(const lidx_t *in_row_starts, const lidx_t *in_cols_loc, const scalar_t *in_coeffs, const lidx_t in_num_rows, const lidx_t out_num_rows, const gidx_t out_first_col, const lidx_t tot_nnz, lidx_t *out_row_starts, lidx_t *out_cols_loc, gidx_t *out_cols, scalar_t *out_coeffs, lidx_t *counters, lidx_t *reduce_space)
typename Config::scalar_t scalar_t
static void MaskFillDiag(const lidx_t *in_row_starts, const lidx_t *in_cols_loc, const scalar_t *in_coeffs, const mask_t *mask, const bool keep_first, const lidx_t num_rows, const lidx_t *out_row_starts, lidx_t *out_cols_loc, scalar_t *out_coeffs)
static lidx_t RemoveRangeCountDel(const lidx_t *row_starts, const scalar_t *coeffs, const lidx_t num_rows, const scalar_t bnd_lo, const scalar_t bnd_up, lidx_t *del_per_row)
static void RowSubsetFill(const gidx_t *rows, const lidx_t num_rows, const gidx_t first_row, const gidx_t first_col, const lidx_t *diag_row_starts, const lidx_t *offd_row_starts, const lidx_t *diag_cols_loc, const lidx_t *offd_cols_loc, const scalar_t *diag_coeffs, const scalar_t *offd_coeffs, const gidx_t *offd_colmap, const lidx_t *out_row_starts, gidx_t *out_cols, scalar_t *out_coeffs)