5#ifndef GKO_PUBLIC_CORE_MATRIX_ROW_GATHERER_HPP_
6#define GKO_PUBLIC_CORE_MATRIX_ROW_GATHERER_HPP_
14#include <ginkgo/core/base/array.hpp>
15#include <ginkgo/core/base/exception.hpp>
16#include <ginkgo/core/base/exception_helpers.hpp>
17#include <ginkgo/core/base/executor.hpp>
18#include <ginkgo/core/base/lin_op.hpp>
19#include <ginkgo/core/base/types.hpp>
20#include <ginkgo/core/base/utils.hpp>
42template <
typename IndexType =
int32>
43class RowGatherer :
public EnableLinOp<RowGatherer<IndexType>> {
47 using index_type = IndexType;
54 index_type*
get_row_idxs() noexcept {
return row_idxs_.get_data(); }
65 return row_idxs_.get_const_data();
76 static std::unique_ptr<RowGatherer>
create(
77 std::shared_ptr<const Executor> exec,
const dim<2>& size = {});
93 static std::unique_ptr<RowGatherer>
create(
94 std::shared_ptr<const Executor> exec,
const dim<2>& size,
108 std::shared_ptr<const Executor> exec,
const dim<2>& size,
109 gko::detail::const_array_view<IndexType>&& row_idxs);
112 RowGatherer(std::shared_ptr<const Executor> exec,
const dim<2>& size = {});
117 void apply_impl(
const LinOp* in,
LinOp* out)
const override;
119 void apply_impl(
const LinOp* alpha,
const LinOp* in,
const LinOp* beta,
120 LinOp* out)
const override;
The EnableLinOp mixin can be used to provide sensible default implementations of the majority of the ...
Definition lin_op.hpp:879
This mixin inherits from (a subclass of) PolymorphicObject and provides a base implementation of a ne...
Definition polymorphic_object.hpp:668
Definition lin_op.hpp:117
An array is a container which encapsulates fixed-sized arrays, stored on the Executor tied to the arr...
Definition array.hpp:166
RowGatherer is a matrix "format" which stores the gather indices arrays which can be used to gather r...
Definition row_gatherer.hpp:43
static std::unique_ptr< const RowGatherer > create_const(std::shared_ptr< const Executor > exec, const dim< 2 > &size, gko::detail::const_array_view< IndexType > &&row_idxs)
Creates a constant (immutable) RowGatherer matrix from a constant array.
index_type * get_row_idxs() noexcept
Returns a pointer to the row index array for gathering.
Definition row_gatherer.hpp:54
static std::unique_ptr< RowGatherer > create(std::shared_ptr< const Executor > exec, const dim< 2 > &size={})
Creates uninitialized RowGatherer arrays of the specified size.
const index_type * get_const_row_idxs() const noexcept
Returns a pointer to the row index array for gathering.
Definition row_gatherer.hpp:63
static std::unique_ptr< RowGatherer > create(std::shared_ptr< const Executor > exec, const dim< 2 > &size, array< index_type > row_idxs)
Creates a RowGatherer matrix from an already allocated (and initialized) row gathering array.
The matrix namespace.
Definition dense_cache.hpp:24
The Ginkgo namespace.
Definition abstract_factory.hpp:20
A type representing the dimensions of a multidimensional object.
Definition dim.hpp:26