Ginkgo: gko::matrix::Sellp< 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::matrix::Sellp< ValueType, IndexType > Class Template Reference
Linear Operators » SpMV employing different Matrix formats | Linear Operators

SELL-P is a matrix format similar to ELL format. More...

`#include <ginkgo/core/matrix/sellp.hpp>`

Inheritance diagram for gko::matrix::Sellp< ValueType, IndexType >:
[legend]
Collaboration diagram for gko::matrix::Sellp< ValueType, IndexType >:
[legend]

## Public Types
using | value_type = ValueType
using | index_type = IndexType
using | mat_data = matrix_data<ValueType, IndexType>
using | device_mat_data = device_matrix_data<ValueType, IndexType>
using | absolute_type = remove_complex<Sellp>
Public Types inherited from gko::EnablePolymorphicAssignment< Sellp< default_precision, int32 > >
using | result_type
Public Types inherited from gko::DiagonalExtractable< default_precision >
using | value_type
Public Types inherited from gko::ReadableFromMatrixData< default_precision, int32 >
using | value_type
using | index_type
Public Types inherited from gko::WritableToMatrixData< default_precision, int32 >
using | value_type
using | index_type
Public Types inherited from gko::EnableAbsoluteComputation< remove_complex< Sellp< default_precision, int32 > > >
using | absolute_type

## Public Member Functions
void | convert_to (Sellp< next_precision< ValueType >, IndexType > *result) const override
void | move_to (Sellp< next_precision< ValueType >, IndexType > *result) override
void | convert_to (Dense< ValueType > *other) const override
void | move_to (Dense< ValueType > *other) override
void | convert_to (Csr< ValueType, IndexType > *other) const override
void | move_to (Csr< ValueType, IndexType > *other) override
void | read (const mat_data &data) override
void | read (const device_mat_data &data) override
void | read (device_mat_data &&data) override
void | write (mat_data &data) const override
std::unique_ptr< Diagonal< ValueType > > | extract_diagonal () const override
| Extracts the diagonal entries of the matrix into a vector.
std::unique_ptr< absolute_type > | compute_absolute () const override
| Gets the AbsoluteLinOp.
void | compute_absolute_inplace () override
| Compute absolute inplace on each element.
value_type * | get_values () noexcept
| Returns the values of the matrix.
const value_type * | get_const_values () const noexcept
| Returns the values of the matrix.
index_type * | get_col_idxs () noexcept
| Returns the column indexes of the matrix.
const index_type * | get_const_col_idxs () const noexcept
| Returns the column indexes of the matrix.
size_type * | get_slice_lengths () noexcept
| Returns the lengths(columns) of slices.
const size_type * | get_const_slice_lengths () const noexcept
| Returns the lengths(columns) of slices.
size_type * | get_slice_sets () noexcept
| Returns the offsets of slices.
const size_type * | get_const_slice_sets () const noexcept
| Returns the offsets of slices.
size_type | get_slice_size () const noexcept
| Returns the size of a slice.
size_type | get_stride_factor () const noexcept
| Returns the stride factor(t) of SELL-P.
size_type | get_total_cols () const noexcept
| Returns the total column number.
size_type | get_num_stored_elements () const noexcept
| Returns the number of elements explicitly stored in the matrix.
value_type & | val_at (size_type row, size_type slice_set, size_type idx) noexcept
| Returns the idx-th non-zero element of the row-th row with slice_set slice set.
value_type | val_at (size_type row, size_type slice_set, size_type idx) const noexcept
| Returns the idx-th non-zero element of the row-th row with slice_set slice set.
index_type & | col_at (size_type row, size_type slice_set, size_type idx) noexcept
| Returns the idx-th column index of the row-th row with slice_set slice set.
index_type | col_at (size_type row, size_type slice_set, size_type idx) const noexcept
| Returns the idx-th column index of the row-th row with slice_set slice set.
Sellp & | operator= (const Sellp &)
| Copy-assigns a Sellp matrix.
Sellp & | operator= (Sellp &&)
| Move-assigns a Sellp matrix.
| Sellp (const Sellp &)
| Copy-assigns a Sellp matrix.
| Sellp (Sellp &&)
| Move-assigns a Sellp matrix.
Public Member Functions inherited from gko::EnableLinOp< Sellp< default_precision, int32 > >
const Sellp< default_precision, int32 > * | apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) const
Public Member Functions inherited from gko::EnablePolymorphicAssignment< Sellp< default_precision, int32 > >
void | convert_to (result_type *result) const override
void | move_to (result_type *result) override
Public Member Functions inherited from gko::DiagonalExtractable< default_precision >
std::unique_ptr< LinOp > | extract_diagonal_linop () const override
| Extracts the diagonal entries of the matrix into a vector.
Public Member Functions inherited from gko::ReadableFromMatrixData< default_precision, int32 >
virtual void | read (const matrix_data< default_precision, int32 > &data)=0
| Reads a matrix from a matrix_data structure.
Public Member Functions inherited from gko::WritableToMatrixData< default_precision, int32 >
virtual void | write (matrix_data< default_precision, int32 > &data) const=0
| Writes a matrix to a matrix_data structure.
Public Member Functions inherited from gko::EnableAbsoluteComputation< remove_complex< Sellp< default_precision, int32 > > >
std::unique_ptr< LinOp > | compute_absolute_linop () const override
| Gets the absolute LinOp.

## Static Public Member Functions
static std::unique_ptr< Sellp > | create (std::shared_ptr< const Executor > exec, const dim< 2 > &size={}, size_type total_cols=0)
| Creates an uninitialized Sellp matrix of the specified size.
static std::unique_ptr< Sellp > | create (std::shared_ptr< const Executor > exec, const dim< 2 > &size, size_type slice_size, size_type stride_factor, size_type total_cols)
| Creates an uninitialized Sellp matrix of the specified size.

## Friends
class | EnablePolymorphicObject< Sellp, LinOp >
class | Dense< ValueType >
class | Csr< ValueType, IndexType >
class | Sellp< to_complex< ValueType >, IndexType >
class | Sellp< previous_precision< ValueType >, IndexType >

## Detailed Description

template<typename ValueType = default_precision, typename IndexType = int32>
class gko::matrix::Sellp< ValueType, IndexType >

SELL-P is a matrix format similar to ELL format.

The difference is that SELL-P format divides rows into smaller slices and store each slice with ELL format.

This implementation uses the column index value invalid_index<IndexType>() to mark padding entries that are not part of the sparsity pattern.

Template Parameters

  ValueType | precision of matrix elements
  IndexType | precision of matrix indexes

## Constructor & Destructor Documentation

## ◆ Sellp() [1/2]

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

gko::matrix::Sellp< ValueType, IndexType >::Sellp | ( | const Sellp< ValueType, IndexType > & |  | ) |

Copy-assigns a Sellp matrix.

Inherits the executor, copies the data and parameters.

References Sellp().

Referenced by operator=(), operator=(), Sellp(), and Sellp().

## ◆ Sellp() [2/2]

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

gko::matrix::Sellp< ValueType, IndexType >::Sellp | ( | Sellp< ValueType, IndexType > && |  | ) |

Move-assigns a Sellp matrix.

Inherits the executor, moves the data and parameters. The moved-from object is empty (0x0 with valid slice_sets and unchanged parameters).

References Sellp().

## Member Function Documentation

## ◆ col_at() [1/2]

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

index_type gko::matrix::Sellp< ValueType, IndexType >::col_at | ( | size_type | row,
|  | size_type | slice_set,
|  | size_type | idx ) const
| inlinenoexcept

Returns the idx-th column index of the row-th row with slice_set slice set.

Parameters

  row | the row of the requested element in the slice
  slice_set | the slice set of the slice
  idx | the idx-th stored element of the row in the slice

Note
  the method has to be called on the same Executor the matrix is stored at (e.g. trying to call this method on a GPU matrix from the CPU results in a runtime error)

## ◆ col_at() [2/2]

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

index_type & gko::matrix::Sellp< ValueType, IndexType >::col_at | ( | size_type | row,
|  | size_type | slice_set,
|  | size_type | idx )
| inlinenoexcept

Returns the idx-th column index of the row-th row with slice_set slice set.

Parameters

  row | the row of the requested element in the slice
  slice_set | the slice set of the slice
  idx | the idx-th stored element of the row in the slice

Note
  the method has to be called on the same Executor the matrix is stored at (e.g. trying to call this method on a GPU matrix from the CPU results in a runtime error)

References get_col_idxs().

## ◆ compute_absolute()

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

std::unique_ptr< absolute_type > gko::matrix::Sellp< ValueType, IndexType >::compute_absolute | ( |  | ) | const
| overridevirtual

Gets the AbsoluteLinOp.

Returns
  a pointer to the new absolute object

Implements gko::EnableAbsoluteComputation< remove_complex< Sellp< default_precision, int32 > > >.

## ◆ compute_absolute_inplace()

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

void gko::matrix::Sellp< ValueType, IndexType >::compute_absolute_inplace | ( |  | ) |
| overridevirtual

Compute absolute inplace on each element.

Implements gko::AbsoluteComputable.

## ◆ create() [1/2]

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

std::unique_ptr< Sellp > gko::matrix::Sellp< ValueType, IndexType >::create | ( | std::shared_ptr< const Executor > | exec,
|  | const dim< 2 > & | size,
|  | size_type | slice_size,
|  | size_type | stride_factor,
|  | size_type | total_cols )
| static

Creates an uninitialized Sellp matrix of the specified size.

Parameters

  exec | Executor associated to the matrix
  size | size of the matrix
  slice_size | number of rows in each slice
  stride_factor | factor for the stride in each slice (strides should be multiples of the stride_factor)
  total_cols | number of the sum of all cols in every slice.

Returns
  A smart pointer to the newly created matrix.

## ◆ create() [2/2]

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

std::unique_ptr< Sellp > gko::matrix::Sellp< ValueType, IndexType >::create | ( | std::shared_ptr< const Executor > | exec,
|  | const dim< 2 > & | size = {},
|  | size_type | total_cols = 0 )
| static

Creates an uninitialized Sellp matrix of the specified size.

(The slice_size and stride_factor are set to the default values.)

Parameters

  exec | Executor associated to the matrix
  size | size of the matrix
  total_cols | number of the sum of all cols in every slice.

Returns
  A smart pointer to the newly created matrix.

## ◆ extract_diagonal()

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

std::unique_ptr< Diagonal< ValueType > > gko::matrix::Sellp< ValueType, IndexType >::extract_diagonal | ( |  | ) | const
| overridevirtual

Extracts the diagonal entries of the matrix into a vector.

Parameters

  diag | the vector into which the diagonal will be written

Implements gko::DiagonalExtractable< default_precision >.

## ◆ get_col_idxs()

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

index_type * gko::matrix::Sellp< ValueType, IndexType >::get_col_idxs | ( |  | ) |
| inlinenoexcept

Returns the column indexes of the matrix.

Returns
  the column indexes of the matrix.

Referenced by col_at().

## ◆ get_const_col_idxs()

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

const index_type * gko::matrix::Sellp< ValueType, IndexType >::get_const_col_idxs | ( |  | ) | const
| inlinenoexcept

Returns the column indexes of the matrix.

Returns
  the column indexes of the matrix.

Note
  This is the constant version of the function, which can be significantly more memory efficient than the non-constant version, so always prefer this version.

## ◆ get_const_slice_lengths()

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

const size_type * gko::matrix::Sellp< ValueType, IndexType >::get_const_slice_lengths | ( |  | ) | const
| inlinenoexcept

Returns the lengths(columns) of slices.

Returns
  the lengths(columns) of slices.

Note
  This is the constant version of the function, which can be significantly more memory efficient than the non-constant version, so always prefer this version.

## ◆ get_const_slice_sets()

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

const size_type * gko::matrix::Sellp< ValueType, IndexType >::get_const_slice_sets | ( |  | ) | const
| inlinenoexcept

Returns the offsets of slices.

Returns
  the offsets of slices.

Note
  This is the constant version of the function, which can be significantly more memory efficient than the non-constant version, so always prefer this version.

## ◆ get_const_values()

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

const value_type * gko::matrix::Sellp< ValueType, IndexType >::get_const_values | ( |  | ) | const
| inlinenoexcept

Returns the values of the matrix.

Returns
  the values of the matrix.

Note
  This is the constant version of the function, which can be significantly more memory efficient than the non-constant version, so always prefer this version.

## ◆ get_num_stored_elements()

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

size_type gko::matrix::Sellp< ValueType, IndexType >::get_num_stored_elements | ( |  | ) | const
| inlinenoexcept

Returns the number of elements explicitly stored in the matrix.

Returns
  the number of elements explicitly stored in the matrix

## ◆ get_slice_lengths()

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

size_type * gko::matrix::Sellp< ValueType, IndexType >::get_slice_lengths | ( |  | ) |
| inlinenoexcept

Returns the lengths(columns) of slices.

Returns
  the lengths(columns) of slices.

## ◆ get_slice_sets()

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

size_type * gko::matrix::Sellp< ValueType, IndexType >::get_slice_sets | ( |  | ) |
| inlinenoexcept

Returns the offsets of slices.

Returns
  the offsets of slices.

## ◆ get_slice_size()

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

size_type gko::matrix::Sellp< ValueType, IndexType >::get_slice_size | ( |  | ) | const
| inlinenoexcept

Returns the size of a slice.

Returns
  the size of a slice.

## ◆ get_stride_factor()

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

size_type gko::matrix::Sellp< ValueType, IndexType >::get_stride_factor | ( |  | ) | const
| inlinenoexcept

Returns the stride factor(t) of SELL-P.

Returns
  the stride factor(t) of SELL-P.

## ◆ get_total_cols()

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

size_type gko::matrix::Sellp< ValueType, IndexType >::get_total_cols | ( |  | ) | const
| inlinenoexcept

Returns the total column number.

Returns
  the total column number.

## ◆ get_values()

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

value_type * gko::matrix::Sellp< ValueType, IndexType >::get_values | ( |  | ) |
| inlinenoexcept

Returns the values of the matrix.

Returns
  the values of the matrix.

## ◆ operator=() [1/2]

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

Sellp & gko::matrix::Sellp< ValueType, IndexType >::operator= | ( | const Sellp< ValueType, IndexType > & |  | ) |

Copy-assigns a Sellp matrix.

Preserves the executor, copies the data and parameters.

References Sellp().

## ◆ operator=() [2/2]

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

Sellp & gko::matrix::Sellp< ValueType, IndexType >::operator= | ( | Sellp< ValueType, IndexType > && |  | ) |

Move-assigns a Sellp matrix.

Preserves the executor, moves the data and parameters. The moved-from object is empty (0x0 with valid slice_sets and unchanged parameters).

References Sellp().

## ◆ val_at() [1/2]

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

value_type gko::matrix::Sellp< ValueType, IndexType >::val_at | ( | size_type | row,
|  | size_type | slice_set,
|  | size_type | idx ) const
| inlinenoexcept

Returns the idx-th non-zero element of the row-th row with slice_set slice set.

Parameters

  row | the row of the requested element in the slice
  slice_set | the slice set of the slice
  idx | the idx-th stored element of the row in the slice

Note
  the method has to be called on the same Executor the matrix is stored at (e.g. trying to call this method on a GPU matrix from the CPU results in a runtime error)

## ◆ val_at() [2/2]

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

value_type & gko::matrix::Sellp< ValueType, IndexType >::val_at | ( | size_type | row,
|  | size_type | slice_set,
|  | size_type | idx )
| inlinenoexcept

Returns the idx-th non-zero element of the row-th row with slice_set slice set.

Parameters

  row | the row of the requested element in the slice
  slice_set | the slice set of the slice
  idx | the idx-th stored element of the row in the slice

Note
  the method has to be called on the same Executor the matrix is stored at (e.g. trying to call this method on a GPU matrix from the CPU results in a runtime error)

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

- ginkgo/core/matrix/csr.hpp
- ginkgo/core/matrix/sellp.hpp