![]() |
Ginkgo
Generated from pipelines/2662685947 branch based on develop. Ginkgo version 2.0.0
A numerical linear algebra library targeting many-core architectures
|
Rcm (Reverse Cuthill-McKee) is a reordering algorithm minimizing the bandwidth of a matrix. More...
#include <ginkgo/core/reorder/rcm.hpp>
Classes | |
| class | Factory |
| struct | parameters_type |
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::reorder::ReorderingBase< IndexType > | |
| using | index_type = IndexType |
Public Member Functions | |
| std::shared_ptr< const PermutationMatrix > | get_permutation () const |
| Gets the permutation (permutation matrix, output of the algorithm) of the linear operator. More... | |
| std::shared_ptr< const PermutationMatrix > | get_inverse_permutation () const |
| Gets the inverse permutation (permutation matrix, output of the algorithm) of the linear operator. More... | |
| const parameters_type & | get_parameters () const |
Public Member Functions inherited from gko::reorder::ReorderingBase< IndexType > | |
| const array< index_type > & | get_permutation_array () const |
Public Member Functions inherited from gko::PolymorphicObject | |
| 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) |
Static Public Member Functions | |
| static auto | build () -> decltype(Factory ::create()) |
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.
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.
| ValueType | Type of the values of all matrices used in this class |
| IndexType | Type of the indices of all matrices used in this class |
|
inline |
Gets the inverse permutation (permutation matrix, output of the algorithm) of the linear operator.
|
inline |
Gets the permutation (permutation matrix, output of the algorithm) of the linear operator.
1.8.16