Ginkgo: gko::batch::preconditioner::Jacobi< ValueType, IndexType > Class Template Reference

| Ginkgo Generated from branch based on main. Ginkgo version 1.11.0 A numerical linear algebra library targeting many-core architectures

Loading...
Searching...
No Matches
gko::batch::preconditioner::Jacobi< ValueType, IndexType > Class Template Referencefinal
Linear Operators » Preconditioners » Jacobi Preconditioner | Linear Operators » Preconditioners | BatchLinOp

A block-Jacobi preconditioner is a block-diagonal linear operator, obtained by inverting the diagonal blocks (stored in a dense row major fashion) of the source operator. More...

`#include <ginkgo/core/preconditioner/batch_jacobi.hpp>`

Inheritance diagram for gko::batch::preconditioner::Jacobi< ValueType, IndexType >:
[legend]
Collaboration diagram for gko::batch::preconditioner::Jacobi< ValueType, IndexType >:
[legend]

## Classes
struct | parameters_type
class | Factory

## Public Types
using | value_type = ValueType
using | index_type = IndexType
using | matrix_type = batch::matrix::Csr<ValueType, IndexType>
Public Types inherited from gko::EnablePolymorphicAssignment< Jacobi< default_precision, int32 > >
using | result_type

## Public Member Functions
const index_type * | get_const_block_pointers () const noexcept
| Returns the block pointers.
const index_type * | get_const_map_block_to_row () const noexcept
| Returns the mapping between the blocks and the row id.
const index_type * | get_const_blocks_cumulative_offsets () const noexcept
| Returns the cumulative blocks storage array.
uint32 | get_max_block_size () const noexcept
| Returns the max block size.
size_type | get_num_blocks () const noexcept
| Returns the number of blocks in an individual batch entry.
const value_type * | get_const_blocks () const noexcept
| Returns the pointer to the memory used for storing the block data.
size_type | get_num_stored_elements () const noexcept
| Returns the number of elements explicitly stored in the dense blocks.
const parameters_type & | get_parameters () const
Public Member Functions inherited from gko::EnablePolymorphicAssignment< Jacobi< default_precision, int32 > >
void | convert_to (result_type *result) const override
void | move_to (result_type *result) override

## Static Public Member Functions
static auto | build () -> decltype(Factory::create())

## Friends
class | EnableBatchLinOp< Jacobi >
class | EnablePolymorphicObject< Jacobi, BatchLinOp >

## Detailed Description

template<typename ValueType = default_precision, typename IndexType = int32>
class gko::batch::preconditioner::Jacobi< ValueType, IndexType >

A block-Jacobi preconditioner is a block-diagonal linear operator, obtained by inverting the diagonal blocks (stored in a dense row major fashion) of the source operator.

With the batched preconditioners, it is required that all items in the batch have the same sparsity pattern. The detection of the blocks and the block pointers require that the sparsity pattern of all the items be the same. Other cases is undefined behaviour. The input batch matrix must be in batch::Csr matrix format or must be convertible to batch::Csr matrix format. The block detection algorithm and the conversion to dense blocks kernels require this assumption.

Note
  In a fashion similar to the non-batched Jacobi preconditioner, the maximum possible size of the diagonal blocks is equal to the maximum warp size on the device (32 for NVIDIA GPUs, 64 for AMD GPUs).

Template Parameters

  ValueType | value precision of matrix elements
  IndexType | index precision of matrix elements

## Member Function Documentation

## ◆ get_const_block_pointers()

template<typename ValueType = default_precision, typename IndexType = int32>

const index_type * gko::batch::preconditioner::Jacobi< ValueType, IndexType >::get_const_block_pointers | ( |  | ) | const
| inlinenoexcept

Returns the block pointers.

Note
  Returns nullptr in case of a scalar jacobi preconditioner (max_block_size = 1).

Returns
  the block pointers

## ◆ get_const_blocks()

template<typename ValueType = default_precision, typename IndexType = int32>

const value_type * gko::batch::preconditioner::Jacobi< ValueType, IndexType >::get_const_blocks | ( |  | ) | const
| inlinenoexcept

Returns the pointer to the memory used for storing the block data.

Element (i, j) of the block, which belongs to the batch entry with index = "batch_id" and has local id = "block_id" within its batch entry is stored at the address = get_const_blocks() + detail::get_global_block_offset(batch_id, num_blocks, block_id, cumulative_blocks_storage) + i * detail::get_stride(block_id, block_pointers) + j

Note
  Returns nullptr in case of a scalar jacobi preconditioner (max_block_size = 1). The blocks array is empty in case of scalar jacobi preconditioner as the preconditioner is generated inside the batched solver kernel.

Returns
  the pointer to the memory used for storing the block data

## ◆ get_const_blocks_cumulative_offsets()

template<typename ValueType = default_precision, typename IndexType = int32>

const index_type * gko::batch::preconditioner::Jacobi< ValueType, IndexType >::get_const_blocks_cumulative_offsets | ( |  | ) | const
| inlinenoexcept

Returns the cumulative blocks storage array.

Note
  Returns nullptr in case of a scalar jacobi preconditioner (max_block_size = 1).

## ◆ get_const_map_block_to_row()

template<typename ValueType = default_precision, typename IndexType = int32>

const index_type * gko::batch::preconditioner::Jacobi< ValueType, IndexType >::get_const_map_block_to_row | ( |  | ) | const
| inlinenoexcept

Returns the mapping between the blocks and the row id.

Note
  Returns nullptr in case of a scalar jacobi preconditioner (max_block_size = 1).

## ◆ get_max_block_size()

template<typename ValueType = default_precision, typename IndexType = int32>

uint32 gko::batch::preconditioner::Jacobi< ValueType, IndexType >::get_max_block_size | ( |  | ) | const
| inlinenoexcept

Returns the max block size.

Returns
  the max block size

## ◆ get_num_blocks()

template<typename ValueType = default_precision, typename IndexType = int32>

size_type gko::batch::preconditioner::Jacobi< ValueType, IndexType >::get_num_blocks | ( |  | ) | const
| inlinenoexcept

Returns the number of blocks in an individual batch entry.

Returns
  the number of blocks in an individual batch entry.

## ◆ get_num_stored_elements()

template<typename ValueType = default_precision, typename IndexType = int32>

size_type gko::batch::preconditioner::Jacobi< ValueType, IndexType >::get_num_stored_elements | ( |  | ) | const
| inlinenoexcept

Returns the number of elements explicitly stored in the dense blocks.

Note
  Returns 0 in case of scalar jacobi preconditioner as the preconditioner is generated inside the batched solver kernels, hence, blocks array storage is not required.

Returns
  the number of elements explicitly stored in the dense blocks.

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

- ginkgo/core/preconditioner/batch_jacobi.hpp