\doxysection{gko::\+batch::\+log::\+Batch\+Convergence\texorpdfstring{$<$}{<} Value\+Type \texorpdfstring{$>$}{>} Class Template Reference}
\hypertarget{classgko_1_1batch_1_1log_1_1BatchConvergence}{}\label{classgko_1_1batch_1_1log_1_1BatchConvergence}\index{gko::batch::log::BatchConvergence$<$ ValueType $>$@{gko::batch::log::BatchConvergence$<$ ValueType $>$}}


Logs the final residuals and iteration counts for a batch solver.  




{\ttfamily \+\#include $<$ginkgo/\+core/\+log/\+batch\+\_\+logger.\+hpp$>$}



Inheritance diagram for gko::\+batch::\+log::\+Batch\+Convergence\texorpdfstring{$<$}{<} Value\+Type \texorpdfstring{$>$}{>}:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=248pt]{classgko_1_1batch_1_1log_1_1BatchConvergence__inherit__graph}
\end{center}
\end{figure}


Collaboration diagram for gko::\+batch::\+log::\+Batch\+Convergence\texorpdfstring{$<$}{<} Value\+Type \texorpdfstring{$>$}{>}:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=248pt]{classgko_1_1batch_1_1log_1_1BatchConvergence__coll__graph}
\end{center}
\end{figure}
\doxysubsubsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1batch_1_1log_1_1BatchConvergence_ab883e1608ba5c1d7d24654b14494cd17}\label{classgko_1_1batch_1_1log_1_1BatchConvergence_ab883e1608ba5c1d7d24654b14494cd17} 
using {\bfseries real\+\_\+type} = \doxymbox{\hyperlink{namespacegko_a107302a750bfa82a2107c77293f791c9}{remove\+\_\+complex}}$<$Value\+Type$>$
\item 
\Hypertarget{classgko_1_1batch_1_1log_1_1BatchConvergence_a452b21fae86f7e95f7f6a8f97f018041}\label{classgko_1_1batch_1_1log_1_1BatchConvergence_a452b21fae86f7e95f7f6a8f97f018041} 
using {\bfseries index\+\_\+type} = int
\item 
\Hypertarget{classgko_1_1batch_1_1log_1_1BatchConvergence_a1ed8d9b9019a02f5cb594f928d8ca69a}\label{classgko_1_1batch_1_1log_1_1BatchConvergence_a1ed8d9b9019a02f5cb594f928d8ca69a} 
using {\bfseries mask\+\_\+type} = gko::\+log::\+\+Logger::\+mask\+\_\+type
\end{DoxyCompactItemize}
\doxysubsection*{Public Types inherited from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}}
\begin{DoxyCompactItemize}
\item 
using {\bfseries mask\+\_\+type} = \doxymbox{\hyperlink{namespacegko_a09ee89da532d8b1fa6fdecec2d20b9bf}{gko::\+uint64}}
\end{DoxyCompactItemize}
\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1batch_1_1log_1_1BatchConvergence_adf064888f2da95eeb49dc0f920c5091a}\label{classgko_1_1batch_1_1log_1_1BatchConvergence_adf064888f2da95eeb49dc0f920c5091a} 
void {\bfseries on\+\_\+batch\+\_\+solver\+\_\+completed} (const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ index\+\_\+type $>$ \&iteration\+\_\+count, const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ real\+\_\+type $>$ \&residual\+\_\+norm) const override
\item 
const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ index\+\_\+type $>$ \& \doxymbox{\hyperlink{classgko_1_1batch_1_1log_1_1BatchConvergence_a378c6a063aa01db86d3221d78aff105d}{get\+\_\+num\+\_\+iterations}} () const noexcept
\item 
const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ real\+\_\+type $>$ \& \doxymbox{\hyperlink{classgko_1_1batch_1_1log_1_1BatchConvergence_aa286a9c964d7ea72448ff59a26206ea6}{get\+\_\+residual\+\_\+norm}} () const noexcept
\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}}
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==0 \&\&(0$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==1 \&\&(1$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==2 \&\&(2$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==3 \&\&(3$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==4 \&\&(4$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==5 \&\&(5$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==6 \&\&(6$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==7 \&\&(7$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==8 \&\&(8$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==9 \&\&(9$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==10 \&\&(10$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==11 \&\&(11$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==12 \&\&(12$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==13 \&\&(13$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==14 \&\&(14$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==15 \&\&(15$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==16 \&\&(16$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==17 \&\&(17$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==18 \&\&(18$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==19 \&\&(19$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==20 \&\&(20$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==21 \&\&(21$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==22 \&\&(22$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==23 \&\&(23$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==24 \&\&(24$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==25 \&\&(25$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==26 \&\&(26$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
virtual bool \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a6f60c7a79a4716836d232558c58777d0}{needs\+\_\+propagation}} () const
\begin{DoxyCompactList}\small\item\em Returns true if this logger, when attached to an \doxylink{classgko_1_1Executor}{Executor}, needs to be forwarded all events from objects on this executor. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static std::\+unique\+\_\+ptr$<$ Batch\+Convergence $>$ \doxymbox{\hyperlink{classgko_1_1batch_1_1log_1_1BatchConvergence_aeadd0bc7ce1a27945e762c1bc4c246bc}{create}} (const mask\+\_\+type \&enabled\+\_\+events=gko::\+log::\+\+Logger::\+batch\+\_\+solver\+\_\+completed\+\_\+mask)
\begin{DoxyCompactList}\small\item\em Creates a convergence logger. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Additional Inherited Members}
\doxysubsection*{Static Public Attributes inherited from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}}
\begin{DoxyCompactItemize}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries event\+\_\+count\+\_\+max} = sizeof(mask\+\_\+type) \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{namespacegko_acae2e648052ec788bd8ba9e0192652a6}{byte\+\_\+size}}
\begin{DoxyCompactList}\small\item\em Maximum amount of events (bits) with the current implementation. \end{DoxyCompactList}\item 
static constexpr mask\+\_\+type {\bfseries all\+\_\+events\+\_\+mask} = \texorpdfstring{$\sim$}{\string~}mask\+\_\+type\{0\}
\begin{DoxyCompactList}\small\item\em Bitset Mask which activates all events. \end{DoxyCompactList}\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries allocation\+\_\+started} \{0\}
\item 
static constexpr mask\+\_\+type {\bfseries allocation\+\_\+started\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 0\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries allocation\+\_\+completed} \{1\}
\item 
static constexpr mask\+\_\+type {\bfseries allocation\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 1\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries free\+\_\+started} \{2\}
\item 
static constexpr mask\+\_\+type {\bfseries free\+\_\+started\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 2\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries free\+\_\+completed} \{3\}
\item 
static constexpr mask\+\_\+type {\bfseries free\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 3\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries copy\+\_\+started} \{4\}
\item 
static constexpr mask\+\_\+type {\bfseries copy\+\_\+started\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 4\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries copy\+\_\+completed} \{5\}
\item 
static constexpr mask\+\_\+type {\bfseries copy\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 5\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries operation\+\_\+launched} \{6\}
\item 
static constexpr mask\+\_\+type {\bfseries operation\+\_\+launched\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 6\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries operation\+\_\+completed} \{7\}
\item 
static constexpr mask\+\_\+type {\bfseries operation\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 7\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries polymorphic\+\_\+object\+\_\+create\+\_\+started} \{8\}
\item 
static constexpr mask\+\_\+type {\bfseries polymorphic\+\_\+object\+\_\+create\+\_\+started\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 8\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries polymorphic\+\_\+object\+\_\+create\+\_\+completed} \{9\}
\item 
static constexpr mask\+\_\+type {\bfseries polymorphic\+\_\+object\+\_\+create\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 9\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries polymorphic\+\_\+object\+\_\+copy\+\_\+started} \{10\}
\item 
static constexpr mask\+\_\+type {\bfseries polymorphic\+\_\+object\+\_\+copy\+\_\+started\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 10\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries polymorphic\+\_\+object\+\_\+copy\+\_\+completed} \{11\}
\item 
static constexpr mask\+\_\+type {\bfseries polymorphic\+\_\+object\+\_\+copy\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 11\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries polymorphic\+\_\+object\+\_\+deleted} \{12\}
\item 
static constexpr mask\+\_\+type {\bfseries polymorphic\+\_\+object\+\_\+deleted\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 12\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries linop\+\_\+apply\+\_\+started} \{13\}
\item 
static constexpr mask\+\_\+type {\bfseries linop\+\_\+apply\+\_\+started\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 13\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries linop\+\_\+apply\+\_\+completed} \{14\}
\item 
static constexpr mask\+\_\+type {\bfseries linop\+\_\+apply\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 14\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries linop\+\_\+advanced\+\_\+apply\+\_\+started} \{15\}
\item 
static constexpr mask\+\_\+type {\bfseries linop\+\_\+advanced\+\_\+apply\+\_\+started\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 15\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries linop\+\_\+advanced\+\_\+apply\+\_\+completed} \{16\}
\item 
static constexpr mask\+\_\+type {\bfseries linop\+\_\+advanced\+\_\+apply\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 16\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries linop\+\_\+factory\+\_\+generate\+\_\+started} \{17\}
\item 
static constexpr mask\+\_\+type {\bfseries linop\+\_\+factory\+\_\+generate\+\_\+started\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 17\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries linop\+\_\+factory\+\_\+generate\+\_\+completed} \{18\}
\item 
static constexpr mask\+\_\+type {\bfseries linop\+\_\+factory\+\_\+generate\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 18\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries criterion\+\_\+check\+\_\+started} \{19\}
\item 
static constexpr mask\+\_\+type {\bfseries criterion\+\_\+check\+\_\+started\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 19\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries criterion\+\_\+check\+\_\+completed} \{20\}
\item 
static constexpr mask\+\_\+type {\bfseries criterion\+\_\+check\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 20\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries iteration\+\_\+complete} \{21\}
\item 
static constexpr mask\+\_\+type {\bfseries iteration\+\_\+complete\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 21\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries polymorphic\+\_\+object\+\_\+move\+\_\+started} \{22\}
\item 
static constexpr mask\+\_\+type {\bfseries polymorphic\+\_\+object\+\_\+move\+\_\+started\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 22\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries polymorphic\+\_\+object\+\_\+move\+\_\+completed} \{23\}
\item 
static constexpr mask\+\_\+type {\bfseries polymorphic\+\_\+object\+\_\+move\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 23\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries batch\+\_\+linop\+\_\+factory\+\_\+generate\+\_\+started} \{24\}
\item 
static constexpr mask\+\_\+type {\bfseries batch\+\_\+linop\+\_\+factory\+\_\+generate\+\_\+started\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 24\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries batch\+\_\+linop\+\_\+factory\+\_\+generate\+\_\+completed} \{25\}
\item 
static constexpr mask\+\_\+type {\bfseries batch\+\_\+linop\+\_\+factory\+\_\+generate\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 25\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries batch\+\_\+solver\+\_\+completed} \{26\}
\item 
static constexpr mask\+\_\+type {\bfseries batch\+\_\+solver\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 26\}
\item 
static constexpr mask\+\_\+type \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_af263708ebb15007bc0086e7c438c190c}{executor\+\_\+events\+\_\+mask}}
\begin{DoxyCompactList}\small\item\em Bitset Mask which activates all executor events. \end{DoxyCompactList}\item 
static constexpr mask\+\_\+type \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a179f3d3ac86782922cbc63e33272840a}{operation\+\_\+events\+\_\+mask}}
\begin{DoxyCompactList}\small\item\em Bitset Mask which activates all operation events. \end{DoxyCompactList}\item 
static constexpr mask\+\_\+type \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a5fb997f1c06c0602103d8dab616a96bc}{polymorphic\+\_\+object\+\_\+events\+\_\+mask}}
\begin{DoxyCompactList}\small\item\em Bitset Mask which activates all polymorphic object events. \end{DoxyCompactList}\item 
static constexpr mask\+\_\+type \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a3e75086ec35aea9d9c0ade7774bfc1ba}{linop\+\_\+events\+\_\+mask}}
\begin{DoxyCompactList}\small\item\em Bitset Mask which activates all linop events. \end{DoxyCompactList}\item 
static constexpr mask\+\_\+type \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_ad6fb77d4d5610bc7299087f7149a7f16}{linop\+\_\+factory\+\_\+events\+\_\+mask}}
\begin{DoxyCompactList}\small\item\em Bitset Mask which activates all linop factory events. \end{DoxyCompactList}\item 
static constexpr mask\+\_\+type \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a3a6ea4ed2e7b25cd1ca869e4d3bdb07a}{batch\+\_\+linop\+\_\+factory\+\_\+events\+\_\+mask}}
\begin{DoxyCompactList}\small\item\em Bitset Mask which activates all batch linop factory events. \end{DoxyCompactList}\item 
static constexpr mask\+\_\+type \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a7f4ac79625bd3f0287230236013f6048}{criterion\+\_\+events\+\_\+mask}}
\begin{DoxyCompactList}\small\item\em Bitset Mask which activates all criterion events. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
\subsubsection*{template$<$typename Value\+Type = default\+\_\+precision$>$\newline
class gko::\+batch::\+log::\+\+Batch\+Convergence$<$ Value\+Type $>$}
Logs the final residuals and iteration counts for a batch solver. 

The purpose of this logger is to give simple access to standard data generated by the solver once it has converged.

\begin{DoxyNote}{Note}
The final logged residuals are the implicit residuals that have been computed within the solver process. Depending on the solver algorithm, this may be significantly different from the true residual (\texorpdfstring{$\vert$}{|}\texorpdfstring{$\vert$}{|}b -\/ Ax\texorpdfstring{$\vert$}{|}\texorpdfstring{$\vert$}{|}). 
\end{DoxyNote}


\label{doc-func-members}
\Hypertarget{classgko_1_1batch_1_1log_1_1BatchConvergence_doc-func-members}
\doxysubsection{Member Function Documentation}
\Hypertarget{classgko_1_1batch_1_1log_1_1BatchConvergence_aeadd0bc7ce1a27945e762c1bc4c246bc}\index{gko::batch::log::BatchConvergence$<$ ValueType $>$@{gko::batch::log::BatchConvergence$<$ ValueType $>$}!create@{create}}
\index{create@{create}!gko::batch::log::BatchConvergence$<$ ValueType $>$@{gko::batch::log::BatchConvergence$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{create()}{create()}}
{\footnotesize\ttfamily \label{classgko_1_1batch_1_1log_1_1BatchConvergence_aeadd0bc7ce1a27945e762c1bc4c246bc} 
template$<$typename Value\+Type = default\+\_\+precision$>$ \\
std::\+unique\+\_\+ptr$<$ Batch\+Convergence $>$ \doxymbox{\hyperlink{classgko_1_1batch_1_1log_1_1BatchConvergence}{gko::\+batch::\+log::\+\+Batch\+Convergence}}$<$ Value\+Type $>$::\+create (\begin{DoxyParamCaption}\item[{const mask\+\_\+type \&}]{enabled\+\_\+events}{ = {\ttfamily gko:\+:\+log:\+:\+Logger:\+:\+batch\+\_\+solver\+\_\+completed\+\_\+mask}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Creates a convergence logger. 

This dynamically allocates the memory, constructs the object and returns an std::\+unique\+\_\+ptr to this object. TODO:\+ See if the objects can be pre-\/allocated beforehand instead of being copied in the {\ttfamily on\+\_\+\texorpdfstring{$<$}{<}\texorpdfstring{$>$}{>}} event


\begin{DoxyParams}{Parameters}
{\em exec} & the executor \\
\hline
{\em enabled\+\_\+events} & the events enabled for this logger. By default all events.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
an std::\+unique\+\_\+ptr to the the constructed object 
\end{DoxyReturn}
\Hypertarget{classgko_1_1batch_1_1log_1_1BatchConvergence_a378c6a063aa01db86d3221d78aff105d}\index{gko::batch::log::BatchConvergence$<$ ValueType $>$@{gko::batch::log::BatchConvergence$<$ ValueType $>$}!get\_num\_iterations@{get\_num\_iterations}}
\index{get\_num\_iterations@{get\_num\_iterations}!gko::batch::log::BatchConvergence$<$ ValueType $>$@{gko::batch::log::BatchConvergence$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{get\_num\_iterations()}{get\_num\_iterations()}}
{\footnotesize\ttfamily \label{classgko_1_1batch_1_1log_1_1BatchConvergence_a378c6a063aa01db86d3221d78aff105d} 
template$<$typename Value\+Type = default\+\_\+precision$>$ \\
const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ index\+\_\+type $>$ \& \doxymbox{\hyperlink{classgko_1_1batch_1_1log_1_1BatchConvergence}{gko::\+batch::\+log::\+\+Batch\+Convergence}}$<$ Value\+Type $>$::\+get\+\_\+num\+\_\+iterations (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}

\begin{DoxyReturn}{Returns}
The number of iterations for entire batch 
\end{DoxyReturn}
\Hypertarget{classgko_1_1batch_1_1log_1_1BatchConvergence_aa286a9c964d7ea72448ff59a26206ea6}\index{gko::batch::log::BatchConvergence$<$ ValueType $>$@{gko::batch::log::BatchConvergence$<$ ValueType $>$}!get\_residual\_norm@{get\_residual\_norm}}
\index{get\_residual\_norm@{get\_residual\_norm}!gko::batch::log::BatchConvergence$<$ ValueType $>$@{gko::batch::log::BatchConvergence$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{get\_residual\_norm()}{get\_residual\_norm()}}
{\footnotesize\ttfamily \label{classgko_1_1batch_1_1log_1_1BatchConvergence_aa286a9c964d7ea72448ff59a26206ea6} 
template$<$typename Value\+Type = default\+\_\+precision$>$ \\
const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ real\+\_\+type $>$ \& \doxymbox{\hyperlink{classgko_1_1batch_1_1log_1_1BatchConvergence}{gko::\+batch::\+log::\+\+Batch\+Convergence}}$<$ Value\+Type $>$::\+get\+\_\+residual\+\_\+norm (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}

\begin{DoxyReturn}{Returns}
The residual norms for the entire batch. 
\end{DoxyReturn}


The documentation for this class was generated from the following file:\+\begin{DoxyCompactItemize}
\item 
ginkgo/\+core/\+log/\+batch\+\_\+logger.\+hpp\end{DoxyCompactItemize}
