|
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()))> & |
|
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.
|
|
◆ block_pointers
template<typename ValueType = default_precision, typename IndexType = int32>
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>
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.
The documentation for this struct was generated from the following file: