Ginkgo: gko::matrix_data< ValueType, IndexType > Struct 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_data< ValueType, IndexType > Struct Template Reference

This structure is used as an intermediate data type to store a sparse matrix. More...

`#include <ginkgo/core/base/matrix_data.hpp>`

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

## Public Types
using | value_type = ValueType
using | index_type = IndexType
using | nonzero_type = matrix_data_entry<value_type, index_type>

## Public Member Functions
| matrix_data (dim< 2 > size_=dim< 2 >{}, ValueType value=zero< ValueType >())
| Initializes a matrix filled with the specified value.
template<typename RandomDistribution, typename RandomEngine>
| matrix_data (dim< 2 > size_, RandomDistribution &&dist, RandomEngine &&engine)
| Initializes a matrix with random values from the specified distribution.
| matrix_data (std::initializer_list< std::initializer_list< ValueType > > values)
| List-initializes the structure from a matrix of values.
| matrix_data (dim< 2 > size_, std::initializer_list< detail::input_triple< ValueType, IndexType > > nonzeros_)
| Initializes the structure from a list of nonzeros.
| matrix_data (dim< 2 > size_, const matrix_data &block)
| Initializes a matrix out of a matrix block via duplication.
template<typename Accessor>
| matrix_data (const range< Accessor > &data)
| Initializes a matrix from a range.
void | sort_row_major ()
| Sorts the nonzero vector so the values follow row-major order.
void | ensure_row_major_order ()
| Sorts the nonzero vector so the values follow row-major order.
void | remove_zeros ()
| Remove entries with value zero from the matrix data.
void | sum_duplicates ()
| Sum up all values that refer to the same matrix entry.

## Static Public Member Functions
static matrix_data | diag (dim< 2 > size_, ValueType value)
| Initializes a diagonal matrix.
static matrix_data | diag (dim< 2 > size_, std::initializer_list< ValueType > nonzeros_)
| Initializes a diagonal matrix using a list of diagonal elements.
static matrix_data | diag (dim< 2 > size_, const matrix_data &block)
| Initializes a block-diagonal matrix.
template<typename ForwardIterator>
static matrix_data | diag (ForwardIterator begin, ForwardIterator end)
| Initializes a block-diagonal matrix from a list of diagonal blocks.
static matrix_data | diag (std::initializer_list< matrix_data > blocks)
| Initializes a block-diagonal matrix from a list of diagonal blocks.
template<typename RandomDistribution, typename RandomEngine>
static matrix_data | cond (size_type size, remove_complex< ValueType > condition_number, RandomDistribution &&dist, RandomEngine &&engine, size_type num_reflectors)
| Initializes a random dense matrix with a specific condition number.
template<typename RandomDistribution, typename RandomEngine>
static matrix_data | cond (size_type size, remove_complex< ValueType > condition_number, RandomDistribution &&dist, RandomEngine &&engine)
| Initializes a random dense matrix with a specific condition number.

## Public Attributes
dim< 2 > | size
| Size of the matrix.
std::vector< nonzero_type > | nonzeros
| A vector of tuples storing the non-zeros of the matrix.

## Detailed Description

template<typename ValueType = default_precision, typename IndexType = int32>
struct gko::matrix_data< ValueType, IndexType >

This structure is used as an intermediate data type to store a sparse matrix.

The matrix is stored as a sequence of nonzero elements, where each element is a triple of the form (row_index, column_index, value).

Note
  All Ginkgo functions returning such a structure will return the nonzeros sorted in row-major order.
  All Ginkgo functions that take this structure as input expect that the nonzeros are sorted in row-major order and that the index pair (row_index, column_index) of each nonzero is unique.
  This structure is not optimized for usual access patterns and it can only exist on the CPU. Thus, it should only be used for utility functions which do not have to be optimized for performance.

Template Parameters

  ValueType | type of matrix values stored in the structure
  IndexType | type of matrix indexes stored in the structure

## Constructor & Destructor Documentation

## ◆ matrix_data() [1/6]

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

gko::matrix_data< ValueType, IndexType >::matrix_data | ( | dim< 2 > | size_ = dim<2>{},
|  | ValueType | value = zero<ValueType>() )
| inline

Initializes a matrix filled with the specified value.

Parameters

  size_ | dimensions of the matrix
  value | value used to fill the elements of the matrix

## ◆ matrix_data() [2/6]

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

gko::matrix_data< ValueType, IndexType >::matrix_data | ( | dim< 2 > | size_,
|  | RandomDistribution && | dist,
|  | RandomEngine && | engine )
| inline

Initializes a matrix with random values from the specified distribution.

Template Parameters

  RandomDistribution | random distribution type
  RandomEngine | random engine type

Parameters

  size_ | dimensions of the matrix
  dist | random distribution of the elements of the matrix
  engine | random engine used to generate random values

## ◆ matrix_data() [3/6]

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

gko::matrix_data< ValueType, IndexType >::matrix_data | ( | std::initializer_list< std::initializer_list< ValueType > > | values | ) |
| inline

List-initializes the structure from a matrix of values.

Parameters

  values | a 2D braced-init-list of matrix values.

## ◆ matrix_data() [4/6]

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

gko::matrix_data< ValueType, IndexType >::matrix_data | ( | dim< 2 > | size_,
|  | std::initializer_list< detail::input_triple< ValueType, IndexType > > | nonzeros_ )
| inline

Initializes the structure from a list of nonzeros.

Parameters

  size_ | dimensions of the matrix
  nonzeros_ | list of nonzero elements

## ◆ matrix_data() [5/6]

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

gko::matrix_data< ValueType, IndexType >::matrix_data | ( | dim< 2 > | size_,
|  | const matrix_data< ValueType, IndexType > & | block )
| inline

Initializes a matrix out of a matrix block via duplication.

Parameters

  size | size of the block-matrix (in blocks)
  diag_block | matrix block used to fill the complete matrix

## ◆ matrix_data() [6/6]

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

gko::matrix_data< ValueType, IndexType >::matrix_data | ( | const range< Accessor > & | data | ) |
| inline

Initializes a matrix from a range.

Template Parameters

  Accessor | accessor type of the input range

Parameters

  data | range used to initialize the matrix

## Member Function Documentation

## ◆ cond() [1/2]

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

matrix_data gko::matrix_data< ValueType, IndexType >::cond | ( | size_type | size,
|  | remove_complex< ValueType > | condition_number,
|  | RandomDistribution && | dist,
|  | RandomEngine && | engine )
| inlinestatic

Initializes a random dense matrix with a specific condition number.

The matrix is generated by applying a series of random Hausholder reflectors to a diagonal matrix with diagonal entries uniformly distributed between sqrt(condition_number) and 1/sqrt(condition_number).

This version of the function applies size - 1 reflectors to each side of the diagonal matrix.

Template Parameters

  RandomDistribution | the type of the random distribution
  RandomEngine | the type of the random engine

Parameters

  size | number of rows and columns of the matrix
  condition_number | condition number of the matrix
  dist | random distribution used to generate reflectors
  engine | random engine used to generate reflectors

Returns
  the dense matrix with the specified condition number

## ◆ cond() [2/2]

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

matrix_data gko::matrix_data< ValueType, IndexType >::cond | ( | size_type | size,
|  | remove_complex< ValueType > | condition_number,
|  | RandomDistribution && | dist,
|  | RandomEngine && | engine,
|  | size_type | num_reflectors )
| inlinestatic

Initializes a random dense matrix with a specific condition number.

The matrix is generated by applying a series of random Hausholder reflectors to a diagonal matrix with diagonal entries uniformly distributed between sqrt(condition_number) and 1/sqrt(condition_number).

Template Parameters

  RandomDistribution | the type of the random distribution
  RandomEngine | the type of the random engine

Parameters

  size | number of rows and columns of the matrix
  condition_number | condition number of the matrix
  dist | random distribution used to generate reflectors
  engine | random engine used to generate reflectors
  num_reflectors | number of reflectors to apply from each side

Returns
  the dense matrix with the specified condition number

Referenced by gko::matrix_data< value_type, index_type >::cond().

## ◆ diag() [1/5]

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

matrix_data gko::matrix_data< ValueType, IndexType >::diag | ( | dim< 2 > | size_,
|  | const matrix_data< ValueType, IndexType > & | block )
| inlinestatic

Initializes a block-diagonal matrix.

Parameters

  size_ | the size of the matrix
  diag_block | matrix used to fill diagonal blocks

Returns
  the block-diagonal matrix

## ◆ diag() [2/5]

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

matrix_data gko::matrix_data< ValueType, IndexType >::diag | ( | dim< 2 > | size_,
|  | std::initializer_list< ValueType > | nonzeros_ )
| inlinestatic

Initializes a diagonal matrix using a list of diagonal elements.

Parameters

  size_ | dimensions of the matrix
  nonzeros_ | list of diagonal elements

Returns
  the diagonal matrix

## ◆ diag() [3/5]

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

matrix_data gko::matrix_data< ValueType, IndexType >::diag | ( | dim< 2 > | size_,
|  | ValueType | value )
| inlinestatic

Initializes a diagonal matrix.

Parameters

  size_ | dimensions of the matrix
  value | value used to fill the elements of the matrix

Returns
  the diagonal matrix

Referenced by gko::matrix_data< value_type, index_type >::diag().

## ◆ diag() [4/5]

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

matrix_data gko::matrix_data< ValueType, IndexType >::diag | ( | ForwardIterator | begin,
|  | ForwardIterator | end )
| inlinestatic

Initializes a block-diagonal matrix from a list of diagonal blocks.

Template Parameters

  ForwardIterator | type of list iterator

Parameters

  begin | the first iterator of the list
  end | the last iterator of the list

Returns
  the block-diagonal matrix with diagonal blocks set to the blocks between begin (inclusive) and end (exclusive)

## ◆ diag() [5/5]

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

matrix_data gko::matrix_data< ValueType, IndexType >::diag | ( | std::initializer_list< matrix_data< ValueType, IndexType > > | blocks | ) |
| inlinestatic

Initializes a block-diagonal matrix from a list of diagonal blocks.

Parameters

  blocks | a list of blocks to initialize from

Returns
  the block-diagonal matrix with diagonal blocks set to the blocks passed in blocks

## ◆ sum_duplicates()

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

void gko::matrix_data< ValueType, IndexType >::sum_duplicates | ( |  | ) |
| inline

Sum up all values that refer to the same matrix entry.

The result is sorted in row-major order.

## Member Data Documentation

## ◆ nonzeros

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

std::vector<nonzero_type> gko::matrix_data< ValueType, IndexType >::nonzeros

A vector of tuples storing the non-zeros of the matrix.

The first two elements of the tuple are the row index and the column index of a matrix element, and its third element is the value at that position.

Referenced by gko::matrix_data< value_type, index_type >::diag(), gko::matrix_data< value_type, index_type >::diag(), gko::matrix_data< value_type, index_type >::diag(), gko::matrix_assembly_data< ValueType, IndexType >::get_ordered_data(), and gko::matrix_data< value_type, index_type >::matrix_data().

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

- ginkgo/core/base/matrix_data.hpp