![]() |
Ginkgo
Generated from pipelines/2969282958 branch based on develop. Ginkgo version 2.0.0
A numerical linear algebra library targeting many-core architectures
|
Parallel graph match (Pgm) is the aggregate method introduced in the paper M. More...
#include <ginkgo/core/multigrid/pgm.hpp>
Classes | |
| class | Factory |
| struct | parameters_type |
| class | reuse_data_type |
| Records the aggregates, the transfer operators and the coarse-to-fine mappings of the first generate_reuse() call. More... | |
Public Types | |
| using | value_type = ValueType |
| using | index_type = IndexType |
Public Types inherited from gko::multigrid::EnableMultigridLevel< ValueType > | |
| using | value_type = ValueType |
Public Types inherited from gko::UseComposition< ValueType > | |
| using | value_type = ValueType |
Public Member Functions | |
| std::shared_ptr< const LinOp > | get_system_matrix () const |
| Returns the system operator (matrix) of the linear system. More... | |
| IndexType * | get_agg () noexcept |
| Returns the aggregate group. More... | |
| const IndexType * | get_const_agg () const noexcept |
| Returns the aggregate group. More... | |
| const parameters_type & | get_parameters () const |
Public Member Functions inherited from gko::LinOp | |
| void | apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) const |
| Applies a linear operator to a vector (or a sequence of vectors). More... | |
| void | apply (ptr_param< const LinOp > alpha, ptr_param< const LinOp > b, ptr_param< const LinOp > beta, ptr_param< LinOp > x) const |
| Performs the operation x = alpha * op(b) + beta * x. More... | |
| const dim< 2 > & | get_size () const noexcept |
| Returns the size of the operator. More... | |
| virtual bool | apply_uses_initial_guess () const |
| Returns true if the linear operator uses the data given in x as an initial guess. More... | |
| LinOp & | operator= (const LinOp &)=default |
| Copy-assigns a LinOp. More... | |
| LinOp & | operator= (LinOp &&other) |
| Move-assigns a LinOp. More... | |
| LinOp (const LinOp &)=default | |
| Copy-constructs a LinOp. More... | |
| LinOp (LinOp &&other) | |
| Move-constructs a LinOp. More... | |
Public Member Functions inherited from gko::PolymorphicObject | |
| virtual void | validate_data () const |
| Throws gko::InvalidData exception if we found the data inside the object does not fulfill certain property up to our knowledge. | |
| PolymorphicObject & | operator= (const PolymorphicObject &) |
| std::shared_ptr< const Executor > | get_executor () const noexcept |
| Returns the Executor of the object. More... | |
Public Member Functions inherited from gko::log::EnableLogging< PolymorphicObject > | |
| void | add_logger (std::shared_ptr< const Logger > logger) override |
| void | remove_logger (const Logger *logger) override |
| void | remove_logger (ptr_param< const Logger > logger) |
| const std::vector< std::shared_ptr< const Logger > > & | get_loggers () const override |
| void | clear_loggers () override |
Public Member Functions inherited from gko::log::Loggable | |
| void | remove_logger (ptr_param< const Logger > logger) |
Public Member Functions inherited from gko::multigrid::EnableMultigridLevel< ValueType > | |
| std::shared_ptr< const LinOp > | get_fine_op () const override |
| Returns the operator on fine level. More... | |
| std::shared_ptr< const LinOp > | get_restrict_op () const override |
| Returns the restrict operator. More... | |
| std::shared_ptr< const LinOp > | get_coarse_op () const override |
| Returns the operator on coarse level. More... | |
| std::shared_ptr< const LinOp > | get_prolong_op () const override |
| Returns the prolong operator. More... | |
Public Member Functions inherited from gko::UseComposition< ValueType > | |
| std::shared_ptr< Composition< ValueType > > | get_composition () const |
| Returns the composition operators. More... | |
| std::shared_ptr< const LinOp > | get_operator_at (size_type index) const |
| Returns the operator at index-th position of composition. More... | |
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. More... | |
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.
The factory supports LinOpFactory::generate_reuse(): later calls on a matrix with the same sparsity pattern keep the aggregates and only recompute the coarse matrix, so the result can differ from generate(). The aggregates come from the values of the first matrix, so it should be representative of the later ones.
| ValueType | precision of matrix elements |
| IndexType | precision of matrix indexes |
|
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.
References gko::array< ValueType >::get_data().
|
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.
References gko::array< ValueType >::get_const_data().
|
inline |
Returns the system operator (matrix) of the linear system.
|
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.
| 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. |
1.8.16