Ginkgo: gko::multigrid::Pgm< 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::multigrid::Pgm< ValueType, IndexType > Class Template Reference
Linear Operators

Parallel graph match (Pgm) is the aggregate method introduced in the paper M. More...

`#include <ginkgo/core/multigrid/pgm.hpp>`

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

## Classes
struct | parameters_type
class | Factory

## Public Types
using | value_type = ValueType
using | index_type = IndexType
Public Types inherited from gko::EnablePolymorphicAssignment< Pgm< default_precision, int32 > >
using | result_type
Public Types inherited from gko::multigrid::EnableMultigridLevel< default_precision >
using | value_type
Public Types inherited from gko::UseComposition< default_precision >
using | value_type

## Public Member Functions
std::shared_ptr< const LinOp > | get_system_matrix () const
| Returns the system operator (matrix) of the linear system.
IndexType * | get_agg () noexcept
| Returns the aggregate group.
const IndexType * | get_const_agg () const noexcept
| Returns the aggregate group.
const parameters_type & | get_parameters () const
Public Member Functions inherited from gko::EnableLinOp< Pgm< default_precision, int32 > >
const Pgm< default_precision, int32 > * | apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) const
Public Member Functions inherited from gko::EnablePolymorphicAssignment< Pgm< default_precision, int32 > >
void | convert_to (result_type *result) const override
void | move_to (result_type *result) override
Public Member Functions inherited from gko::multigrid::EnableMultigridLevel< default_precision >
std::shared_ptr< const LinOp > | get_fine_op () const override
| Returns the operator on fine level.
std::shared_ptr< const LinOp > | get_restrict_op () const override
| Returns the restrict operator.
std::shared_ptr< const LinOp > | get_coarse_op () const override
| Returns the operator on coarse level.
std::shared_ptr< const LinOp > | get_prolong_op () const override
| Returns the prolong operator.
Public Member Functions inherited from gko::UseComposition< default_precision >
std::shared_ptr< Composition< default_precision > > | get_composition () const
| Returns the composition operators.
std::shared_ptr< const LinOp > | get_operator_at (size_type index) const
| Returns the operator at index-th position of composition.

## Static Public Member Functions
static auto | build () -> decltype(Factory::create())
static parameters_type | parse (const config::pnode &config, const config::registry &context, const config::type_descriptor &td_for_child=config::make_type_descriptor< ValueType, IndexType >())
| Create the parameters from the property_tree.

## Friends
class | EnableLinOp< Pgm >
class | EnablePolymorphicObject< Pgm, LinOp >

## Detailed Description

template<typename ValueType = default_precision, typename IndexType = int32>
class gko::multigrid::Pgm< ValueType, IndexType >

Parallel graph match (Pgm) is the aggregate method introduced in the paper M.

Naumov et al., "AmgX: A Library for GPU Accelerated Algebraic Multigrid and Preconditioned Iterative Methods". Current implementation only contains size = 2 version.

Pgm creates the aggregate group according to the matrix value not the structure. Pgm gives two steps (one-phase handshaking) to group the elements. 1: get the strongest neighbor of each unaggregated element. 2: group the elements whose strongest neighbor is each other. repeating until reaching the given conditions. After that, the un-aggregated elements are assigned to an aggregated group or are left alone.

Template Parameters

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

## Member Function Documentation

## ◆ get_agg()

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

IndexType * gko::multigrid::Pgm< ValueType, IndexType >::get_agg | ( |  | ) |
| inlinenoexcept

Returns the aggregate group.

Aggregate group whose size is same as the number of rows. Stores the mapping information from row index to coarse row index. i.e., agg[row_idx] = coarse_row_idx.

Returns
  the aggregate group.

## ◆ get_const_agg()

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

const IndexType * gko::multigrid::Pgm< ValueType, IndexType >::get_const_agg | ( |  | ) | const
| inlinenoexcept

Returns the aggregate group.

Aggregate group whose size is same as the number of rows. Stores the mapping information from row index to coarse row index. i.e., agg[row_idx] = coarse_row_idx.

Returns
  the aggregate group.

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_system_matrix()

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

std::shared_ptr< const LinOp > gko::multigrid::Pgm< ValueType, IndexType >::get_system_matrix | ( |  | ) | const
| inline

Returns the system operator (matrix) of the linear system.

Returns
  the system operator (matrix)

## ◆ parse()

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

parameters_type gko::multigrid::Pgm< ValueType, IndexType >::parse | ( | const config::pnode & | config,
|  | const config::registry & | context,
|  | const config::type_descriptor & | td_for_child = config::make_type_descriptor< ValueType, IndexType >() )
| static

Create the parameters from the property_tree.

Because this is directly tied to the specific type, the value/index type settings within config are ignored and type_descriptor is only used for children configs.

Parameters

  config | the property tree for setting
  context | the registry
  td_for_child | the type descriptor for children configs. The default uses the value/index type of this class.

Returns
  parameters

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

- ginkgo/core/distributed/matrix.hpp
- ginkgo/core/multigrid/pgm.hpp