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

COO stores a matrix in the coordinate matrix format. More...

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

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

## Public Types
using | value_type = ValueType
using | index_type = IndexType
using | transposed_type = Coo<ValueType, IndexType>
using | mat_data = matrix_data<ValueType, IndexType>
using | device_mat_data = device_matrix_data<ValueType, IndexType>
using | absolute_type = remove_complex<Coo>
Public Types inherited from gko::EnablePolymorphicAssignment< Coo< 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< Coo< default_precision, int32 > > >
using | absolute_type

## Public Member Functions
void | convert_to (Coo< next_precision< ValueType >, IndexType > *result) const override
void | move_to (Coo< next_precision< ValueType >, IndexType > *result) override
void | convert_to (Csr< ValueType, IndexType > *other) const override
void | move_to (Csr< ValueType, IndexType > *other) override
void | convert_to (Dense< ValueType > *other) const override
void | move_to (Dense< ValueType > *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< LinOp > | transpose () const override
| Returns a LinOp representing the transpose of the Transposable object.
std::unique_ptr< LinOp > | conj_transpose () const override
| Returns a LinOp representing the conjugate transpose of the Transposable object.
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.
index_type * | get_row_idxs () noexcept
| Returns the row indexes of the matrix.
const index_type * | get_const_row_idxs () const noexcept
size_type | get_num_stored_elements () const noexcept
| Returns the number of elements explicitly stored in the matrix.
LinOp * | apply2 (ptr_param< const LinOp > b, ptr_param< LinOp > x)
| Applies Coo matrix axpy to a vector (or a sequence of vectors).
const LinOp * | apply2 (ptr_param< const LinOp > b, ptr_param< LinOp > x) const
LinOp * | apply2 (ptr_param< const LinOp > alpha, ptr_param< const LinOp > b, ptr_param< LinOp > x)
| Performs the operation x = alpha * Coo * b + x.
const LinOp * | apply2 (ptr_param< const LinOp > alpha, ptr_param< const LinOp > b, ptr_param< LinOp > x) const
Public Member Functions inherited from gko::EnableLinOp< Coo< default_precision, int32 > >
const Coo< default_precision, int32 > * | apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) const
Public Member Functions inherited from gko::EnablePolymorphicAssignment< Coo< 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< Coo< default_precision, int32 > > >
std::unique_ptr< LinOp > | compute_absolute_linop () const override
| Gets the absolute LinOp.

## Static Public Member Functions
static std::unique_ptr< Coo > | create (std::shared_ptr< const Executor > exec, const dim< 2 > &size=dim< 2 >{}, size_type num_nonzeros={})
| Creates an uninitialized COO matrix of the specified size.
static std::unique_ptr< Coo > | create (std::shared_ptr< const Executor > exec, const dim< 2 > &size, array< value_type > values, array< index_type > col_idxs, array< index_type > row_idxs)
| Creates a COO matrix from already allocated (and initialized) row index, column index and value arrays.
template<typename InputValueType, typename InputColumnIndexType, typename InputRowIndexType>
static std::unique_ptr< Coo > | create (std::shared_ptr< const Executor > exec, const dim< 2 > &size, std::initializer_list< InputValueType > values, std::initializer_list< InputColumnIndexType > col_idxs, std::initializer_list< InputRowIndexType > row_idxs)
| create(std::shared_ptr<const Executor>,const dim<2>&, array<value_type>, array<index_type>, array<index_type>)
static std::unique_ptr< const Coo > | create_const (std::shared_ptr< const Executor > exec, const dim< 2 > &size, gko::detail::const_array_view< ValueType > &&values, gko::detail::const_array_view< IndexType > &&col_idxs, gko::detail::const_array_view< IndexType > &&row_idxs)
| Creates a constant (immutable) Coo matrix from a set of constant arrays.

## Friends
class | EnablePolymorphicObject< Coo, LinOp >
class | Csr< ValueType, IndexType >
class | Dense< ValueType >
class | CooBuilder< ValueType, IndexType >
class | Coo< to_complex< ValueType >, IndexType >
class | Hybrid< ValueType, IndexType >
class | Coo< previous_precision< ValueType >, IndexType >

## Detailed Description

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

COO stores a matrix in the coordinate matrix format.

The nonzero elements are stored in an array row-wise (but not necessarily sorted by column index within a row). Two extra arrays contain the row and column indexes of each nonzero element of the matrix.

Template Parameters

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

## Member Function Documentation

## ◆ apply2() [1/4]

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

LinOp * gko::matrix::Coo< ValueType, IndexType >::apply2 | ( | ptr_param< const LinOp > | alpha,
|  | ptr_param< const LinOp > | b,
|  | ptr_param< LinOp > | x )

Performs the operation x = alpha * Coo * b + x.

Parameters

  alpha | scaling of the result of Coo * b
  b | vector(s) on which the operator is applied
  x | output vector(s)

Returns
  this

## ◆ apply2() [2/4]

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

const LinOp * gko::matrix::Coo< ValueType, IndexType >::apply2 | ( | ptr_param< const LinOp > | alpha,
|  | ptr_param< const LinOp > | b,
|  | ptr_param< LinOp > | x ) const

## ◆ apply2() [3/4]

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

LinOp * gko::matrix::Coo< ValueType, IndexType >::apply2 | ( | ptr_param< const LinOp > | b,
|  | ptr_param< LinOp > | x )

Applies Coo matrix axpy to a vector (or a sequence of vectors).

Performs the operation x = Coo * b + x

Parameters

  b | the input vector(s) on which the operator is applied
  x | the output vector(s) where the result is stored

Returns
  this

## ◆ apply2() [4/4]

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

const LinOp * gko::matrix::Coo< ValueType, IndexType >::apply2 | ( | ptr_param< const LinOp > | b,
|  | ptr_param< LinOp > | x ) const

## ◆ compute_absolute()

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

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

Gets the AbsoluteLinOp.

Returns
  a pointer to the new absolute object

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

## ◆ compute_absolute_inplace()

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

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

Compute absolute inplace on each element.

Implements gko::AbsoluteComputable.

## ◆ conj_transpose()

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

std::unique_ptr< LinOp > gko::matrix::Coo< ValueType, IndexType >::conj_transpose | ( |  | ) | const
| overridevirtual

Returns a LinOp representing the conjugate transpose of the Transposable object.

Returns
  a pointer to the new conjugate transposed object

Implements gko::Transposable.

## ◆ create() [1/3]

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

std::unique_ptr< Coo > gko::matrix::Coo< ValueType, IndexType >::create | ( | std::shared_ptr< const Executor > | exec,
|  | const dim< 2 > & | size,
|  | array< value_type > | values,
|  | array< index_type > | col_idxs,
|  | array< index_type > | row_idxs )
| static

Creates a COO matrix from already allocated (and initialized) row index, column index and value arrays.

Parameters

  exec | Executor associated to the matrix
  size | size of the matrix
  values | array of matrix values
  col_idxs | array of column indexes
  row_idxs | array of row pointers

Note
  If one of row_idxs, col_idxs or values is not an rvalue, not an array of IndexType, IndexType and ValueType, respectively, or is on the wrong executor, an internal copy of that array will be created, and the original array data will not be used in the matrix.

Returns
  A smart pointer to the matrix wrapping the input arrays (if they reside on the same executor as the matrix) or a copy of these arrays on the correct executor.

## ◆ create() [2/3]

template<typename ValueType = default_precision, typename IndexType = int32>
template<typename InputValueType, typename InputColumnIndexType, typename InputRowIndexType>

std::unique_ptr< Coo > gko::matrix::Coo< ValueType, IndexType >::create | ( | std::shared_ptr< const Executor > | exec,
|  | const dim< 2 > & | size,
|  | std::initializer_list< InputValueType > | values,
|  | std::initializer_list< InputColumnIndexType > | col_idxs,
|  | std::initializer_list< InputRowIndexType > | row_idxs )
| inlinestatic

create(std::shared_ptr<const Executor>,const dim<2>&, array<value_type>, array<index_type>, array<index_type>)

create(std::shared_ptr<const Executor>,const dim<2>&, array<value_type>, array<index_type>, array<index_type>)

## ◆ create() [3/3]

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

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

Creates an uninitialized COO matrix of the specified size.

Parameters

  exec | Executor associated to the matrix
  size | size of the matrix
  num_nonzeros | number of nonzeros

Returns
  A smart pointer to the newly created matrix.

Referenced by create().

## ◆ create_const()

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

std::unique_ptr< const Coo > gko::matrix::Coo< ValueType, IndexType >::create_const | ( | std::shared_ptr< const Executor > | exec,
|  | const dim< 2 > & | size,
|  | gko::detail::const_array_view< ValueType > && | values,
|  | gko::detail::const_array_view< IndexType > && | col_idxs,
|  | gko::detail::const_array_view< IndexType > && | row_idxs )
| static

Creates a constant (immutable) Coo matrix from a set of constant arrays.

Parameters

  exec | the executor to create the matrix on
  size | the dimensions of the matrix
  values | the value array of the matrix
  col_idxs | the column index array of the matrix
  row_ptrs | the row index array of the matrix

Returns
  A smart pointer to the constant matrix wrapping the input arrays (if they reside on the same executor as the matrix) or a copy of these arrays on the correct executor.

## ◆ extract_diagonal()

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

std::unique_ptr< Diagonal< ValueType > > gko::matrix::Coo< 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::Coo< ValueType, IndexType >::get_col_idxs | ( |  | ) |
| inlinenoexcept

Returns the column indexes of the matrix.

Returns
  the column indexes of the matrix.

## ◆ get_const_col_idxs()

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

const index_type * gko::matrix::Coo< 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_row_idxs()

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

const index_type * gko::matrix::Coo< ValueType, IndexType >::get_const_row_idxs | ( |  | ) | const
| inlinenoexcept

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::Coo< 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::Coo< 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_row_idxs()

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

index_type * gko::matrix::Coo< ValueType, IndexType >::get_row_idxs | ( |  | ) |
| inlinenoexcept

Returns the row indexes of the matrix.

Returns
  the row indexes of the matrix.

## ◆ get_values()

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

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

Returns the values of the matrix.

Returns
  the values of the matrix.

## ◆ transpose()

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

std::unique_ptr< LinOp > gko::matrix::Coo< ValueType, IndexType >::transpose | ( |  | ) | const
| overridevirtual

Returns a LinOp representing the transpose of the Transposable object.

Returns
  a pointer to the new transposed object

Implements gko::Transposable.

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

- ginkgo/core/matrix/coo.hpp