\doxysection{gko::\+log::\+Profiler\+Hook Class Reference}
\hypertarget{classgko_1_1log_1_1ProfilerHook}{}\label{classgko_1_1log_1_1ProfilerHook}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}}


This \doxylink{classgko_1_1log_1_1Logger}{Logger} can be used to annotate the execution of Ginkgo functionality with profiler-\/specific ranges.  




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



Inheritance diagram for gko::\+log::\+Profiler\+Hook:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=190pt]{classgko_1_1log_1_1ProfilerHook__inherit__graph}
\end{center}
\end{figure}


Collaboration diagram for gko::\+log::\+Profiler\+Hook:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=190pt]{classgko_1_1log_1_1ProfilerHook__coll__graph}
\end{center}
\end{figure}
\doxysubsubsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \doxymbox{\hyperlink{structgko_1_1log_1_1ProfilerHook_1_1summary__entry}{summary\+\_\+entry}}
\item 
struct \doxymbox{\hyperlink{structgko_1_1log_1_1ProfilerHook_1_1nested__summary__entry}{nested\+\_\+summary\+\_\+entry}}
\item 
class \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_1_1SummaryWriter}{Summary\+Writer}}
\begin{DoxyCompactList}\small\item\em Receives the results from \doxylink{classgko_1_1log_1_1ProfilerHook_a4481de881ef88f20f47b10acddabc26c}{Profiler\+Hook::\+create\+\_\+summary()}. \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_1_1NestedSummaryWriter}{Nested\+Summary\+Writer}}
\begin{DoxyCompactList}\small\item\em Receives the results from \doxylink{classgko_1_1log_1_1ProfilerHook_a50b6ed6bb3b179a682a95064c471ad73}{Profiler\+Hook::\+create\+\_\+nested\+\_\+summary()}. \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_1_1TableSummaryWriter}{Table\+Summary\+Writer}}
\begin{DoxyCompactList}\small\item\em Writes the results from \doxylink{classgko_1_1log_1_1ProfilerHook_a4481de881ef88f20f47b10acddabc26c}{Profiler\+Hook::\+create\+\_\+summary()} and \doxylink{classgko_1_1log_1_1ProfilerHook_a50b6ed6bb3b179a682a95064c471ad73}{Profiler\+Hook::\+create\+\_\+nested\+\_\+summary()} to a ASCII table in Markdown format. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
using \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a9761050256a16131b5639980c60f6b58}{hook\+\_\+function}}
\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 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_af0568b3026a6864aaba42b95c458236b}{on\+\_\+allocation\+\_\+started}} (const \doxymbox{\hyperlink{classgko_1_1Executor}{gko::\+\+Executor}} \texorpdfstring{$\ast$}{*}exec, const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{gko::\+size\+\_\+type}} \&) const override
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1Executor}{Executor}\textquotesingle{}s allocation started event. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a79d6eae36771f299fb6348cc79519c88}{on\+\_\+allocation\+\_\+completed}} (const \doxymbox{\hyperlink{classgko_1_1Executor}{gko::\+\+Executor}} \texorpdfstring{$\ast$}{*}exec, const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{gko::\+size\+\_\+type}} \&, const \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{gko::\+uintptr}} \&) const override
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1Executor}{Executor}\textquotesingle{}s allocation completed event. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_afea417dbd0bc0da0597ccaac086619a9}{on\+\_\+free\+\_\+started}} (const \doxymbox{\hyperlink{classgko_1_1Executor}{gko::\+\+Executor}} \texorpdfstring{$\ast$}{*}exec, const \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{gko::\+uintptr}} \&) const override
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1Executor}{Executor}\textquotesingle{}s free started event. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a943296e7d98f81b551be5e34083ad67d}{on\+\_\+free\+\_\+completed}} (const \doxymbox{\hyperlink{classgko_1_1Executor}{gko::\+\+Executor}} \texorpdfstring{$\ast$}{*}exec, const \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{gko::\+uintptr}} \&) const override
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1Executor}{Executor}\textquotesingle{}s free completed event. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a5e7dcb2b96e9b239f3ba836433631e1c}{on\+\_\+copy\+\_\+started}} (const \doxymbox{\hyperlink{classgko_1_1Executor}{gko::\+\+Executor}} \texorpdfstring{$\ast$}{*}from, const \doxymbox{\hyperlink{classgko_1_1Executor}{gko::\+\+Executor}} \texorpdfstring{$\ast$}{*}to, const \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{gko::\+uintptr}} \&, const \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{gko::\+uintptr}} \&, const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{gko::\+size\+\_\+type}} \&) const override
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1Executor}{Executor}\textquotesingle{}s copy started event. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a40c66ac12c197b4362869be527efc297}{on\+\_\+copy\+\_\+completed}} (const \doxymbox{\hyperlink{classgko_1_1Executor}{gko::\+\+Executor}} \texorpdfstring{$\ast$}{*}from, const \doxymbox{\hyperlink{classgko_1_1Executor}{gko::\+\+Executor}} \texorpdfstring{$\ast$}{*}to, const \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{gko::\+uintptr}} \&, const \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{gko::\+uintptr}} \&, const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{gko::\+size\+\_\+type}} \&) const override
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1Executor}{Executor}\textquotesingle{}s copy completed event. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_afff66ff204f88182df8a06864d174349}{on\+\_\+operation\+\_\+launched}} (const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} \texorpdfstring{$\ast$}{*}exec, const \doxymbox{\hyperlink{classgko_1_1Operation}{Operation}} \texorpdfstring{$\ast$}{*}operation) const override
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1Executor}{Executor}\textquotesingle{}s operation launched event (method run). \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_ac21d8670ca8d881e9605dd9ff6296b11}{on\+\_\+operation\+\_\+completed}} (const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} \texorpdfstring{$\ast$}{*}exec, const \doxymbox{\hyperlink{classgko_1_1Operation}{Operation}} \texorpdfstring{$\ast$}{*}operation) const override
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1Executor}{Executor}\textquotesingle{}s operation completed event (method run). \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a3ce83ac968ec2fa2c381e70ba7bc72df}{on\+\_\+polymorphic\+\_\+object\+\_\+copy\+\_\+started}} (const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} \texorpdfstring{$\ast$}{*}exec, const \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}} \texorpdfstring{$\ast$}{*}from, const \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}} \texorpdfstring{$\ast$}{*}to) const override
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}\textquotesingle{}s copy started event. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a54f749267620560a2e291a45dbb6446f}{on\+\_\+polymorphic\+\_\+object\+\_\+copy\+\_\+completed}} (const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} \texorpdfstring{$\ast$}{*}exec, const \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}} \texorpdfstring{$\ast$}{*}from, const \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}} \texorpdfstring{$\ast$}{*}to) const override
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}\textquotesingle{}s copy completed event. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_ae3e79272bed844f378ffdeb51714f4ca}{on\+\_\+polymorphic\+\_\+object\+\_\+move\+\_\+started}} (const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} \texorpdfstring{$\ast$}{*}exec, const \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}} \texorpdfstring{$\ast$}{*}from, const \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}} \texorpdfstring{$\ast$}{*}to) const override
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}\textquotesingle{}s move started event. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a3cd14a28a3a72c6bd9bcb100c205bd6b}{on\+\_\+polymorphic\+\_\+object\+\_\+move\+\_\+completed}} (const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} \texorpdfstring{$\ast$}{*}exec, const \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}} \texorpdfstring{$\ast$}{*}from, const \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}} \texorpdfstring{$\ast$}{*}to) const override
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}\textquotesingle{}s move completed event. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_aefdaf360373200d21fe79dd2d89cad5e}{on\+\_\+linop\+\_\+apply\+\_\+started}} (const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}A, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}b, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}x) const override
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1LinOp}{Lin\+Op}\textquotesingle{}s apply started event. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a21ba3bcec189367adec6638f062f68e8}{on\+\_\+linop\+\_\+apply\+\_\+completed}} (const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}A, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}b, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}x) const override
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1LinOp}{Lin\+Op}\textquotesingle{}s apply completed event. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_abff584192ffab00e1e21daa58a2955c0}{on\+\_\+linop\+\_\+advanced\+\_\+apply\+\_\+started}} (const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}A, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}alpha, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}b, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}beta, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}x) const override
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1LinOp}{Lin\+Op}\textquotesingle{}s advanced apply started event. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a7005bcdb6036adedd3665ee09aafefc5}{on\+\_\+linop\+\_\+advanced\+\_\+apply\+\_\+completed}} (const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}A, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}alpha, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}b, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}beta, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}x) const override
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1LinOp}{Lin\+Op}\textquotesingle{}s advanced apply completed event. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_aadef5e0bc39fb916797820d25622f2ae}{on\+\_\+linop\+\_\+factory\+\_\+generate\+\_\+started}} (const \doxymbox{\hyperlink{classgko_1_1LinOpFactory}{Lin\+Op\+Factory}} \texorpdfstring{$\ast$}{*}factory, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}input) const override
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1LinOp}{Lin\+Op} Factory\textquotesingle{}s generate started event. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_ab5a3915ad59cb08a330d4495ed631e12}{on\+\_\+linop\+\_\+factory\+\_\+generate\+\_\+completed}} (const \doxymbox{\hyperlink{classgko_1_1LinOpFactory}{Lin\+Op\+Factory}} \texorpdfstring{$\ast$}{*}factory, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}input, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}output) const override
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1LinOp}{Lin\+Op} Factory\textquotesingle{}s generate completed event. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a99e3d1af81299f9062aa65baa9422bd7}{on\+\_\+criterion\+\_\+check\+\_\+started}} (const \doxymbox{\hyperlink{classgko_1_1stop_1_1Criterion}{stop::\+\+Criterion}} \texorpdfstring{$\ast$}{*}criterion, const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \&num\+\_\+iterations, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}residual, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}residual\+\_\+norm, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}solution, const \doxymbox{\hyperlink{namespacegko_a06d96f1ecdca6b86399173969771c3fb}{uint8}} \&stopping\+\_\+id, const bool \&set\+\_\+finalized) const override
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1stop_1_1Criterion}{stop::\+\+Criterion}\textquotesingle{}s check started event. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_ade46fdebb9a96dafecdad479107fc5d6}{on\+\_\+criterion\+\_\+check\+\_\+completed}} (const \doxymbox{\hyperlink{classgko_1_1stop_1_1Criterion}{stop::\+\+Criterion}} \texorpdfstring{$\ast$}{*}criterion, const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \&num\+\_\+iterations, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}residual, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}residual\+\_\+norm, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}solution, const \doxymbox{\hyperlink{namespacegko_a06d96f1ecdca6b86399173969771c3fb}{uint8}} \&stopping\+\_\+id, const bool \&set\+\_\+finalized, const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ \doxymbox{\hyperlink{classgko_1_1stopping__status}{stopping\+\_\+status}} $>$ \texorpdfstring{$\ast$}{*}status, const bool \&one\+\_\+changed, const bool \&all\+\_\+stopped) const override
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1stop_1_1Criterion}{stop::\+\+Criterion}\textquotesingle{}s check completed event. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a566b03924ff4c0f828c2321f4e23e1fd}{on\+\_\+criterion\+\_\+check\+\_\+completed}} (const \doxymbox{\hyperlink{classgko_1_1stop_1_1Criterion}{stop::\+\+Criterion}} \texorpdfstring{$\ast$}{*}criterion, const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \&num\+\_\+iterations, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}residual, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}residual\+\_\+norm, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}implicit\+\_\+sq\+\_\+resnorm, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}solution, const \doxymbox{\hyperlink{namespacegko_a06d96f1ecdca6b86399173969771c3fb}{uint8}} \&stopping\+\_\+id, const bool \&set\+\_\+finalized, const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ \doxymbox{\hyperlink{classgko_1_1stopping__status}{stopping\+\_\+status}} $>$ \texorpdfstring{$\ast$}{*}status, const bool \&one\+\_\+changed, const bool \&all\+\_\+stopped) const override
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1stop_1_1Criterion}{stop::\+\+Criterion}\textquotesingle{}s check completed event. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a9ae165051a8b1d0503d84e35e5d53375}{on\+\_\+iteration\+\_\+complete}} (const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}\doxymbox{\hyperlink{namespacegko_1_1solver}{solver}}, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}right\+\_\+hand\+\_\+side, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}solution, const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \&num\+\_\+iterations, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}residual, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}residual\+\_\+norm, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}implicit\+\_\+sq\+\_\+residual\+\_\+norm, const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ \doxymbox{\hyperlink{classgko_1_1stopping__status}{stopping\+\_\+status}} $>$ \texorpdfstring{$\ast$}{*}status, bool stopped) const override
\begin{DoxyCompactList}\small\item\em Register the {\ttfamily iteration\+\_\+complete} event which logs every completed iterations. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a87b00242959e4b733a6250b7afb35387}{on\+\_\+iteration\+\_\+complete}} (const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}\doxymbox{\hyperlink{namespacegko_1_1solver}{solver}}, const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \&num\+\_\+iterations, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}residual, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}solution, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}residual\+\_\+norm) const override
\begin{DoxyCompactList}\small\item\em Register the {\ttfamily iteration\+\_\+complete} event which logs every completed iterations. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a93fc819f338275d4ae0c93862040c034}{on\+\_\+iteration\+\_\+complete}} (const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}\doxymbox{\hyperlink{namespacegko_1_1solver}{solver}}, const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \&num\+\_\+iterations, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}residual, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}solution, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}residual\+\_\+norm, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}implicit\+\_\+sq\+\_\+residual\+\_\+norm) const override
\begin{DoxyCompactList}\small\item\em Register the {\ttfamily iteration\+\_\+complete} event which logs every completed iterations. \end{DoxyCompactList}\item 
bool \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_ace6118e4363415cca4a63cee91186ece}{needs\+\_\+propagation}} () const override
\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}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a1f901332281289fa4915e073dffb12c3}{set\+\_\+object\+\_\+name}} (\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}} $>$ obj, std::\+string name)
\begin{DoxyCompactList}\small\item\em Sets the name for an object to be profiled. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a9429ec9658274a71a5c632fb973c22e1}{set\+\_\+synchronization}} (bool synchronize)
\begin{DoxyCompactList}\small\item\em Should the events call executor-\/\texorpdfstring{$>$}{>}synchronize on operations and copy/\+allocation? \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{classgko_1_1log_1_1profiling__scope__guard}{profiling\+\_\+scope\+\_\+guard}} \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a4d0e1e93d993f5074d60276359faadd8}{user\+\_\+range}} (const char \texorpdfstring{$\ast$}{*}name) const
\begin{DoxyCompactList}\small\item\em Creates a scope guard for a user-\/defined range to be included in the profile. \end{DoxyCompactList}\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
\end{DoxyCompactItemize}
\doxysubsubsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static std::\+shared\+\_\+ptr$<$ Profiler\+Hook $>$ \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a901375406301386b0374a6dab8b16597}{create\+\_\+tau}} (bool \doxymbox{\hyperlink{group__LinOp_ga70851b4c3c9b01bb667b3a8e438fb6d2}{initialize}}=true)
\begin{DoxyCompactList}\small\item\em Creates a logger annotating Ginkgo events with TAU ranges via Perf\+Stubs. \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1log_1_1ProfilerHook_a72e9cf9a4e4aa957b9b7e2d8817598f6}\label{classgko_1_1log_1_1ProfilerHook_a72e9cf9a4e4aa957b9b7e2d8817598f6} 
static std::\+shared\+\_\+ptr$<$ Profiler\+Hook $>$ {\bfseries create\+\_\+vtune} ()
\begin{DoxyCompactList}\small\item\em Creates a logger annotating Ginkgo events with VTune ITT ranges. \end{DoxyCompactList}\item 
static std::\+shared\+\_\+ptr$<$ Profiler\+Hook $>$ \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a159e2d7be5b53cefbc5ac3fb87ce697f}{create\+\_\+nvtx}} (\doxymbox{\hyperlink{namespacegko_a7cf056fa904140b50658e0637fba428c}{uint32}} color\+\_\+argb=\doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a8fb4ba8890eb7e4cb40dbf330c103489}{color\+\_\+yellow\+\_\+argb}})
\begin{DoxyCompactList}\small\item\em Creates a logger annotating Ginkgo events with NVTX ranges for CUDA. \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1log_1_1ProfilerHook_a5c40499247485c138cb0c64af2f0aa45}\label{classgko_1_1log_1_1ProfilerHook_a5c40499247485c138cb0c64af2f0aa45} 
static std::\+shared\+\_\+ptr$<$ Profiler\+Hook $>$ {\bfseries create\+\_\+roctx} ()
\begin{DoxyCompactList}\small\item\em Creates a logger annotating Ginkgo events with ROCTX ranges for HIP. \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1log_1_1ProfilerHook_a5ffbca8ab23d9170062ba56fc74ec807}\label{classgko_1_1log_1_1ProfilerHook_a5ffbca8ab23d9170062ba56fc74ec807} 
static std::\+shared\+\_\+ptr$<$ Profiler\+Hook $>$ {\bfseries create\+\_\+for\+\_\+executor} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec)
\begin{DoxyCompactList}\small\item\em Creates a logger annotating Ginkgo events with the most suitable backend for the given executor:\+ NVTX for NSight Systems in CUDA, ROCTX for rocprof in HIP, TAU for everything else. \end{DoxyCompactList}\item 
static std::\+shared\+\_\+ptr$<$ Profiler\+Hook $>$ \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a4481de881ef88f20f47b10acddabc26c}{create\+\_\+summary}} (std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1Timer}{Timer}} $>$ timer=std::\+make\+\_\+shared$<$ \doxymbox{\hyperlink{classgko_1_1CpuTimer}{Cpu\+Timer}} $>$(), std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_1_1SummaryWriter}{Summary\+Writer}} $>$ writer=std::\+make\+\_\+unique$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_1_1TableSummaryWriter}{Table\+Summary\+Writer}} $>$(), bool debug\+\_\+check\+\_\+nesting=false)
\begin{DoxyCompactList}\small\item\em Creates a logger measuring the runtime of Ginkgo events and printing a summary when it is destroyed. \end{DoxyCompactList}\item 
static std::\+shared\+\_\+ptr$<$ Profiler\+Hook $>$ \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a50b6ed6bb3b179a682a95064c471ad73}{create\+\_\+nested\+\_\+summary}} (std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1Timer}{Timer}} $>$ timer=std::\+make\+\_\+shared$<$ \doxymbox{\hyperlink{classgko_1_1CpuTimer}{Cpu\+Timer}} $>$(), std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_1_1NestedSummaryWriter}{Nested\+Summary\+Writer}} $>$ writer=std::\+make\+\_\+unique$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_1_1TableSummaryWriter}{Table\+Summary\+Writer}} $>$(), bool debug\+\_\+check\+\_\+nesting=false)
\begin{DoxyCompactList}\small\item\em Creates a logger measuring the runtime of Ginkgo events in a nested fashion and printing a summary when it is destroyed. \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1log_1_1ProfilerHook_a60c520ca18da2716f6d225d6eea86b37}\label{classgko_1_1log_1_1ProfilerHook_a60c520ca18da2716f6d225d6eea86b37} 
static std::\+shared\+\_\+ptr$<$ Profiler\+Hook $>$ {\bfseries create\+\_\+custom} (hook\+\_\+function begin, hook\+\_\+function end)
\begin{DoxyCompactList}\small\item\em Creates a logger annotating Ginkgo events with a custom set of functions for range begin and end. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Static Public Attributes}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1log_1_1ProfilerHook_a8fb4ba8890eb7e4cb40dbf330c103489}\label{classgko_1_1log_1_1ProfilerHook_a8fb4ba8890eb7e4cb40dbf330c103489} 
static constexpr \doxymbox{\hyperlink{namespacegko_a7cf056fa904140b50658e0637fba428c}{uint32}} {\bfseries color\+\_\+yellow\+\_\+argb} = 0x\+FFFFCB05U
\begin{DoxyCompactList}\small\item\em The Ginkgo yellow background color as packed 32 bit ARGB value. \end{DoxyCompactList}\end{DoxyCompactItemize}
\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}
This \doxylink{classgko_1_1log_1_1Logger}{Logger} can be used to annotate the execution of Ginkgo functionality with profiler-\/specific ranges. 

It currently supports TAU, VTune, NSight\+Systems (NVTX) and roc\+PROF(\+ROCTX) and custom profiler hooks.

The \doxylink{classgko_1_1log_1_1Logger}{Logger} should be attached to the \doxylink{classgko_1_1Executor}{Executor} that is being used to run the application for a full, program-\/wide annotation, or to individual objects to only highlight events caused directly by them (not operations and memory allocations though) 

\label{doc-typedef-members}
\Hypertarget{classgko_1_1log_1_1ProfilerHook_doc-typedef-members}
\doxysubsection{Member Typedef Documentation}
\Hypertarget{classgko_1_1log_1_1ProfilerHook_a9761050256a16131b5639980c60f6b58}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!hook\_function@{hook\_function}}
\index{hook\_function@{hook\_function}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{hook\_function}{hook\_function}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_a9761050256a16131b5639980c60f6b58} 
using gko::\+log::\+\+Profiler\+Hook::\+hook\+\_\+function}

{\bfseries Initial value:\+}
\begin{DoxyCode}{0}
\DoxyCodeLine{}
\DoxyCodeLine{std::function<void(\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*,\ \doxymbox{\hyperlink{namespacegko_1_1log_a15f71654c6c4f4defc95f9359343fa27}{profile\_event\_category}})>}

\end{DoxyCode}


\label{doc-func-members}
\Hypertarget{classgko_1_1log_1_1ProfilerHook_doc-func-members}
\doxysubsection{Member Function Documentation}
\Hypertarget{classgko_1_1log_1_1ProfilerHook_a50b6ed6bb3b179a682a95064c471ad73}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!create\_nested\_summary@{create\_nested\_summary}}
\index{create\_nested\_summary@{create\_nested\_summary}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{create\_nested\_summary()}{create\_nested\_summary()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_a50b6ed6bb3b179a682a95064c471ad73} 
std::\+shared\+\_\+ptr$<$ Profiler\+Hook $>$ gko::\+log::\+\+Profiler\+Hook::\+create\+\_\+nested\+\_\+summary (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1Timer}{Timer}} $>$}]{timer}{ = {\ttfamily std:\+:\+make\+\_\+shared$<$~\doxymbox{\hyperlink{classgko_1_1CpuTimer}{Cpu\+Timer}}~$>$()}, }\item[{std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_1_1NestedSummaryWriter}{Nested\+Summary\+Writer}} $>$}]{writer}{ = {\ttfamily std:\+:\+make\+\_\+unique$<$~\doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_1_1TableSummaryWriter}{Table\+Summary\+Writer}}~$>$()}, }\item[{bool}]{debug\+\_\+check\+\_\+nesting}{ = {\ttfamily false}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Creates a logger measuring the runtime of Ginkgo events in a nested fashion and printing a summary when it is destroyed. 


\begin{DoxyParams}{Parameters}
{\em timer} & The timer used to record time points. \\
\hline
{\em writer} & The \doxylink{classgko_1_1log_1_1ProfilerHook_1_1NestedSummaryWriter}{Nested\+Summary\+Writer} to receive the performance results. \\
\hline
{\em debug\+\_\+check\+\_\+nesting} & Enable this flag if the output looks like it might contain incorrect nesting. This increases the overhead slightly, but recognizes mismatching push/\+pop pairs on the range stack.\\
\hline
\end{DoxyParams}
\begin{DoxyNote}{Note}
For this logger to provide reliable GPU timings, either use \doxylink{classgko_1_1Timer_a8e44eae260c1b3ad7a642338c1c5ce1e}{Timer::\+create\+\_\+for\+\_\+executor} or enable synchronization via {\ttfamily set\+\_\+synchronization(true)}. 
\end{DoxyNote}
\Hypertarget{classgko_1_1log_1_1ProfilerHook_a159e2d7be5b53cefbc5ac3fb87ce697f}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!create\_nvtx@{create\_nvtx}}
\index{create\_nvtx@{create\_nvtx}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{create\_nvtx()}{create\_nvtx()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_a159e2d7be5b53cefbc5ac3fb87ce697f} 
std::\+shared\+\_\+ptr$<$ Profiler\+Hook $>$ gko::\+log::\+\+Profiler\+Hook::\+create\+\_\+nvtx (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{namespacegko_a7cf056fa904140b50658e0637fba428c}{uint32}}}]{color\+\_\+argb}{ = {\ttfamily \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a8fb4ba8890eb7e4cb40dbf330c103489}{color\+\_\+yellow\+\_\+argb}}}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Creates a logger annotating Ginkgo events with NVTX ranges for CUDA. 


\begin{DoxyParams}{Parameters}
{\em color\+\_\+argb} & The color of the NVTX ranges in the NSight Systems output. It has to be a 32 bit packed ARGB value. \\
\hline
\end{DoxyParams}


References \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a8fb4ba8890eb7e4cb40dbf330c103489}{color\+\_\+yellow\+\_\+argb}}, and \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a159e2d7be5b53cefbc5ac3fb87ce697f}{create\+\_\+nvtx()}}.



Referenced by \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a159e2d7be5b53cefbc5ac3fb87ce697f}{create\+\_\+nvtx()}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_a4481de881ef88f20f47b10acddabc26c}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!create\_summary@{create\_summary}}
\index{create\_summary@{create\_summary}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{create\_summary()}{create\_summary()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_a4481de881ef88f20f47b10acddabc26c} 
std::\+shared\+\_\+ptr$<$ Profiler\+Hook $>$ gko::\+log::\+\+Profiler\+Hook::\+create\+\_\+summary (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1Timer}{Timer}} $>$}]{timer}{ = {\ttfamily std:\+:\+make\+\_\+shared$<$~\doxymbox{\hyperlink{classgko_1_1CpuTimer}{Cpu\+Timer}}~$>$()}, }\item[{std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_1_1SummaryWriter}{Summary\+Writer}} $>$}]{writer}{ = {\ttfamily std:\+:\+make\+\_\+unique$<$~\doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_1_1TableSummaryWriter}{Table\+Summary\+Writer}}~$>$()}, }\item[{bool}]{debug\+\_\+check\+\_\+nesting}{ = {\ttfamily false}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Creates a logger measuring the runtime of Ginkgo events and printing a summary when it is destroyed. 


\begin{DoxyParams}{Parameters}
{\em timer} & The timer used to record time points. \\
\hline
{\em writer} & The \doxylink{classgko_1_1log_1_1ProfilerHook_1_1SummaryWriter}{Summary\+Writer} to receive the performance results. \\
\hline
{\em debug\+\_\+check\+\_\+nesting} & Enable this flag if the output looks like it might contain incorrect nesting. This increases the overhead slightly, but recognizes mismatching push/\+pop pairs on the range stack.\\
\hline
\end{DoxyParams}
\begin{DoxyNote}{Note}
For this logger to provide reliable GPU timings, either use \doxylink{classgko_1_1Timer_a8e44eae260c1b3ad7a642338c1c5ce1e}{Timer::\+create\+\_\+for\+\_\+executor} or enable synchronization via {\ttfamily set\+\_\+synchronization(true)}. 
\end{DoxyNote}
\Hypertarget{classgko_1_1log_1_1ProfilerHook_a901375406301386b0374a6dab8b16597}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!create\_tau@{create\_tau}}
\index{create\_tau@{create\_tau}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{create\_tau()}{create\_tau()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_a901375406301386b0374a6dab8b16597} 
std::\+shared\+\_\+ptr$<$ Profiler\+Hook $>$ gko::\+log::\+\+Profiler\+Hook::\+create\+\_\+tau (\begin{DoxyParamCaption}\item[{bool}]{initialize}{ = {\ttfamily true}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Creates a logger annotating Ginkgo events with TAU ranges via Perf\+Stubs. 


\begin{DoxyParams}{Parameters}
{\em \doxylink{group__LinOp_ga70851b4c3c9b01bb667b3a8e438fb6d2}{initialize}} & Should we call TAU\textquotesingle{}s initialization and finalization functions, or does the application take care of it? The initialization will happen immediately, the finalization at program exit. \\
\hline
\end{DoxyParams}


References \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a901375406301386b0374a6dab8b16597}{create\+\_\+tau()}}, and \doxymbox{\hyperlink{group__LinOp_ga70851b4c3c9b01bb667b3a8e438fb6d2}{gko::\+initialize()}}.



Referenced by \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a901375406301386b0374a6dab8b16597}{create\+\_\+tau()}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_ace6118e4363415cca4a63cee91186ece}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!needs\_propagation@{needs\_propagation}}
\index{needs\_propagation@{needs\_propagation}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{needs\_propagation()}{needs\_propagation()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_ace6118e4363415cca4a63cee91186ece} 
bool gko::\+log::\+\+Profiler\+Hook::\+needs\+\_\+propagation (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



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. 



Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a6f60c7a79a4716836d232558c58777d0}{gko::\+log::\+\+Logger}}.



References \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_ace6118e4363415cca4a63cee91186ece}{needs\+\_\+propagation()}}.



Referenced by \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_ace6118e4363415cca4a63cee91186ece}{needs\+\_\+propagation()}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_a79d6eae36771f299fb6348cc79519c88}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!on\_allocation\_completed@{on\_allocation\_completed}}
\index{on\_allocation\_completed@{on\_allocation\_completed}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{on\_allocation\_completed()}{on\_allocation\_completed()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_a79d6eae36771f299fb6348cc79519c88} 
void gko::\+log::\+\+Profiler\+Hook::\+on\+\_\+allocation\+\_\+completed (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1Executor}{gko::\+\+Executor}} \texorpdfstring{$\ast$}{*}}]{exec}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{gko::\+size\+\_\+type}} \&}]{num\+\_\+bytes}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{gko::\+uintptr}} \&}]{location}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



\doxylink{classgko_1_1Executor}{Executor}\textquotesingle{}s allocation completed event. 


\begin{DoxyParams}{Parameters}
{\em exec} & the executor used \\
\hline
{\em num\+\_\+bytes} & the number of bytes allocated \\
\hline
{\em location} & the address at which the data was allocated \\
\hline
\end{DoxyParams}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_af0568b3026a6864aaba42b95c458236b}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!on\_allocation\_started@{on\_allocation\_started}}
\index{on\_allocation\_started@{on\_allocation\_started}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{on\_allocation\_started()}{on\_allocation\_started()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_af0568b3026a6864aaba42b95c458236b} 
void gko::\+log::\+\+Profiler\+Hook::\+on\+\_\+allocation\+\_\+started (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1Executor}{gko::\+\+Executor}} \texorpdfstring{$\ast$}{*}}]{exec}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{gko::\+size\+\_\+type}} \&}]{num\+\_\+bytes}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



\doxylink{classgko_1_1Executor}{Executor}\textquotesingle{}s allocation started event. 


\begin{DoxyParams}{Parameters}
{\em exec} & the executor used \\
\hline
{\em num\+\_\+bytes} & the number of bytes to allocate \\
\hline
\end{DoxyParams}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_a40c66ac12c197b4362869be527efc297}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!on\_copy\_completed@{on\_copy\_completed}}
\index{on\_copy\_completed@{on\_copy\_completed}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{on\_copy\_completed()}{on\_copy\_completed()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_a40c66ac12c197b4362869be527efc297} 
void gko::\+log::\+\+Profiler\+Hook::\+on\+\_\+copy\+\_\+completed (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1Executor}{gko::\+\+Executor}} \texorpdfstring{$\ast$}{*}}]{exec\+\_\+from}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1Executor}{gko::\+\+Executor}} \texorpdfstring{$\ast$}{*}}]{exec\+\_\+to}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{gko::\+uintptr}} \&}]{loc\+\_\+from}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{gko::\+uintptr}} \&}]{loc\+\_\+to}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{gko::\+size\+\_\+type}} \&}]{num\+\_\+bytes}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



\doxylink{classgko_1_1Executor}{Executor}\textquotesingle{}s copy completed event. 


\begin{DoxyParams}{Parameters}
{\em exec\+\_\+from} & the executor copied from \\
\hline
{\em exec\+\_\+to} & the executor copied to \\
\hline
{\em loc\+\_\+from} & the address at which the data was copied from \\
\hline
{\em loc\+\_\+to} & the address at which the data was copied to \\
\hline
{\em num\+\_\+bytes} & the number of bytes copied \\
\hline
\end{DoxyParams}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_a5e7dcb2b96e9b239f3ba836433631e1c}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!on\_copy\_started@{on\_copy\_started}}
\index{on\_copy\_started@{on\_copy\_started}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{on\_copy\_started()}{on\_copy\_started()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_a5e7dcb2b96e9b239f3ba836433631e1c} 
void gko::\+log::\+\+Profiler\+Hook::\+on\+\_\+copy\+\_\+started (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1Executor}{gko::\+\+Executor}} \texorpdfstring{$\ast$}{*}}]{exec\+\_\+from}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1Executor}{gko::\+\+Executor}} \texorpdfstring{$\ast$}{*}}]{exec\+\_\+to}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{gko::\+uintptr}} \&}]{loc\+\_\+from}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{gko::\+uintptr}} \&}]{loc\+\_\+to}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{gko::\+size\+\_\+type}} \&}]{num\+\_\+bytes}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



\doxylink{classgko_1_1Executor}{Executor}\textquotesingle{}s copy started event. 


\begin{DoxyParams}{Parameters}
{\em exec\+\_\+from} & the executor to be copied from \\
\hline
{\em exec\+\_\+to} & the executor to be copied to \\
\hline
{\em loc\+\_\+from} & the address at which the data will be copied from \\
\hline
{\em loc\+\_\+to} & the address at which the data will be copied to \\
\hline
{\em num\+\_\+bytes} & the number of bytes to be copied \\
\hline
\end{DoxyParams}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_a566b03924ff4c0f828c2321f4e23e1fd}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!on\_criterion\_check\_completed@{on\_criterion\_check\_completed}}
\index{on\_criterion\_check\_completed@{on\_criterion\_check\_completed}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{on\_criterion\_check\_completed()}{on\_criterion\_check\_completed()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_a566b03924ff4c0f828c2321f4e23e1fd} 
void gko::\+log::\+\+Profiler\+Hook::\+on\+\_\+criterion\+\_\+check\+\_\+completed (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1stop_1_1Criterion}{stop::\+\+Criterion}} \texorpdfstring{$\ast$}{*}}]{criterion}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \&}]{it}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{r}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{tau}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{implicit\+\_\+tau\+\_\+sq}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{x}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a06d96f1ecdca6b86399173969771c3fb}{uint8}} \&}]{stopping\+\_\+id}{, }\item[{const bool \&}]{set\+\_\+finalized}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ \doxymbox{\hyperlink{classgko_1_1stopping__status}{stopping\+\_\+status}} $>$ \texorpdfstring{$\ast$}{*}}]{status}{, }\item[{const bool \&}]{one\+\_\+changed}{, }\item[{const bool \&}]{all\+\_\+converged}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



\doxylink{classgko_1_1stop_1_1Criterion}{stop::\+\+Criterion}\textquotesingle{}s check completed event. 

Parameters are the Criterion, the stopping\+Id, the finalized boolean, the stopping status, plus the output one\+\_\+changed boolean and output all\+\_\+converged boolean.


\begin{DoxyParams}{Parameters}
{\em criterion} & the criterion used \\
\hline
{\em it} & the current iteration count \\
\hline
{\em r} & the residual \\
\hline
{\em tau} & the residual norm \\
\hline
{\em implicit\+\_\+tau\+\_\+sq} & the implicit residual norm squared \\
\hline
{\em x} & the solution \\
\hline
{\em stopping\+\_\+id} & the id of the stopping criterion \\
\hline
{\em set\+\_\+finalized} & whether this finalizes the iteration \\
\hline
{\em status} & the stopping status of the right hand sides \\
\hline
{\em one\+\_\+changed} & whether at least one right hand side converged or not \\
\hline
{\em all\+\_\+converged} & whether all right hand sides are converged \\
\hline
\end{DoxyParams}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_ade46fdebb9a96dafecdad479107fc5d6}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!on\_criterion\_check\_completed@{on\_criterion\_check\_completed}}
\index{on\_criterion\_check\_completed@{on\_criterion\_check\_completed}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{on\_criterion\_check\_completed()}{on\_criterion\_check\_completed()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_ade46fdebb9a96dafecdad479107fc5d6} 
void gko::\+log::\+\+Profiler\+Hook::\+on\+\_\+criterion\+\_\+check\+\_\+completed (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1stop_1_1Criterion}{stop::\+\+Criterion}} \texorpdfstring{$\ast$}{*}}]{criterion}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \&}]{it}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{r}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{tau}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{x}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a06d96f1ecdca6b86399173969771c3fb}{uint8}} \&}]{stopping\+\_\+id}{, }\item[{const bool \&}]{set\+\_\+finalized}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ \doxymbox{\hyperlink{classgko_1_1stopping__status}{stopping\+\_\+status}} $>$ \texorpdfstring{$\ast$}{*}}]{status}{, }\item[{const bool \&}]{one\+\_\+changed}{, }\item[{const bool \&}]{all\+\_\+converged}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



\doxylink{classgko_1_1stop_1_1Criterion}{stop::\+\+Criterion}\textquotesingle{}s check completed event. 

Parameters are the Criterion, the stopping\+Id, the finalized boolean, the stopping status, plus the output one\+\_\+changed boolean and output all\+\_\+converged boolean.


\begin{DoxyParams}{Parameters}
{\em criterion} & the criterion used \\
\hline
{\em it} & the current iteration count \\
\hline
{\em r} & the residual \\
\hline
{\em tau} & the residual norm \\
\hline
{\em x} & the solution \\
\hline
{\em stopping\+\_\+id} & the id of the stopping criterion \\
\hline
{\em set\+\_\+finalized} & whether this finalizes the iteration \\
\hline
{\em status} & the stopping status of the right hand sides \\
\hline
{\em one\+\_\+changed} & whether at least one right hand side converged or not \\
\hline
{\em all\+\_\+converged} & whether all right hand sides\\
\hline
\end{DoxyParams}
\begin{DoxyNote}{Note}
The on\+\_\+criterion\+\_\+check\+\_\+completed function that this macro declares is deprecated. Please use the one with the additional implicit\+\_\+tau\+\_\+sq parameter as below. 
\end{DoxyNote}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_a99e3d1af81299f9062aa65baa9422bd7}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!on\_criterion\_check\_started@{on\_criterion\_check\_started}}
\index{on\_criterion\_check\_started@{on\_criterion\_check\_started}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{on\_criterion\_check\_started()}{on\_criterion\_check\_started()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_a99e3d1af81299f9062aa65baa9422bd7} 
void gko::\+log::\+\+Profiler\+Hook::\+on\+\_\+criterion\+\_\+check\+\_\+started (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1stop_1_1Criterion}{stop::\+\+Criterion}} \texorpdfstring{$\ast$}{*}}]{criterion}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \&}]{it}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{r}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{tau}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{x}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a06d96f1ecdca6b86399173969771c3fb}{uint8}} \&}]{stopping\+\_\+id}{, }\item[{const bool \&}]{set\+\_\+finalized}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



\doxylink{classgko_1_1stop_1_1Criterion}{stop::\+\+Criterion}\textquotesingle{}s check started event. 


\begin{DoxyParams}{Parameters}
{\em criterion} & the criterion used \\
\hline
{\em it} & the current iteration count \\
\hline
{\em r} & the residual \\
\hline
{\em tau} & the residual norm \\
\hline
{\em x} & the solution \\
\hline
{\em stopping\+\_\+id} & the id of the stopping criterion \\
\hline
{\em set\+\_\+finalized} & whether this finalizes the iteration \\
\hline
\end{DoxyParams}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_a943296e7d98f81b551be5e34083ad67d}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!on\_free\_completed@{on\_free\_completed}}
\index{on\_free\_completed@{on\_free\_completed}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{on\_free\_completed()}{on\_free\_completed()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_a943296e7d98f81b551be5e34083ad67d} 
void gko::\+log::\+\+Profiler\+Hook::\+on\+\_\+free\+\_\+completed (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1Executor}{gko::\+\+Executor}} \texorpdfstring{$\ast$}{*}}]{exec}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{gko::\+uintptr}} \&}]{location}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



\doxylink{classgko_1_1Executor}{Executor}\textquotesingle{}s free completed event. 


\begin{DoxyParams}{Parameters}
{\em exec} & the executor used \\
\hline
{\em location} & the address at which the data was freed \\
\hline
\end{DoxyParams}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_afea417dbd0bc0da0597ccaac086619a9}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!on\_free\_started@{on\_free\_started}}
\index{on\_free\_started@{on\_free\_started}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{on\_free\_started()}{on\_free\_started()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_afea417dbd0bc0da0597ccaac086619a9} 
void gko::\+log::\+\+Profiler\+Hook::\+on\+\_\+free\+\_\+started (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1Executor}{gko::\+\+Executor}} \texorpdfstring{$\ast$}{*}}]{exec}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{gko::\+uintptr}} \&}]{location}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



\doxylink{classgko_1_1Executor}{Executor}\textquotesingle{}s free started event. 


\begin{DoxyParams}{Parameters}
{\em exec} & the executor used \\
\hline
{\em location} & the address at which the data will be freed \\
\hline
\end{DoxyParams}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_a9ae165051a8b1d0503d84e35e5d53375}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!on\_iteration\_complete@{on\_iteration\_complete}}
\index{on\_iteration\_complete@{on\_iteration\_complete}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{on\_iteration\_complete()}{on\_iteration\_complete()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_a9ae165051a8b1d0503d84e35e5d53375} 
void gko::\+log::\+\+Profiler\+Hook::\+on\+\_\+iteration\+\_\+complete (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{solver}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{b}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{x}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \&}]{it}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{r}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{tau}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{implicit\+\_\+tau\+\_\+sq}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ \doxymbox{\hyperlink{classgko_1_1stopping__status}{stopping\+\_\+status}} $>$ \texorpdfstring{$\ast$}{*}}]{status}{, }\item[{bool}]{stopped}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



Register the {\ttfamily iteration\+\_\+complete} event which logs every completed iterations. 


\begin{DoxyParams}{Parameters}
{\em \doxylink{namespacegko_1_1solver}{solver}} & the solver executing the iteration \\
\hline
{\em b} & the right-\/hand-\/side vector \\
\hline
{\em x} & the solution vector \\
\hline
{\em it} & the current iteration count \\
\hline
{\em r} & the residual (optional) \\
\hline
{\em tau} & the implicit residual norm squared (optional) \\
\hline
{\em implicit\+\_\+tau\+\_\+sq} & the residual norm (optional) \\
\hline
{\em status} & the stopping status of the right hand sides (optional) \\
\hline
{\em stopped} & whether all right hand sides have stopped (invalid if status is not provided) \\
\hline
\end{DoxyParams}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.



Referenced by \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a87b00242959e4b733a6250b7afb35387}{on\+\_\+iteration\+\_\+complete()}}, and \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a93fc819f338275d4ae0c93862040c034}{on\+\_\+iteration\+\_\+complete()}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_a87b00242959e4b733a6250b7afb35387}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!on\_iteration\_complete@{on\_iteration\_complete}}
\index{on\_iteration\_complete@{on\_iteration\_complete}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{on\_iteration\_complete()}{on\_iteration\_complete()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_a87b00242959e4b733a6250b7afb35387} 
void gko::\+log::\+\+Profiler\+Hook::\+on\+\_\+iteration\+\_\+complete (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{solver}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \&}]{it}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{r}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{x}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{tau}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



Register the {\ttfamily iteration\+\_\+complete} event which logs every completed iterations. 


\begin{DoxyParams}{Parameters}
{\em it} & the current iteration count \\
\hline
{\em r} & the residual \\
\hline
{\em x} & the solution vector (optional) \\
\hline
{\em tau} & the residual norm (optional)\\
\hline
\end{DoxyParams}
\begin{DoxyWarning}{Warning}
This on\+\_\+iteration\+\_\+complete function that this macro declares is deprecated. Please use the version with the stopping information. 
\end{DoxyWarning}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.



References \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a9ae165051a8b1d0503d84e35e5d53375}{on\+\_\+iteration\+\_\+complete()}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_a93fc819f338275d4ae0c93862040c034}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!on\_iteration\_complete@{on\_iteration\_complete}}
\index{on\_iteration\_complete@{on\_iteration\_complete}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{on\_iteration\_complete()}{on\_iteration\_complete()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_a93fc819f338275d4ae0c93862040c034} 
void gko::\+log::\+\+Profiler\+Hook::\+on\+\_\+iteration\+\_\+complete (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{solver}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \&}]{it}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{r}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{x}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{tau}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{implicit\+\_\+tau\+\_\+sq}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



Register the {\ttfamily iteration\+\_\+complete} event which logs every completed iterations. 


\begin{DoxyParams}{Parameters}
{\em it} & the current iteration count \\
\hline
{\em r} & the residual \\
\hline
{\em x} & the solution vector (optional) \\
\hline
{\em tau} & the residual norm (optional) \\
\hline
{\em implicit\+\_\+tau\+\_\+sq} & the implicit residual norm squared (optional)\\
\hline
\end{DoxyParams}
\begin{DoxyWarning}{Warning}
This on\+\_\+iteration\+\_\+complete function that this macro declares is deprecated. Please use the version with the stopping information. 
\end{DoxyWarning}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.



References \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a9ae165051a8b1d0503d84e35e5d53375}{on\+\_\+iteration\+\_\+complete()}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_a7005bcdb6036adedd3665ee09aafefc5}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!on\_linop\_advanced\_apply\_completed@{on\_linop\_advanced\_apply\_completed}}
\index{on\_linop\_advanced\_apply\_completed@{on\_linop\_advanced\_apply\_completed}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{on\_linop\_advanced\_apply\_completed()}{on\_linop\_advanced\_apply\_completed()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_a7005bcdb6036adedd3665ee09aafefc5} 
void gko::\+log::\+\+Profiler\+Hook::\+on\+\_\+linop\+\_\+advanced\+\_\+apply\+\_\+completed (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{A}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{alpha}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{b}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{beta}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{x}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



\doxylink{classgko_1_1LinOp}{Lin\+Op}\textquotesingle{}s advanced apply completed event. 


\begin{DoxyParams}{Parameters}
{\em A} & the system matrix \\
\hline
{\em alpha} & scaling of the result of op(b) \\
\hline
{\em b} & the input vector(s) \\
\hline
{\em beta} & scaling of the input x \\
\hline
{\em x} & the output vector(s) \\
\hline
\end{DoxyParams}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_abff584192ffab00e1e21daa58a2955c0}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!on\_linop\_advanced\_apply\_started@{on\_linop\_advanced\_apply\_started}}
\index{on\_linop\_advanced\_apply\_started@{on\_linop\_advanced\_apply\_started}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{on\_linop\_advanced\_apply\_started()}{on\_linop\_advanced\_apply\_started()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_abff584192ffab00e1e21daa58a2955c0} 
void gko::\+log::\+\+Profiler\+Hook::\+on\+\_\+linop\+\_\+advanced\+\_\+apply\+\_\+started (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{A}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{alpha}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{b}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{beta}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{x}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



\doxylink{classgko_1_1LinOp}{Lin\+Op}\textquotesingle{}s advanced apply started event. 


\begin{DoxyParams}{Parameters}
{\em A} & the system matrix \\
\hline
{\em alpha} & scaling of the result of op(b) \\
\hline
{\em b} & the input vector(s) \\
\hline
{\em beta} & scaling of the input x \\
\hline
{\em x} & the output vector(s) \\
\hline
\end{DoxyParams}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_a21ba3bcec189367adec6638f062f68e8}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!on\_linop\_apply\_completed@{on\_linop\_apply\_completed}}
\index{on\_linop\_apply\_completed@{on\_linop\_apply\_completed}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{on\_linop\_apply\_completed()}{on\_linop\_apply\_completed()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_a21ba3bcec189367adec6638f062f68e8} 
void gko::\+log::\+\+Profiler\+Hook::\+on\+\_\+linop\+\_\+apply\+\_\+completed (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{A}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{b}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{x}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



\doxylink{classgko_1_1LinOp}{Lin\+Op}\textquotesingle{}s apply completed event. 


\begin{DoxyParams}{Parameters}
{\em A} & the system matrix \\
\hline
{\em b} & the input vector(s) \\
\hline
{\em x} & the output vector(s) \\
\hline
\end{DoxyParams}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_aefdaf360373200d21fe79dd2d89cad5e}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!on\_linop\_apply\_started@{on\_linop\_apply\_started}}
\index{on\_linop\_apply\_started@{on\_linop\_apply\_started}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{on\_linop\_apply\_started()}{on\_linop\_apply\_started()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_aefdaf360373200d21fe79dd2d89cad5e} 
void gko::\+log::\+\+Profiler\+Hook::\+on\+\_\+linop\+\_\+apply\+\_\+started (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{A}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{b}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{x}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



\doxylink{classgko_1_1LinOp}{Lin\+Op}\textquotesingle{}s apply started event. 


\begin{DoxyParams}{Parameters}
{\em A} & the system matrix \\
\hline
{\em b} & the input vector(s) \\
\hline
{\em x} & the output vector(s) \\
\hline
\end{DoxyParams}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_ab5a3915ad59cb08a330d4495ed631e12}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!on\_linop\_factory\_generate\_completed@{on\_linop\_factory\_generate\_completed}}
\index{on\_linop\_factory\_generate\_completed@{on\_linop\_factory\_generate\_completed}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{on\_linop\_factory\_generate\_completed()}{on\_linop\_factory\_generate\_completed()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_ab5a3915ad59cb08a330d4495ed631e12} 
void gko::\+log::\+\+Profiler\+Hook::\+on\+\_\+linop\+\_\+factory\+\_\+generate\+\_\+completed (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1LinOpFactory}{Lin\+Op\+Factory}} \texorpdfstring{$\ast$}{*}}]{factory}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{input}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{output}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



\doxylink{classgko_1_1LinOp}{Lin\+Op} Factory\textquotesingle{}s generate completed event. 


\begin{DoxyParams}{Parameters}
{\em factory} & the factory used \\
\hline
{\em input} & the \doxylink{classgko_1_1LinOp}{Lin\+Op} object used as input for the generation (usually a system matrix) \\
\hline
{\em output} & the generated \doxylink{classgko_1_1LinOp}{Lin\+Op} object \\
\hline
\end{DoxyParams}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_aadef5e0bc39fb916797820d25622f2ae}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!on\_linop\_factory\_generate\_started@{on\_linop\_factory\_generate\_started}}
\index{on\_linop\_factory\_generate\_started@{on\_linop\_factory\_generate\_started}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{on\_linop\_factory\_generate\_started()}{on\_linop\_factory\_generate\_started()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_aadef5e0bc39fb916797820d25622f2ae} 
void gko::\+log::\+\+Profiler\+Hook::\+on\+\_\+linop\+\_\+factory\+\_\+generate\+\_\+started (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1LinOpFactory}{Lin\+Op\+Factory}} \texorpdfstring{$\ast$}{*}}]{factory}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{input}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



\doxylink{classgko_1_1LinOp}{Lin\+Op} Factory\textquotesingle{}s generate started event. 


\begin{DoxyParams}{Parameters}
{\em factory} & the factory used \\
\hline
{\em input} & the \doxylink{classgko_1_1LinOp}{Lin\+Op} object used as input for the generation (usually a system matrix) \\
\hline
\end{DoxyParams}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_ac21d8670ca8d881e9605dd9ff6296b11}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!on\_operation\_completed@{on\_operation\_completed}}
\index{on\_operation\_completed@{on\_operation\_completed}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{on\_operation\_completed()}{on\_operation\_completed()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_ac21d8670ca8d881e9605dd9ff6296b11} 
void gko::\+log::\+\+Profiler\+Hook::\+on\+\_\+operation\+\_\+completed (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} \texorpdfstring{$\ast$}{*}}]{exec}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1Operation}{Operation}} \texorpdfstring{$\ast$}{*}}]{op}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



\doxylink{classgko_1_1Executor}{Executor}\textquotesingle{}s operation completed event (method run). 


\begin{DoxyParams}{Parameters}
{\em exec} & the executor used \\
\hline
{\em op} & the completed operation\\
\hline
\end{DoxyParams}
\begin{DoxyNote}{Note}
For the GPU, to be certain that the operation completed it is required to call synchronize. This burden falls on the logger. Most of the loggers will do lightweight logging, and therefore this operation for the GPU just notes that the \doxylink{classgko_1_1Operation}{Operation} has been sent to the GPU. 
\end{DoxyNote}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_afff66ff204f88182df8a06864d174349}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!on\_operation\_launched@{on\_operation\_launched}}
\index{on\_operation\_launched@{on\_operation\_launched}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{on\_operation\_launched()}{on\_operation\_launched()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_afff66ff204f88182df8a06864d174349} 
void gko::\+log::\+\+Profiler\+Hook::\+on\+\_\+operation\+\_\+launched (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} \texorpdfstring{$\ast$}{*}}]{exec}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1Operation}{Operation}} \texorpdfstring{$\ast$}{*}}]{op}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



\doxylink{classgko_1_1Executor}{Executor}\textquotesingle{}s operation launched event (method run). 


\begin{DoxyParams}{Parameters}
{\em exec} & the executor used \\
\hline
{\em op} & the operation launched \\
\hline
\end{DoxyParams}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_a54f749267620560a2e291a45dbb6446f}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!on\_polymorphic\_object\_copy\_completed@{on\_polymorphic\_object\_copy\_completed}}
\index{on\_polymorphic\_object\_copy\_completed@{on\_polymorphic\_object\_copy\_completed}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{on\_polymorphic\_object\_copy\_completed()}{on\_polymorphic\_object\_copy\_completed()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_a54f749267620560a2e291a45dbb6446f} 
void gko::\+log::\+\+Profiler\+Hook::\+on\+\_\+polymorphic\+\_\+object\+\_\+copy\+\_\+completed (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} \texorpdfstring{$\ast$}{*}}]{exec}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}} \texorpdfstring{$\ast$}{*}}]{input}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}} \texorpdfstring{$\ast$}{*}}]{output}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



\doxylink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}\textquotesingle{}s copy completed event. 


\begin{DoxyParams}{Parameters}
{\em exec} & the executor used \\
\hline
{\em input} & the \doxylink{classgko_1_1PolymorphicObject}{Polymorphic\+Object} to be copied from \\
\hline
{\em output} & the \doxylink{classgko_1_1PolymorphicObject}{Polymorphic\+Object} to be copied to \\
\hline
\end{DoxyParams}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_a3ce83ac968ec2fa2c381e70ba7bc72df}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!on\_polymorphic\_object\_copy\_started@{on\_polymorphic\_object\_copy\_started}}
\index{on\_polymorphic\_object\_copy\_started@{on\_polymorphic\_object\_copy\_started}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{on\_polymorphic\_object\_copy\_started()}{on\_polymorphic\_object\_copy\_started()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_a3ce83ac968ec2fa2c381e70ba7bc72df} 
void gko::\+log::\+\+Profiler\+Hook::\+on\+\_\+polymorphic\+\_\+object\+\_\+copy\+\_\+started (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} \texorpdfstring{$\ast$}{*}}]{exec}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}} \texorpdfstring{$\ast$}{*}}]{input}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}} \texorpdfstring{$\ast$}{*}}]{output}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



\doxylink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}\textquotesingle{}s copy started event. 


\begin{DoxyParams}{Parameters}
{\em exec} & the executor used \\
\hline
{\em input} & the \doxylink{classgko_1_1PolymorphicObject}{Polymorphic\+Object} to be copied from \\
\hline
{\em output} & the \doxylink{classgko_1_1PolymorphicObject}{Polymorphic\+Object} to be copied to \\
\hline
\end{DoxyParams}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_a3cd14a28a3a72c6bd9bcb100c205bd6b}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!on\_polymorphic\_object\_move\_completed@{on\_polymorphic\_object\_move\_completed}}
\index{on\_polymorphic\_object\_move\_completed@{on\_polymorphic\_object\_move\_completed}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{on\_polymorphic\_object\_move\_completed()}{on\_polymorphic\_object\_move\_completed()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_a3cd14a28a3a72c6bd9bcb100c205bd6b} 
void gko::\+log::\+\+Profiler\+Hook::\+on\+\_\+polymorphic\+\_\+object\+\_\+move\+\_\+completed (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} \texorpdfstring{$\ast$}{*}}]{exec}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}} \texorpdfstring{$\ast$}{*}}]{input}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}} \texorpdfstring{$\ast$}{*}}]{output}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



\doxylink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}\textquotesingle{}s move completed event. 


\begin{DoxyParams}{Parameters}
{\em exec} & the executor used \\
\hline
{\em input} & the \doxylink{classgko_1_1PolymorphicObject}{Polymorphic\+Object} to be move from \\
\hline
{\em output} & the \doxylink{classgko_1_1PolymorphicObject}{Polymorphic\+Object} to be move into \\
\hline
\end{DoxyParams}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_ae3e79272bed844f378ffdeb51714f4ca}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!on\_polymorphic\_object\_move\_started@{on\_polymorphic\_object\_move\_started}}
\index{on\_polymorphic\_object\_move\_started@{on\_polymorphic\_object\_move\_started}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{on\_polymorphic\_object\_move\_started()}{on\_polymorphic\_object\_move\_started()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_ae3e79272bed844f378ffdeb51714f4ca} 
void gko::\+log::\+\+Profiler\+Hook::\+on\+\_\+polymorphic\+\_\+object\+\_\+move\+\_\+started (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} \texorpdfstring{$\ast$}{*}}]{exec}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}} \texorpdfstring{$\ast$}{*}}]{input}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}} \texorpdfstring{$\ast$}{*}}]{output}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



\doxylink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}\textquotesingle{}s move started event. 


\begin{DoxyParams}{Parameters}
{\em exec} & the executor used \\
\hline
{\em input} & the \doxylink{classgko_1_1PolymorphicObject}{Polymorphic\+Object} to be move from \\
\hline
{\em output} & the \doxylink{classgko_1_1PolymorphicObject}{Polymorphic\+Object} to be move into \\
\hline
\end{DoxyParams}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_a1f901332281289fa4915e073dffb12c3}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!set\_object\_name@{set\_object\_name}}
\index{set\_object\_name@{set\_object\_name}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{set\_object\_name()}{set\_object\_name()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_a1f901332281289fa4915e073dffb12c3} 
void gko::\+log::\+\+Profiler\+Hook::\+set\+\_\+object\+\_\+name (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{Polymorphic\+Object}} $>$}]{obj}{, }\item[{std::\+string}]{name}{}\end{DoxyParamCaption})}



Sets the name for an object to be profiled. 

Every instance of that object in the profile will be replaced by the name instead of its runtime type.


\begin{DoxyParams}{Parameters}
{\em obj} & the object \\
\hline
{\em name} & its name \\
\hline
\end{DoxyParams}


References \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a1f901332281289fa4915e073dffb12c3}{set\+\_\+object\+\_\+name()}}.



Referenced by \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a1f901332281289fa4915e073dffb12c3}{set\+\_\+object\+\_\+name()}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_a9429ec9658274a71a5c632fb973c22e1}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!set\_synchronization@{set\_synchronization}}
\index{set\_synchronization@{set\_synchronization}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{set\_synchronization()}{set\_synchronization()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_a9429ec9658274a71a5c632fb973c22e1} 
void gko::\+log::\+\+Profiler\+Hook::\+set\+\_\+synchronization (\begin{DoxyParamCaption}\item[{bool}]{synchronize}{}\end{DoxyParamCaption})}



Should the events call executor-\/\texorpdfstring{$>$}{>}synchronize on operations and copy/\+allocation? 

This leads to a certain overhead, but makes the execution timeline of kernels synchronous. 

References \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a9429ec9658274a71a5c632fb973c22e1}{set\+\_\+synchronization()}}.



Referenced by \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a9429ec9658274a71a5c632fb973c22e1}{set\+\_\+synchronization()}}.

\Hypertarget{classgko_1_1log_1_1ProfilerHook_a4d0e1e93d993f5074d60276359faadd8}\index{gko::log::ProfilerHook@{gko::log::ProfilerHook}!user\_range@{user\_range}}
\index{user\_range@{user\_range}!gko::log::ProfilerHook@{gko::log::ProfilerHook}}
\doxysubsubsection{\texorpdfstring{user\_range()}{user\_range()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1ProfilerHook_a4d0e1e93d993f5074d60276359faadd8} 
\doxymbox{\hyperlink{classgko_1_1log_1_1profiling__scope__guard}{profiling\+\_\+scope\+\_\+guard}} gko::\+log::\+\+Profiler\+Hook::\+user\+\_\+range (\begin{DoxyParamCaption}\item[{const char \texorpdfstring{$\ast$}{*}}]{name}{}\end{DoxyParamCaption}) const}



Creates a scope guard for a user-\/defined range to be included in the profile. 


\begin{DoxyParams}{Parameters}
{\em name} & the name of the range\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the scope guard. It will begin a range immediately and end it at the end of its scope. 
\end{DoxyReturn}


References \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a4d0e1e93d993f5074d60276359faadd8}{user\+\_\+range()}}.



Referenced by \doxymbox{\hyperlink{classgko_1_1log_1_1ProfilerHook_a4d0e1e93d993f5074d60276359faadd8}{user\+\_\+range()}}.



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