Ginkgo: gko::experimental::reorder::Rcm< 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::experimental::reorder::Rcm< 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::experimental::reorder::Rcm< IndexType >:
[legend]
Collaboration diagram for gko::experimental::reorder::Rcm< IndexType >:
[legend]

## Classes
struct | parameters_type

## Public Types
using | index_type = IndexType
using | permutation_type = matrix::Permutation<index_type>
Public Types inherited from gko::EnablePolymorphicAssignment< Rcm< int32 > >
using | result_type

## Public Member Functions
const parameters_type & | get_parameters ()
| Returns the parameters used to construct the factory.
std::unique_ptr< permutation_type > | generate (std::shared_ptr< const LinOp > system_matrix) const
| Creates a new product from the given components.
Public Member Functions inherited from gko::EnablePolymorphicAssignment< Rcm< int32 > >
void | convert_to (result_type *result) const override
void | move_to (result_type *result) override

## Static Public Member Functions
static parameters_type | build ()
| Creates a new parameter_type to set up the factory.

## Friends
class | EnablePolymorphicObject< Rcm< IndexType >, LinOpFactory >
class | enable_parameters_type< parameters_type, Rcm< IndexType > >

## Detailed Description

template<typename IndexType = int32>
class gko::experimental::reorder::Rcm< 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.

The class is a LinOpFactory generating a Permutation matrix out of a Csr system matrix, to be used with Csr::permute(...).

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

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

## Member Function Documentation

## ◆ generate()

template<typename IndexType = int32>

std::unique_ptr< permutation_type > gko::experimental::reorder::Rcm< IndexType >::generate | ( | std::shared_ptr< const LinOp > | system_matrix | ) | const

Creates a new product from the given components.

The method will create an ComponentsType object from the arguments of this method, and pass it to the generate_impl() function which will create a new AbstractProductType.

Template Parameters

  Args | types of arguments passed to the constructor of ComponentsType

Parameters

  args | arguments passed to the constructor of ComponentsType

Returns
  an instance of AbstractProductType

Note
  This function overrides the default LinOpFactory::generate to return a Permutation instead of a generic LinOp, which would need to be cast to Permutation again to access its indices. It is only necessary because smart pointers aren't covariant.

## ◆ get_parameters()

template<typename IndexType = int32>

const parameters_type & gko::experimental::reorder::Rcm< IndexType >::get_parameters | ( |  | ) |
| inline

Returns the parameters used to construct the factory.

Returns
  the parameters used to construct the factory.

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

- ginkgo/core/reorder/rcm.hpp