![]() |
Ginkgo
Generated from pipelines/2837190956 branch based on develop. Ginkgo version 2.0.0
A numerical linear algebra library targeting many-core architectures
|
The Incomplete Sparse Approximate Inverse (ISAI) Preconditioner generates an approximate inverse matrix for a given square matrix \(A\), lower triangular matrix \(L\), upper triangular matrix \(U\) or symmetric positive definite (s.p.d) matrix \(B\). More...
#include <ginkgo/core/preconditioner/isai.hpp>
Classes | |
| class | Factory |
| struct | parameters_type |
Public Types | |
| using | value_type = ValueType |
| using | index_type = IndexType |
| using | transposed_type = Isai< IsaiType==isai_type::general ? isai_type::general :IsaiType==isai_type::spd ? isai_type::spd :IsaiType==isai_type::lower ? isai_type::upper :isai_type::lower, ValueType, IndexType > |
| using | Comp = Composition< ValueType > |
| using | Csr = matrix::Csr< ValueType, IndexType > |
| using | Dense = matrix::Dense< ValueType > |
Public Member Functions | |
| std::shared_ptr< const typename std::conditional< IsaiType==isai_type::spd, Comp, Csr >::type > | get_approximate_inverse () const |
| Returns the approximate inverse of the given matrix (either a CSR matrix for IsaiType general, upper or lower or a composition of two CSR matrices for IsaiType spd). More... | |
| Isai & | operator= (const Isai &other) |
| Copy-assigns an ISAI preconditioner. More... | |
| Isai & | operator= (Isai &&other) |
| Move-assigns an ISAI preconditioner. More... | |
| Isai (const Isai &other) | |
| Copy-constructs an ISAI preconditioner. More... | |
| Isai (Isai &&other) | |
| Move-constructs an ISAI preconditioner. More... | |
| const parameters_type & | get_parameters () const |
| std::unique_ptr< LinOp > | transpose () const override |
| Returns a LinOp representing the transpose of the Transposable object. More... | |
| std::unique_ptr< LinOp > | conj_transpose () const override |
| Returns a LinOp representing the conjugate transpose of the Transposable object. More... | |
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) |
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... | |
Static Public Attributes | |
| static constexpr isai_type | type {IsaiType} |
The Incomplete Sparse Approximate Inverse (ISAI) Preconditioner generates an approximate inverse matrix for a given square matrix \(A\), lower triangular matrix \(L\), upper triangular matrix \(U\) or symmetric positive definite (s.p.d) matrix \(B\).
Let \( M_A \approx A^{-1} \) denote the approximate inverse of a general matrix \( A \), and similarly \( M_L \approx L^{-1} \), \( M_U \approx U^{-1} \) for lower and upper triangular matrices, and \( M_C \approx C^{-1} \) for the Cholesky factor of an s.p.d matrix \( B = C^T C \) (the last case is commonly called a Factorized Sparse Approximate Inverse, FSPAI). For a given vector \( x \) (which may carry multiple right-hand sides), applying the preconditioner computes
\[ \begin{aligned} \texttt{isai\_type::general} &: \quad M_A x, \\ \texttt{isai\_type::lower} &: \quad M_L x, \\ \texttt{isai\_type::upper} &: \quad M_U x, \\ \texttt{isai\_type::spd} &: \quad M_C^{T} M_C x. \end{aligned} \]
The sparsity pattern used for the approximate inverse of \( A \), \( L \) and \( U \) is the same as the sparsity pattern of the respective matrix. For \( B \), the sparsity pattern of \( M_C \) matches the sparsity pattern of the lower triangular half of \( B \).
Note that, except for the s.p.d case, in general \( \mathrm{ISAI}(A)^T \ne \mathrm{ISAI}(A^T) \).
width (warp size for CUDA) as number of elements per row in the sparse matrix. If there are more than width elements per row, the remaining elements will be ignored.| IsaiType | determines if the ISAI is generated for a general square matrix, a lower triangular matrix, an upper triangular matrix or an s.p.d matrix |
| ValueType | precision of matrix elements |
| IndexType | precision of matrix indexes |
| gko::preconditioner::Isai< IsaiType, ValueType, IndexType >::Isai | ( | const Isai< IsaiType, ValueType, IndexType > & | other | ) |
Copy-constructs an ISAI preconditioner.
Inherits the executor, shallow-copies the matrix and parameters.
| gko::preconditioner::Isai< IsaiType, ValueType, IndexType >::Isai | ( | Isai< IsaiType, ValueType, IndexType > && | other | ) |
Move-constructs an ISAI preconditioner.
Inherits the executor, moves the matrix and parameters. The moved-from object is empty (0x0 with nullptr matrix and default parameters)
|
overridevirtual |
Returns a LinOp representing the conjugate transpose of the Transposable object.
Implements gko::Transposable.
|
inline |
Returns the approximate inverse of the given matrix (either a CSR matrix for IsaiType general, upper or lower or a composition of two CSR matrices for IsaiType spd).
References gko::as().
| Isai& gko::preconditioner::Isai< IsaiType, ValueType, IndexType >::operator= | ( | const Isai< IsaiType, ValueType, IndexType > & | other | ) |
Copy-assigns an ISAI preconditioner.
Preserves the executor, shallow-copies the matrix and parameters. Creates a clone of the matrix if it is on the wrong executor.
| Isai& gko::preconditioner::Isai< IsaiType, ValueType, IndexType >::operator= | ( | Isai< IsaiType, ValueType, IndexType > && | other | ) |
Move-assigns an ISAI preconditioner.
Preserves the executor, moves the matrix and parameters. Creates a clone of the matrix if it is on the wrong executor. The moved-from object is empty (0x0 with nullptr matrix and default parameters)
|
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. |
|
overridevirtual |
Returns a LinOp representing the transpose of the Transposable object.
Implements gko::Transposable.
1.8.16