![]() |
deal.II version GIT relicensing-6834-g5b78e6bcdf 2026-10-01 11:20:01+00:00
|
#include <deal.II/lac/ginkgo_solver.h>
This class forms the base class for all of Ginkgo's iterative solvers. The various derived classes only take the additional data that is specific to them and solve the given linear system. The entire collection of solvers that Ginkgo implements is available at documentation and manual pages.
Definition at line 48 of file ginkgo_solver.h.
Public Member Functions | |
| SolverBase (SolverControl &solver_control, const std::string &exec_type) | |
| virtual | ~SolverBase ()=default |
| void | initialize (const SparseMatrix< ValueType > &matrix) |
| void | apply (Vector< ValueType > &solution, const Vector< ValueType > &rhs) |
| void | solve (const SparseMatrix< ValueType > &matrix, Vector< ValueType > &solution, const Vector< ValueType > &rhs) |
| SolverControl & | control () const |
Protected Attributes | |
| SolverControl & | solver_control |
| std::shared_ptr< gko::LinOpFactory > | solver_gen |
| std::shared_ptr< gko::stop::ResidualNormReduction<>::Factory > | residual_criterion |
| std::shared_ptr< gko::log::Convergence<> > | convergence_logger |
| std::shared_ptr< gko::stop::Combined::Factory > | combined_factory |
| std::shared_ptr< gko::Executor > | executor |
Private Member Functions | |
| void | initialize_ginkgo_log () |
Private Attributes | |
| std::shared_ptr< gko::matrix::Csr< ValueType, IndexType > > | system_matrix |
| const std::string | exec_type |
| SolverBase< ValueType, IndexType >::SolverBase | ( | SolverControl & | solver_control, |
| const std::string & | exec_type | ||
| ) |
Constructor.
The exec_type defines the paradigm where the solution is computed. It is a string and the choices are "omp" , "reference" or "cuda". The respective strings create the respective executors as given below.
Ginkgo currently supports three different executor types:
The following code snippet demonstrates the using of the OpenMP executor to create a solver which would use the OpenMP paradigm to the solve the system on the CPU.
The solver_control object is the same as for other deal.II iterative solvers.
Definition at line 33 of file ginkgo_solver.cc.
|
virtualdefault |
Destructor.
| void SolverBase< ValueType, IndexType >::initialize | ( | const SparseMatrix< ValueType > & | matrix | ) |
Initialize the matrix and copy over its data to Ginkgo's data structures.
Definition at line 217 of file ginkgo_solver.cc.
| void SolverBase< ValueType, IndexType >::apply | ( | Vector< ValueType > & | solution, |
| const Vector< ValueType > & | rhs | ||
| ) |
Solve the linear system Ax=b. Dependent on the information provided by derived classes one of Ginkgo's linear solvers is chosen.
Definition at line 87 of file ginkgo_solver.cc.
| void SolverBase< ValueType, IndexType >::solve | ( | const SparseMatrix< ValueType > & | matrix, |
| Vector< ValueType > & | solution, | ||
| const Vector< ValueType > & | rhs | ||
| ) |
Solve the linear system Ax=b. Dependent on the information provided by derived classes one of Ginkgo's linear solvers is chosen.
Definition at line 291 of file ginkgo_solver.cc.
| SolverControl & SolverBase< ValueType, IndexType >::control | ( | ) | const |
Access to the object that controls convergence.
Definition at line 208 of file ginkgo_solver.cc.
|
private |
Initialize the Ginkgo logger object with event masks. Refer to Ginkgo's logging event masks.
Definition at line 75 of file ginkgo_solver.cc.
|
protected |
Reference to the object that controls convergence of the iterative solvers.
Definition at line 146 of file ginkgo_solver.h.
|
protected |
The Ginkgo generated solver factory object.
Definition at line 151 of file ginkgo_solver.h.
|
protected |
The residual criterion object that controls the reduction of the residual based on the tolerance set in the solver_control member.
Definition at line 158 of file ginkgo_solver.h.
|
protected |
The Ginkgo convergence logger used to check for convergence and other solver data if needed.
Definition at line 164 of file ginkgo_solver.h.
|
protected |
The Ginkgo combined factory object is used to create a combined stopping criterion to be passed to the solver.
Definition at line 170 of file ginkgo_solver.h.
|
protected |
The execution paradigm in Ginkgo. The choices are between gko::OmpExecutor, gko::CudaExecutor and gko::ReferenceExecutor and more details can be found in Ginkgo's documentation.
Definition at line 177 of file ginkgo_solver.h.
|
private |
Ginkgo matrix data structure. First template parameter is for storing the array of the non-zeros of the matrix. The second is for the row pointers and the column indices.
Definition at line 196 of file ginkgo_solver.h.
|
private |
The execution paradigm as a string to be set by the user. The choices are between omp, cuda and reference and more details can be found in Ginkgo's documentation.
Definition at line 203 of file ginkgo_solver.h.