Ginkgo Generated from branch based on main. Ginkgo version 1.9.0
A numerical linear algebra library targeting many-core architectures
 
Loading...
Searching...
No Matches
gko::factorization::ParIlut< ValueType, IndexType >::parameters_type Struct Reference
Inheritance diagram for gko::factorization::ParIlut< ValueType, IndexType >::parameters_type:
[legend]
Collaboration diagram for gko::factorization::ParIlut< ValueType, IndexType >::parameters_type:
[legend]

Public Member Functions

template<typename... Args>
auto with_iterations (Args &&... _value) -> std::decay_t< decltype(*(this->self()))> &
 
template<typename... Args>
auto with_skip_sorting (Args &&... _value) -> std::decay_t< decltype(*(this->self()))> &
 
template<typename... Args>
auto with_approximate_select (Args &&... _value) -> std::decay_t< decltype(*(this->self()))> &
 
template<typename... Args>
auto with_deterministic_sample (Args &&... _value) -> std::decay_t< decltype(*(this->self()))> &
 
template<typename... Args>
auto with_fill_in_limit (Args &&... _value) -> std::decay_t< decltype(*(this->self()))> &
 
template<typename... Args>
auto with_l_strategy (Args &&... _value) -> std::decay_t< decltype(*(this->self()))> &
 
template<typename... Args>
auto with_u_strategy (Args &&... _value) -> std::decay_t< decltype(*(this->self()))> &
 
- Public Member Functions inherited from gko::enable_parameters_type< parameters_type, Factory >
parameters_type & with_loggers (Args &&... _value)
 Provides the loggers to be added to the factory and its generated objects in a fluent interface.
 
std::unique_ptr< Factory > on (std::shared_ptr< const Executor > exec) const
 Creates a new factory on the specified executor.
 

Public Attributes

size_type iterations {5}
 The number of total iterations of ParILUT that will be executed.
 
bool skip_sorting {false}
 true means it is known that the matrix given to this factory will be sorted first by row, then by column index, false means it is unknown or not sorted, so an additional sorting step will be performed during the factorization (it will not change the matrix given).
 
bool approximate_select {true}
 true means the candidate selection will use an inexact selection algorithm.
 
bool deterministic_sample {false}
 true means the sample used for the selection algorithm will be chosen deterministically.
 
double fill_in_limit {2.0}
 the amount of fill-in that is allowed in L and U compared to the ILU(0) factorization.
 
std::shared_ptr< typename matrix_type::strategy_type > l_strategy {nullptr}
 Strategy which will be used by the L matrix.
 
std::shared_ptr< typename matrix_type::strategy_type > u_strategy {nullptr}
 Strategy which will be used by the U matrix.
 

Additional Inherited Members

- Public Types inherited from gko::enable_parameters_type< parameters_type, Factory >
using factory
 

Member Data Documentation

◆ approximate_select

template<typename ValueType = default_precision, typename IndexType = int32>
bool gko::factorization::ParIlut< ValueType, IndexType >::parameters_type::approximate_select {true}

true means the candidate selection will use an inexact selection algorithm.

false means an exact selection algorithm will be used.

Using the approximate selection algorithm can give a significant speed-up, but may in the worst case cause the algorithm to vastly exceed its fill_in_limit. The exact selection needs more time, but more closely fulfills the fill_in_limit except for pathological cases (many candidates with equal magnitude).

The default behavior is to use approximate selection.

◆ deterministic_sample

template<typename ValueType = default_precision, typename IndexType = int32>
bool gko::factorization::ParIlut< ValueType, IndexType >::parameters_type::deterministic_sample {false}

true means the sample used for the selection algorithm will be chosen deterministically.

This is only relevant when using approximate_select. It is mostly used for testing.

The selection algorithm used for approximate_select uses a small sample of the input data to determine an approximate threshold. The choice of elements can either be randomized, i.e., we may use different elements during each execution, or deterministic, i.e., the element choices are always the same.

Note that even though the threshold selection step may be made deterministic this way, the calculation of the ILU factors can still be non-deterministic due to its asynchronous iterations.

The default behavior is to use a random sample.

◆ fill_in_limit

template<typename ValueType = default_precision, typename IndexType = int32>
double gko::factorization::ParIlut< ValueType, IndexType >::parameters_type::fill_in_limit {2.0}

the amount of fill-in that is allowed in L and U compared to the ILU(0) factorization.

The threshold for removing candidates from the intermediate L and U is set such that the resulting sparsity pattern has at most fill_in_limit times the number of non-zeros of the ILU(0) factorization. This selection is executed separately for both factors L and U.

The default value 2.0 allows twice the number of non-zeros in L and U compared to ILU(0).

◆ iterations

template<typename ValueType = default_precision, typename IndexType = int32>
size_type gko::factorization::ParIlut< ValueType, IndexType >::parameters_type::iterations {5}

The number of total iterations of ParILUT that will be executed.

The default value is 5.

◆ l_strategy

template<typename ValueType = default_precision, typename IndexType = int32>
std::shared_ptr<typename matrix_type::strategy_type> gko::factorization::ParIlut< ValueType, IndexType >::parameters_type::l_strategy {nullptr}

Strategy which will be used by the L matrix.

The default value nullptr will result in the strategy classical.

◆ skip_sorting

template<typename ValueType = default_precision, typename IndexType = int32>
bool gko::factorization::ParIlut< ValueType, IndexType >::parameters_type::skip_sorting {false}

true means it is known that the matrix given to this factory will be sorted first by row, then by column index, false means it is unknown or not sorted, so an additional sorting step will be performed during the factorization (it will not change the matrix given).

The matrix must be sorted for this factorization to work.

The system_matrix, which will be given to this factory, must be sorted (first by row, then by column) in order for the algorithm to work. If it is known that the matrix will be sorted, this parameter can be set to true to skip the sorting (therefore, shortening the runtime). However, if it is unknown or if the matrix is known to be not sorted, it must remain false, otherwise, the factorization might be incorrect.

◆ u_strategy

template<typename ValueType = default_precision, typename IndexType = int32>
std::shared_ptr<typename matrix_type::strategy_type> gko::factorization::ParIlut< ValueType, IndexType >::parameters_type::u_strategy {nullptr}

Strategy which will be used by the U matrix.

The default value nullptr will result in the strategy classical.


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