5#ifndef GKO_PUBLIC_CORE_PRECONDITIONER_BATCH_JACOBI_HPP_
6#define GKO_PUBLIC_CORE_PRECONDITIONER_BATCH_JACOBI_HPP_
9#include <ginkgo/core/base/array.hpp>
10#include <ginkgo/core/base/batch_lin_op.hpp>
11#include <ginkgo/core/base/batch_multi_vector.hpp>
12#include <ginkgo/core/base/exception_helpers.hpp>
13#include <ginkgo/core/base/lin_op.hpp>
14#include <ginkgo/core/base/types.hpp>
15#include <ginkgo/core/matrix/batch_csr.hpp>
16#include <ginkgo/core/matrix/batch_dense.hpp>
17#include <ginkgo/core/matrix/csr.hpp>
22namespace preconditioner {
49template <
typename ValueType = default_precision,
typename IndexType =
int32>
57 using value_type = ValueType;
58 using index_type = IndexType;
69 return block_pointers_.get_const_data();
80 return map_block_to_row_.get_const_data();
91 return blocks_cumulative_offsets_.get_const_data();
101 return parameters_.max_block_size;
131 return blocks_.get_const_data();
145 return blocks_.get_size();
197 explicit Jacobi(std::shared_ptr<const Executor> exec);
199 explicit Jacobi(
const Factory* factory,
200 std::shared_ptr<const BatchLinOp> system_matrix);
202 void generate_precond(
const BatchLinOp*
const system_matrix);
This mixin inherits from (a subclass of) PolymorphicObject and provides a base implementation of a ne...
Definition polymorphic_object.hpp:668
An array is a container which encapsulates fixed-sized arrays, stored on the Executor tied to the arr...
Definition array.hpp:166
Definition batch_lin_op.hpp:59
The EnableBatchLinOp mixin can be used to provide sensible default implementations of the majority of...
Definition batch_lin_op.hpp:252
Csr is a general sparse matrix format that stores the column indices for each nonzero entry and a cum...
Definition batch_csr.hpp:55
Definition batch_jacobi.hpp:193
const index_type * get_const_block_pointers() const noexcept
Returns the block pointers.
Definition batch_jacobi.hpp:67
uint32 get_max_block_size() const noexcept
Returns the max block size.
Definition batch_jacobi.hpp:99
const index_type * get_const_map_block_to_row() const noexcept
Returns the mapping between the blocks and the row id.
Definition batch_jacobi.hpp:78
const index_type * get_const_blocks_cumulative_offsets() const noexcept
Returns the cumulative blocks storage array.
Definition batch_jacobi.hpp:89
size_type get_num_blocks() const noexcept
Returns the number of blocks in an individual batch entry.
Definition batch_jacobi.hpp:109
const value_type * get_const_blocks() const noexcept
Returns the pointer to the memory used for storing the block data.
Definition batch_jacobi.hpp:129
size_type get_num_stored_elements() const noexcept
Returns the number of elements explicitly stored in the dense blocks.
Definition batch_jacobi.hpp:143
CSR is a matrix format which stores only the nonzero coefficients by compressing each row of the matr...
Definition csr.hpp:126
#define GKO_ENABLE_BATCH_LIN_OP_FACTORY(_batch_lin_op, _parameters_name, _factory_name)
This macro will generate a default implementation of a BatchLinOpFactory for the BatchLinOp subclass ...
Definition batch_lin_op.hpp:358
#define GKO_CREATE_FACTORY_PARAMETERS(_parameters_name, _factory_name)
This Macro will generate a new type containing the parameters for the factory _factory_name.
Definition abstract_factory.hpp:280
#define GKO_FACTORY_PARAMETER_SCALAR(_name, _default)
Creates a scalar factory parameter in the factory parameters structure.
Definition abstract_factory.hpp:445
#define GKO_ENABLE_BUILD_METHOD(_factory_name)
Defines a build method for the factory, simplifying its construction by removing the repetitive typin...
Definition abstract_factory.hpp:394
#define GKO_FACTORY_PARAMETER_VECTOR(_name,...)
Creates a vector factory parameter in the factory parameters structure.
Definition abstract_factory.hpp:461
The Ginkgo namespace.
Definition abstract_factory.hpp:20
std::uint32_t uint32
32-bit unsigned integral type.
Definition types.hpp:130
std::size_t size_type
Integral type used for allocation quantities.
Definition types.hpp:90
uint32 max_block_size
Maximal size of diagonal blocks.
Definition batch_jacobi.hpp:162
gko::array< index_type > block_pointers
Starting (row / column) indexes of individual blocks, for a single batch item.
Definition batch_jacobi.hpp:191