Ginkgo Generated from branch based on master. Ginkgo version 1.8.0
A numerical linear algebra library targeting many-core architectures
Loading...
Searching...
No Matches
gko::batch::preconditioner::Jacobi< ValueType, IndexType >::parameters_type Struct Reference
Inheritance diagram for gko::batch::preconditioner::Jacobi< ValueType, IndexType >::parameters_type:
[legend]
Collaboration diagram for gko::batch::preconditioner::Jacobi< ValueType, IndexType >::parameters_type:
[legend]

Public Member Functions

template<typename... Args>
auto with_max_block_size (Args &&... _value) -> std::decay_t< decltype(*(this->self()))> &
 
template<typename... Args>
auto with_block_pointers (Args &&... _value) -> std::decay_t< decltype(*(this->self()))> &
 
- Public Member Functions inherited from gko::enable_parameters_type< parameters_type, Factory >
parameters_type & with_loggers (Args &&... _value)
 Provides the loggers to be added to the factory and its generated objects in a fluent interface.
 
std::unique_ptr< Factory > on (std::shared_ptr< const Executor > exec) const
 Creates a new factory on the specified executor.
 

Public Attributes

uint32 max_block_size {8u}
 Maximal size of diagonal blocks.
 
gko::array< index_type > block_pointers {nullptr}
 Starting (row / column) indexes of individual blocks, for a single batch item.
 

Additional Inherited Members

- Public Types inherited from gko::enable_parameters_type< parameters_type, Factory >
using factory
 

Member Data Documentation

◆ block_pointers

template<typename ValueType = default_precision, typename IndexType = int32>
gko::array<index_type> gko::batch::preconditioner::Jacobi< ValueType, IndexType >::parameters_type::block_pointers {nullptr}

Starting (row / column) indexes of individual blocks, for a single batch item.

An index past the last block has to be supplied as the last value. I.e. the size of the array has to be the number of blocks plus 1, where the first value is 0, and the last value is the number of rows / columns of the matrix.

Note
Even if not set explicitly, this parameter will be set to automatically detected values once the preconditioner is generated.
If the parameter is set automatically, the size of the array does not correlate to the number of blocks, and is implementation defined. To obtain the number of blocks n use Jacobi::get_num_blocks(). The starting indexes of the blocks are stored in the first n+1 values of this array.
If the block-diagonal structure can be determined from the problem characteristics, it may be beneficial to pass this information specifically via this parameter, as the autodetection procedure is only a rough approximation of the true block structure.
The maximum block size set by the max_block_size parameter has to be respected when setting this parameter. Failure to do so will lead to undefined behavior.

◆ max_block_size

template<typename ValueType = default_precision, typename IndexType = int32>
uint32 gko::batch::preconditioner::Jacobi< ValueType, IndexType >::parameters_type::max_block_size {8u}

Maximal size of diagonal blocks.

Note
This value has to be between 1 and 32 (NVIDIA)/64 (AMD). For efficiency, when the max_block_size is set to 1, specialized kernels are used and the additional objects (block_ptrs etc) are set to null values.
Unlike the regular block Jacobi preconditioner, for the batched preconditioner, smaller blocks are more efficient, as the matrices themselves are considerably smaller.

Referenced by gko::batch::preconditioner::Jacobi< ValueType, IndexType >::get_max_block_size().


The documentation for this struct was generated from the following file: