Ginkgo: gko::reorder::Rcm< 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::reorder::Rcm< ValueType, IndexType > Class Template Reference

Rcm (Reverse Cuthill-McKee) is a reordering algorithm minimizing the bandwidth of a matrix. More...

`#include <ginkgo/core/reorder/rcm.hpp>`

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

## Classes
struct | parameters_type
class | Factory

## Public Types
using | SparsityMatrix = matrix::SparsityCsr<ValueType, IndexType>
using | PermutationMatrix = matrix::Permutation<IndexType>
using | value_type = ValueType
using | index_type = IndexType
Public Types inherited from gko::EnablePolymorphicAssignment< Rcm< default_precision, int32 > >
using | result_type

## Public Member Functions
std::shared_ptr< const PermutationMatrix > | get_permutation () const
| Gets the permutation (permutation matrix, output of the algorithm) of the linear operator.
std::shared_ptr< const PermutationMatrix > | get_inverse_permutation () const
| Gets the inverse permutation (permutation matrix, output of the algorithm) of the linear operator.
const parameters_type & | get_parameters () const
Public Member Functions inherited from gko::EnablePolymorphicAssignment< Rcm< 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 | EnablePolymorphicObject< Rcm, ReorderingBase< IndexType > >

## Detailed Description

template<typename ValueType = default_precision, typename IndexType = int32>
class gko::reorder::Rcm< ValueType, IndexType >

Rcm (Reverse Cuthill-McKee) is a reordering algorithm minimizing the bandwidth of a matrix.

Such a reordering typically also significantly reduces fill-in, though usually not as effective as more complex algorithms, specifically AMD and nested dissection schemes. The advantage of this algorithm is its low runtime. It requires the input matrix to be structurally symmetric.

Note
  This class is derived from polymorphic object but is not a LinOp as it does not make sense for this class to implement the apply methods. The objective of this class is to generate a reordering/permutation vector (in the form of the Permutation matrix), which can be used to apply to reorder a matrix as required.

There are two "starting strategies" currently available: minimum degree and pseudo-peripheral. These strategies control how a starting vertex for a connected component is chosen, which is then renumbered as first vertex in the component, starting the algorithm from there. In general, the bandwidths obtained by choosing a pseudo-peripheral vertex are slightly smaller than those obtained from choosing a vertex of minimum degree. On the other hand, this strategy is much more expensive, relatively. The algorithm for finding a pseudo-peripheral vertex as described in "Computer Solution of Sparse Linear Systems" (George, Liu, Ng, Oak Ridge National Laboratory, 1994) is implemented here.

Template Parameters

  ValueType | Type of the values of all matrices used in this class
  IndexType | Type of the indices of all matrices used in this class

## Member Function Documentation

## ◆ get_inverse_permutation()

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

std::shared_ptr< const PermutationMatrix > gko::reorder::Rcm< ValueType, IndexType >::get_inverse_permutation | ( |  | ) | const
| inline

Gets the inverse permutation (permutation matrix, output of the algorithm) of the linear operator.

Returns
  the inverse permutation (permutation matrix)

## ◆ get_permutation()

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

std::shared_ptr< const PermutationMatrix > gko::reorder::Rcm< ValueType, IndexType >::get_permutation | ( |  | ) | const
| inline

Gets the permutation (permutation matrix, output of the algorithm) of the linear operator.

Returns
  the permutation (permutation matrix)

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

- ginkgo/core/reorder/rcm.hpp