 |
Ginkgo
Generated from pipelines/2171896597 branch based on develop. Ginkgo version 1.11.0
A numerical linear algebra library targeting many-core architectures
|
5 #ifndef GKO_PUBLIC_CORE_LOG_CONVERGENCE_HPP_
6 #define GKO_PUBLIC_CORE_LOG_CONVERGENCE_HPP_
11 #include <ginkgo/core/log/logger.hpp>
12 #include <ginkgo/core/matrix/dense.hpp>
13 #include <ginkgo/core/stop/criterion.hpp>
36 template <
typename ValueType = default_precision>
38 GKO_ASSERT_SUPPORTED_VALUE_TYPE;
43 const LinOp* residual,
const LinOp* residual_norm,
44 const LinOp* solution,
const uint8& stopping_id,
46 const bool& one_changed,
const bool& all_stopped)
const override;
50 const LinOp* residual,
const LinOp* residual_norm,
51 const LinOp* implicit_sq_resnorm,
const LinOp* solution,
52 const uint8& stopping_id,
const bool& set_finalized,
54 const bool& all_stopped)
const override;
58 const LinOp* residual,
59 const LinOp* residual_norm,
60 const LinOp* implicit_resnorm_sq,
62 bool stopped)
const override;
74 GKO_DEPRECATED(
"use single-parameter create")
78 Logger::iteration_complete_mask)
80 return std::unique_ptr<Convergence>(
new Convergence(enabled_events));
92 static std::unique_ptr<Convergence>
create(
94 Logger::iteration_complete_mask)
96 return std::unique_ptr<Convergence>(
new Convergence(enabled_events));
118 return num_iterations_;
135 return residual_norm_.get();
145 return implicit_sq_resnorm_.get();
156 GKO_DEPRECATED(
"use single-parameter constructor")
160 Logger::iteration_complete_mask)
170 explicit Convergence(
172 Logger::iteration_complete_mask)
173 : Logger(enabled_events)
177 mutable bool convergence_status_{
false};
179 mutable std::unique_ptr<LinOp> residual_{};
180 mutable std::unique_ptr<LinOp> residual_norm_{};
181 mutable std::unique_ptr<LinOp> implicit_sq_resnorm_{};
189 #endif // GKO_PUBLIC_CORE_LOG_CONVERGENCE_HPP_
std::uint8_t uint8
8-bit unsigned integral type.
Definition: types.hpp:119
const LinOp * get_residual() const noexcept
Returns the residual.
Definition: convergence.hpp:126
static std::unique_ptr< Convergence > create(std::shared_ptr< const Executor >, const mask_type &enabled_events=Logger::criterion_events_mask|Logger::iteration_complete_mask)
Creates a convergence logger.
Definition: convergence.hpp:75
Definition: lin_op.hpp:117
const size_type & get_num_iterations() const noexcept
Returns the number of iterations.
Definition: convergence.hpp:116
void reset_convergence_status()
Resets the convergence status to false.
Definition: convergence.hpp:109
const LinOp * get_implicit_sq_resnorm() const noexcept
Returns the implicit squared residual norm.
Definition: convergence.hpp:143
Stopping criterion events.
std::size_t size_type
Integral type used for allocation quantities.
Definition: types.hpp:90
The Ginkgo namespace.
Definition: abstract_factory.hpp:20
An array is a container which encapsulates fixed-sized arrays, stored on the Executor tied to the arr...
Definition: array.hpp:26
static constexpr mask_type criterion_events_mask
Bitset Mask which activates all criterion events.
Definition: logger.hpp:673
Convergence is a Logger which logs data strictly from the criterion_check_completed event.
Definition: convergence.hpp:37
static std::unique_ptr< Convergence > create(const mask_type &enabled_events=Logger::criterion_events_mask|Logger::iteration_complete_mask)
Creates a convergence logger.
Definition: convergence.hpp:92
bool has_converged() const noexcept
Returns true if the solver has converged.
Definition: convergence.hpp:104
Definition: logger.hpp:74
void on_criterion_check_completed(const stop::Criterion *criterion, const size_type &num_iterations, const LinOp *residual, const LinOp *residual_norm, const LinOp *solution, const uint8 &stopping_id, const bool &set_finalized, const array< stopping_status > *status, const bool &one_changed, const bool &all_stopped) const override
stop::Criterion's check completed event.
The Criterion class is a base class for all stopping criteria.
Definition: criterion.hpp:36
The first step in using the Ginkgo library consists of creating an executor.
Definition: executor.hpp:615
const LinOp * get_residual_norm() const noexcept
Returns the residual norm.
Definition: convergence.hpp:133
void on_iteration_complete(const LinOp *solver, const LinOp *b, const LinOp *x, const size_type &num_iterations, const LinOp *residual, const LinOp *residual_norm, const LinOp *implicit_resnorm_sq, const array< stopping_status > *status, bool stopped) const override
Register the iteration_complete event which logs every completed iterations.