\doxysection{papi.\+hpp}
\hypertarget{papi_8hpp_source}{}\label{papi_8hpp_source}\index{ginkgo/core/log/papi.hpp@{ginkgo/core/log/papi.hpp}}

\begin{DoxyCode}{0}
\DoxyCodeLine{00001\ \textcolor{comment}{//\ SPDX-\/FileCopyrightText:\ 2017\ -\/\ 2025\ The\ Ginkgo\ authors}}
\DoxyCodeLine{00002\ \textcolor{comment}{//}}
\DoxyCodeLine{00003\ \textcolor{comment}{//\ SPDX-\/License-\/Identifier:\ BSD-\/3-\/Clause}}
\DoxyCodeLine{00004\ }
\DoxyCodeLine{00005\ \textcolor{preprocessor}{\#ifndef\ GKO\_PUBLIC\_CORE\_LOG\_PAPI\_HPP\_}}
\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#define\ GKO\_PUBLIC\_CORE\_LOG\_PAPI\_HPP\_}}
\DoxyCodeLine{00007\ }
\DoxyCodeLine{00008\ }
\DoxyCodeLine{00009\ \textcolor{preprocessor}{\#include\ <ginkgo/config.hpp>}}
\DoxyCodeLine{00010\ }
\DoxyCodeLine{00011\ }
\DoxyCodeLine{00012\ \textcolor{preprocessor}{\#if\ GKO\_HAVE\_PAPI\_SDE}}
\DoxyCodeLine{00013\ }
\DoxyCodeLine{00014\ }
\DoxyCodeLine{00015\ \textcolor{preprocessor}{\#include\ <cstddef>}}
\DoxyCodeLine{00016\ \textcolor{preprocessor}{\#include\ <iostream>}}
\DoxyCodeLine{00017\ \textcolor{preprocessor}{\#include\ <map>}}
\DoxyCodeLine{00018\ \textcolor{preprocessor}{\#include\ <mutex>}}
\DoxyCodeLine{00019\ }
\DoxyCodeLine{00020\ \textcolor{preprocessor}{\#include\ <sde\_lib.h>}}
\DoxyCodeLine{00021\ }
\DoxyCodeLine{00022\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/polymorphic\_object.hpp>}}
\DoxyCodeLine{00023\ \textcolor{preprocessor}{\#include\ <ginkgo/core/log/logger.hpp>}}
\DoxyCodeLine{00024\ }
\DoxyCodeLine{00025\ }
\DoxyCodeLine{00026\ \textcolor{keyword}{namespace\ }\doxymbox{\hyperlink{namespacegko}{gko}}\ \{}
\DoxyCodeLine{00027\ \textcolor{keyword}{namespace\ }\doxymbox{\hyperlink{namespacegko_1_1log}{log}}\ \{}
\DoxyCodeLine{00028\ }
\DoxyCodeLine{00029\ }
\DoxyCodeLine{00030\ \textcolor{keyword}{static}\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ papi\_logger\_count\ =\ 0;}
\DoxyCodeLine{00031\ \textcolor{keyword}{static}\ std::mutex\ papi\_count\_mutex;}
\DoxyCodeLine{00032\ }
\DoxyCodeLine{00033\ }
\DoxyCodeLine{00058\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType\ =\ default\_precision>}
\DoxyCodeLine{00059\ \textcolor{keyword}{class\ }Papi\ :\ \textcolor{keyword}{public}\ Logger\ \{}
\DoxyCodeLine{00060\ \ \ \ \ GKO\_ASSERT\_SUPPORTED\_VALUE\_TYPE;}
\DoxyCodeLine{00061\ }
\DoxyCodeLine{00062\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00063\ \ \ \ \ \textcolor{comment}{/*\ Executor\ events\ */}}
\DoxyCodeLine{00064\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_a2abdc8fab81cb1d8c3aaf9097ba7d196}{on\_allocation\_started}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ exec,}
\DoxyCodeLine{00065\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\&\ num\_bytes)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00066\ }
\DoxyCodeLine{00067\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_a3ad5a381a114474f6ed73f091f02de2e}{on\_allocation\_completed}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ exec,}
\DoxyCodeLine{00068\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\&\ num\_bytes,}
\DoxyCodeLine{00069\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{uintptr}}\&\ location)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00070\ }
\DoxyCodeLine{00071\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_abe28976a545818f745985966d22b8f81}{on\_free\_started}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ exec,}
\DoxyCodeLine{00072\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{uintptr}}\&\ location)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00073\ }
\DoxyCodeLine{00074\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_a8dc94a3fe363f702daaa6e19778c1470}{on\_free\_completed}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ exec,}
\DoxyCodeLine{00075\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{uintptr}}\&\ location)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00076\ }
\DoxyCodeLine{00077\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_a7c32185cbc939e98ade133866c278de4}{on\_copy\_started}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ from,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ to,}
\DoxyCodeLine{00078\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{uintptr}}\&\ location\_from,}
\DoxyCodeLine{00079\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{uintptr}}\&\ location\_to,}
\DoxyCodeLine{00080\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\&\ num\_bytes)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00081\ }
\DoxyCodeLine{00082\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_aad0982e4a85505bdfca957bb370b3740}{on\_copy\_completed}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ from,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ to,}
\DoxyCodeLine{00083\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{uintptr}}\&\ location\_from,}
\DoxyCodeLine{00084\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{uintptr}}\&\ location\_to,}
\DoxyCodeLine{00085\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\&\ num\_bytes)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00086\ }
\DoxyCodeLine{00087\ \ \ \ \ \textcolor{comment}{/*\ Operation\ events\ */}}
\DoxyCodeLine{00088\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_ad18fd20033b376dd687fae4773dbe659}{on\_operation\_launched}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ exec,}
\DoxyCodeLine{00089\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Operation}{Operation}}*\ \doxymbox{\hyperlink{namespacegko_1_1log_a15f71654c6c4f4defc95f9359343fa27af7235a61fdc3adc78d866fd8085d44db}{operation}})\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00090\ }
\DoxyCodeLine{00091\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_a97a52177c0a1aeff7d4c854c9f578960}{on\_operation\_completed}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ exec,}
\DoxyCodeLine{00092\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Operation}{Operation}}*\ \doxymbox{\hyperlink{namespacegko_1_1log_a15f71654c6c4f4defc95f9359343fa27af7235a61fdc3adc78d866fd8085d44db}{operation}})\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00093\ }
\DoxyCodeLine{00094\ \ \ \ \ \textcolor{comment}{/*\ PolymorphicObject\ events\ */}}
\DoxyCodeLine{00095\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_a6513dd981c07e33d37fed598853794a2}{on\_polymorphic\_object\_create\_started}}(}
\DoxyCodeLine{00096\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{PolymorphicObject}}*\ po)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00097\ }
\DoxyCodeLine{00098\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_a5d4c5c43ae57d02b710c6e01b1dabcd2}{on\_polymorphic\_object\_create\_completed}}(}
\DoxyCodeLine{00099\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ exec,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{PolymorphicObject}}*\ input,}
\DoxyCodeLine{00100\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{PolymorphicObject}}*\ output)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00101\ }
\DoxyCodeLine{00102\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_abfe9f21e86e3ae15446f5021dc89d498}{on\_polymorphic\_object\_copy\_started}}(}
\DoxyCodeLine{00103\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ exec,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{PolymorphicObject}}*\ from,}
\DoxyCodeLine{00104\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{PolymorphicObject}}*\ to)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00105\ }
\DoxyCodeLine{00106\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_a00551a6a9ad7b59ad41b9268054bb52f}{on\_polymorphic\_object\_copy\_completed}}(}
\DoxyCodeLine{00107\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ exec,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{PolymorphicObject}}*\ from,}
\DoxyCodeLine{00108\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{PolymorphicObject}}*\ to)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00109\ }
\DoxyCodeLine{00110\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_a5007f1b716fab98765aedb76210cfe9f}{on\_polymorphic\_object\_move\_started}}(}
\DoxyCodeLine{00111\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ exec,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{PolymorphicObject}}*\ from,}
\DoxyCodeLine{00112\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{PolymorphicObject}}*\ to)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00113\ }
\DoxyCodeLine{00114\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_acf686dde736f0a3de201de3c16f1cd84}{on\_polymorphic\_object\_move\_completed}}(}
\DoxyCodeLine{00115\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ exec,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{PolymorphicObject}}*\ from,}
\DoxyCodeLine{00116\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{PolymorphicObject}}*\ to)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00117\ }
\DoxyCodeLine{00118\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_a9826df957074aa8cacca64e67a4dcc0c}{on\_polymorphic\_object\_deleted}}(}
\DoxyCodeLine{00119\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ exec,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{PolymorphicObject}}*\ po)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00120\ }
\DoxyCodeLine{00121\ \ \ \ \ \textcolor{comment}{/*\ LinOp\ events\ */}}
\DoxyCodeLine{00122\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_aba20a0615452fd1e1c35cdca0f6265c0}{on\_linop\_apply\_started}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ A,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ b,}
\DoxyCodeLine{00123\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ x)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00124\ }
\DoxyCodeLine{00125\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_adf4539b5ca7e7c91f409bedf06171aa0}{on\_linop\_apply\_completed}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ A,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ b,}
\DoxyCodeLine{00126\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ x)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00127\ }
\DoxyCodeLine{00128\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_a1f78c6e24c0fe74ac988afb8084686f2}{on\_linop\_advanced\_apply\_started}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ A,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ alpha,}
\DoxyCodeLine{00129\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ b,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ beta,}
\DoxyCodeLine{00130\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ x)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00131\ }
\DoxyCodeLine{00132\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_a1962d12d4785bf3135a3273146a6993d}{on\_linop\_advanced\_apply\_completed}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ A,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ alpha,}
\DoxyCodeLine{00133\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ b,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ beta,}
\DoxyCodeLine{00134\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ x)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00135\ }
\DoxyCodeLine{00136\ \ \ \ \ \textcolor{comment}{/*\ LinOpFactory\ events\ */}}
\DoxyCodeLine{00137\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_a0600797571b66a9274c0e027e51431eb}{on\_linop\_factory\_generate\_started}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOpFactory}{LinOpFactory}}*\ \doxymbox{\hyperlink{namespacegko_1_1log_a15f71654c6c4f4defc95f9359343fa27a9549dd6065d019211460c59a86dd6536}{factory}},}
\DoxyCodeLine{00138\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ input)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00139\ }
\DoxyCodeLine{00140\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_a858363018411e4ba4054f372b004a196}{on\_linop\_factory\_generate\_completed}}(}
\DoxyCodeLine{00141\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOpFactory}{LinOpFactory}}*\ \doxymbox{\hyperlink{namespacegko_1_1log_a15f71654c6c4f4defc95f9359343fa27a9549dd6065d019211460c59a86dd6536}{factory}},\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ input,}
\DoxyCodeLine{00142\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ output)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00143\ }
\DoxyCodeLine{00144\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_ab48abdb748dc01084530a473955948a8}{on\_criterion\_check\_completed}}(}
\DoxyCodeLine{00145\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1stop_1_1Criterion}{stop::Criterion}}*\ \doxymbox{\hyperlink{namespacegko_1_1log_a15f71654c6c4f4defc95f9359343fa27a4d4b370ab9b3dbca1ccdb1a5cca6a728}{criterion}},\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\&\ num\_iterations,}
\DoxyCodeLine{00146\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ residual,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ residual\_norm,}
\DoxyCodeLine{00147\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ solution,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a06d96f1ecdca6b86399173969771c3fb}{uint8}}\&\ stopping\_id,}
\DoxyCodeLine{00148\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{bool}\&\ set\_finalized,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1array}{array<stopping\_status>}}*\ status,}
\DoxyCodeLine{00149\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{bool}\&\ one\_changed,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{bool}\&\ all\_converged)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00150\ }
\DoxyCodeLine{00151\ \ \ \ \ \textcolor{comment}{/*\ Internal\ solver\ events\ */}}
\DoxyCodeLine{00152\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_a1e1d1c6589a6994b0d77ecb1ae3469d1}{on\_iteration\_complete}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ \doxymbox{\hyperlink{namespacegko_1_1solver}{solver}},\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ b,}
\DoxyCodeLine{00153\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ x,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\&\ num\_iterations,}
\DoxyCodeLine{00154\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ residual,}
\DoxyCodeLine{00155\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ residual\_norm,}
\DoxyCodeLine{00156\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ implicit\_resnorm\_sq,}
\DoxyCodeLine{00157\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1array}{array<stopping\_status>}}*\ status,}
\DoxyCodeLine{00158\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{bool}\ stopped)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00159\ }
\DoxyCodeLine{00160\ \ \ \ \ GKO\_DEPRECATED(}
\DoxyCodeLine{00161\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}Please\ use\ the\ version\ with\ the\ additional\ stopping\ "{}}}
\DoxyCodeLine{00162\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}information."{}})}
\DoxyCodeLine{00163\ \ \ \ \ void\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_a1e1d1c6589a6994b0d77ecb1ae3469d1}{on\_iteration\_complete}}(const\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ \doxymbox{\hyperlink{namespacegko_1_1solver}{solver}},}
\DoxyCodeLine{00164\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ const\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\&\ num\_iterations,}
\DoxyCodeLine{00165\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ const\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ residual,\ const\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ solution,}
\DoxyCodeLine{00166\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ const\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ residual\_norm)\ const\ override;}
\DoxyCodeLine{00167\ }
\DoxyCodeLine{00168\ \ \ \ \ GKO\_DEPRECATED(}
\DoxyCodeLine{00169\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}Please\ use\ the\ version\ with\ the\ additional\ stopping\ "{}}}
\DoxyCodeLine{00170\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}information."{}})}
\DoxyCodeLine{00171\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_a1e1d1c6589a6994b0d77ecb1ae3469d1}{on\_iteration\_complete}}(}
\DoxyCodeLine{00172\ \ \ \ \ \ \ \ \ const\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ \doxymbox{\hyperlink{namespacegko_1_1solver}{solver}},\ const\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\&\ num\_iterations,}
\DoxyCodeLine{00173\ \ \ \ \ \ \ \ \ const\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ residual,\ const\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ solution,}
\DoxyCodeLine{00174\ \ \ \ \ \ \ \ \ const\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ residual\_norm,}
\DoxyCodeLine{00175\ \ \ \ \ \ \ \ \ const\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ implicit\_sq\_residual\_norm)\ const\ override;}
\DoxyCodeLine{00176\ }
\DoxyCodeLine{00182\ \ \ \ \ GKO\_DEPRECATED(\textcolor{stringliteral}{"{}use\ single-\/parameter\ create"{}})}
\DoxyCodeLine{00183\ \ \ \ \ static\ \doxymbox{\hyperlink{namespacestd}{std}}::shared\_ptr<Papi>\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_a0ba9d46941bc44a0e6d67544fa6dbc01}{create}}(}
\DoxyCodeLine{00184\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacestd}{std}}::shared\_ptr<const\ \doxymbox{\hyperlink{namespacegko}{gko}}::\doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}>,}
\DoxyCodeLine{00185\ \ \ \ \ \ \ \ \ const\ Logger::mask\_type\&\ enabled\_events\ =\ Logger::\doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a02534863a2d2f92dfeb2c39038365532}{all\_events\_mask}})}
\DoxyCodeLine{00186\ \ \ \ \ \{}
\DoxyCodeLine{00187\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_a0ba9d46941bc44a0e6d67544fa6dbc01}{Papi::create}}(enabled\_events);}
\DoxyCodeLine{00188\ \ \ \ \ \}}
\DoxyCodeLine{00189\ }
\DoxyCodeLine{00195\ \ \ \ \ \textcolor{keyword}{static}\ std::shared\_ptr<Papi>\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_a2f4c955eb8487d5a1cc87aeb2818939b}{create}}(}
\DoxyCodeLine{00196\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ Logger::mask\_type\&\ enabled\_events\ =\ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a02534863a2d2f92dfeb2c39038365532}{Logger::all\_events\_mask}})}
\DoxyCodeLine{00197\ \ \ \ \ \{}
\DoxyCodeLine{00198\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ std::shared\_ptr<Papi>(\textcolor{keyword}{new}\ Papi(enabled\_events),\ [](\textcolor{keyword}{auto}\ logger)\ \{}
\DoxyCodeLine{00199\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{auto}\ handle\ =\ logger-\/>get\_handle();}
\DoxyCodeLine{00200\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{delete}\ logger;}
\DoxyCodeLine{00201\ \ \ \ \ \ \ \ \ \ \ \ \ papi\_sde\_shutdown(handle);}
\DoxyCodeLine{00202\ \ \ \ \ \ \ \ \ \});}
\DoxyCodeLine{00203\ \ \ \ \ \}}
\DoxyCodeLine{00204\ }
\DoxyCodeLine{00211\ \ \ \ \ \textcolor{keyword}{const}\ std::string\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_ab3e2ab9cf8e235b128e6b9fc1968677d}{get\_handle\_name}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ name;\ \}}
\DoxyCodeLine{00212\ }
\DoxyCodeLine{00218\ \ \ \ \ \textcolor{keyword}{const}\ papi\_handle\_t\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi_a21fb0225b7f3ff7d38ccf0feff46da83}{get\_handle}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ papi\_handle;\ \}}
\DoxyCodeLine{00219\ }
\DoxyCodeLine{00220\ \textcolor{keyword}{protected}:}
\DoxyCodeLine{00221\ \ \ \ \ GKO\_DEPRECATED(\textcolor{stringliteral}{"{}use\ single-\/parameter\ constructor"{}})}
\DoxyCodeLine{00222\ \ \ \ \ explicit\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi}{Papi}}(}
\DoxyCodeLine{00223\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacestd}{std}}::shared\_ptr<const\ \doxymbox{\hyperlink{namespacegko}{gko}}::\doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}>\ exec,}
\DoxyCodeLine{00224\ \ \ \ \ \ \ \ \ const\ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{Logger}}::mask\_type\&\ enabled\_events\ =\ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{Logger}}::\doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a02534863a2d2f92dfeb2c39038365532}{all\_events\_mask}})}
\DoxyCodeLine{00225\ \ \ \ \ \ \ \ \ :\ \doxymbox{\hyperlink{classgko_1_1log_1_1Papi}{Papi}}(enabled\_events)}
\DoxyCodeLine{00226\ \ \ \ \ \{\}}
\DoxyCodeLine{00227\ }
\DoxyCodeLine{00228\ \ \ \ \ \textcolor{keyword}{explicit}\ Papi(}
\DoxyCodeLine{00229\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ Logger::mask\_type\&\ enabled\_events\ =\ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a02534863a2d2f92dfeb2c39038365532}{Logger::all\_events\_mask}})}
\DoxyCodeLine{00230\ \ \ \ \ \ \ \ \ :\ Logger(enabled\_events)}
\DoxyCodeLine{00231\ \ \ \ \ \{}
\DoxyCodeLine{00232\ \ \ \ \ \ \ \ \ std::ostringstream\ os;}
\DoxyCodeLine{00233\ }
\DoxyCodeLine{00234\ \ \ \ \ \ \ \ \ std::lock\_guard<std::mutex>\ guard(papi\_count\_mutex);}
\DoxyCodeLine{00235\ \ \ \ \ \ \ \ \ os\ <<\ \textcolor{stringliteral}{"{}ginkgo"{}}\ <<\ papi\_logger\_count;}
\DoxyCodeLine{00236\ \ \ \ \ \ \ \ \ name\ =\ os.str();}
\DoxyCodeLine{00237\ \ \ \ \ \ \ \ \ papi\_handle\ =\ papi\_sde\_init(name.c\_str());}
\DoxyCodeLine{00238\ \ \ \ \ \ \ \ \ papi\_logger\_count++;}
\DoxyCodeLine{00239\ \ \ \ \ \}}
\DoxyCodeLine{00240\ }
\DoxyCodeLine{00241\ \textcolor{keyword}{private}:}
\DoxyCodeLine{00242\ \ \ \ \ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ Po\textcolor{keywordtype}{int}erType>}
\DoxyCodeLine{00243\ \ \ \ \ \textcolor{keyword}{class\ }papi\_queue\ \{}
\DoxyCodeLine{00244\ \ \ \ \ \textcolor{keyword}{public}:}
\DoxyCodeLine{00245\ \ \ \ \ \ \ \ \ papi\_queue(papi\_handle\_t*\ handle,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ counter\_name)}
\DoxyCodeLine{00246\ \ \ \ \ \ \ \ \ \ \ \ \ :\ handle\{handle\},\ counter\_name\{counter\_name\}}
\DoxyCodeLine{00247\ \ \ \ \ \ \ \ \ \{\}}
\DoxyCodeLine{00248\ }
\DoxyCodeLine{00249\ \ \ \ \ \ \ \ \ \string~papi\_queue()}
\DoxyCodeLine{00250\ \ \ \ \ \ \ \ \ \{}
\DoxyCodeLine{00251\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (\textcolor{keyword}{auto}\ e\ :\ data)\ \{}
\DoxyCodeLine{00252\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ std::ostringstream\ oss;}
\DoxyCodeLine{00253\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ oss\ <<\ counter\_name\ <<\ \textcolor{stringliteral}{"{}::"{}}\ <<\ e.first;}
\DoxyCodeLine{00254\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ papi\_sde\_unregister\_counter(*handle,\ oss.str().c\_str());}
\DoxyCodeLine{00255\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{00256\ \ \ \ \ \ \ \ \ \ \ \ \ data.clear();}
\DoxyCodeLine{00257\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{00258\ }
\DoxyCodeLine{00259\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\&\ get\_counter(\textcolor{keyword}{const}\ PointerType*\ ptr)}
\DoxyCodeLine{00260\ \ \ \ \ \ \ \ \ \{}
\DoxyCodeLine{00261\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keyword}{auto}\ tmp\ =\ \textcolor{keyword}{reinterpret\_cast<}\doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{uintptr}}\textcolor{keyword}{>}(ptr);}
\DoxyCodeLine{00262\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (data.find(tmp)\ ==\ data.end())\ \{}
\DoxyCodeLine{00263\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ data[tmp]\ =\ 0;}
\DoxyCodeLine{00264\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{00265\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{auto}\&\ value\ =\ data[tmp];}
\DoxyCodeLine{00266\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (!value)\ \{}
\DoxyCodeLine{00267\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ std::ostringstream\ oss;}
\DoxyCodeLine{00268\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ oss\ <<\ counter\_name\ <<\ \textcolor{stringliteral}{"{}::"{}}\ <<\ tmp;}
\DoxyCodeLine{00269\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ papi\_sde\_register\_counter(*handle,\ oss.str().c\_str(),}
\DoxyCodeLine{00270\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PAPI\_SDE\_RO\ |\ PAPI\_SDE\_INSTANT,}
\DoxyCodeLine{00271\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PAPI\_SDE\_long\_long,\ \&value);}
\DoxyCodeLine{00272\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{00273\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ data[tmp];}
\DoxyCodeLine{00274\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{00275\ }
\DoxyCodeLine{00276\ \ \ \ \ \textcolor{keyword}{private}:}
\DoxyCodeLine{00277\ \ \ \ \ \ \ \ \ papi\_handle\_t*\ handle;}
\DoxyCodeLine{00278\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ counter\_name;}
\DoxyCodeLine{00279\ \ \ \ \ \ \ \ \ std::map<std::uintptr\_t,\ size\_type>\ data;}
\DoxyCodeLine{00280\ \ \ \ \ \};}
\DoxyCodeLine{00281\ }
\DoxyCodeLine{00282\ }
\DoxyCodeLine{00283\ \ \ \ \ \textcolor{keyword}{mutable}\ papi\_queue<Executor>\ allocation\_started\{\&papi\_handle,}
\DoxyCodeLine{00284\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}allocation\_started"{}}\};}
\DoxyCodeLine{00285\ \ \ \ \ \textcolor{keyword}{mutable}\ papi\_queue<Executor>\ allocation\_completed\{\&papi\_handle,}
\DoxyCodeLine{00286\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}allocation\_completed"{}}\};}
\DoxyCodeLine{00287\ \ \ \ \ \textcolor{keyword}{mutable}\ papi\_queue<Executor>\ free\_started\{\&papi\_handle,\ \textcolor{stringliteral}{"{}free\_started"{}}\};}
\DoxyCodeLine{00288\ \ \ \ \ \textcolor{keyword}{mutable}\ papi\_queue<Executor>\ free\_completed\{\&papi\_handle,\ \textcolor{stringliteral}{"{}free\_completed"{}}\};}
\DoxyCodeLine{00289\ \ \ \ \ \textcolor{keyword}{mutable}\ papi\_queue<Executor>\ copy\_started\_from\{\&papi\_handle,}
\DoxyCodeLine{00290\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}copy\_started\_from"{}}\};}
\DoxyCodeLine{00291\ \ \ \ \ \textcolor{keyword}{mutable}\ papi\_queue<Executor>\ copy\_started\_to\{\&papi\_handle,}
\DoxyCodeLine{00292\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}copy\_started\_to"{}}\};}
\DoxyCodeLine{00293\ \ \ \ \ \textcolor{keyword}{mutable}\ papi\_queue<Executor>\ copy\_completed\_from\{\&papi\_handle,}
\DoxyCodeLine{00294\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}copy\_completed\_from"{}}\};}
\DoxyCodeLine{00295\ \ \ \ \ \textcolor{keyword}{mutable}\ papi\_queue<Executor>\ copy\_completed\_to\{\&papi\_handle,}
\DoxyCodeLine{00296\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}copy\_completed\_to"{}}\};}
\DoxyCodeLine{00297\ }
\DoxyCodeLine{00298\ \ \ \ \ \textcolor{keyword}{mutable}\ papi\_queue<Executor>\ operation\_launched\{\&papi\_handle,}
\DoxyCodeLine{00299\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}operation\_launched"{}}\};}
\DoxyCodeLine{00300\ \ \ \ \ \textcolor{keyword}{mutable}\ papi\_queue<Executor>\ operation\_completed\{\&papi\_handle,}
\DoxyCodeLine{00301\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}operation\_completed"{}}\};}
\DoxyCodeLine{00302\ }
\DoxyCodeLine{00303\ \ \ \ \ \textcolor{keyword}{mutable}\ papi\_queue<Executor>\ polymorphic\_object\_create\_started\{}
\DoxyCodeLine{00304\ \ \ \ \ \ \ \ \ \&papi\_handle,\ \textcolor{stringliteral}{"{}polymorphic\_object\_create\_started"{}}\};}
\DoxyCodeLine{00305\ \ \ \ \ \textcolor{keyword}{mutable}\ papi\_queue<Executor>\ polymorphic\_object\_create\_completed\{}
\DoxyCodeLine{00306\ \ \ \ \ \ \ \ \ \&papi\_handle,\ \textcolor{stringliteral}{"{}polymorphic\_object\_create\_completed"{}}\};}
\DoxyCodeLine{00307\ \ \ \ \ \textcolor{keyword}{mutable}\ papi\_queue<Executor>\ polymorphic\_object\_copy\_started\{}
\DoxyCodeLine{00308\ \ \ \ \ \ \ \ \ \&papi\_handle,\ \textcolor{stringliteral}{"{}polymorphic\_object\_copy\_started"{}}\};}
\DoxyCodeLine{00309\ \ \ \ \ \textcolor{keyword}{mutable}\ papi\_queue<Executor>\ polymorphic\_object\_copy\_completed\{}
\DoxyCodeLine{00310\ \ \ \ \ \ \ \ \ \&papi\_handle,\ \textcolor{stringliteral}{"{}polymorphic\_object\_copy\_completed"{}}\};}
\DoxyCodeLine{00311\ \ \ \ \ \textcolor{keyword}{mutable}\ papi\_queue<Executor>\ polymorphic\_object\_move\_started\{}
\DoxyCodeLine{00312\ \ \ \ \ \ \ \ \ \&papi\_handle,\ \textcolor{stringliteral}{"{}polymorphic\_object\_move\_started"{}}\};}
\DoxyCodeLine{00313\ \ \ \ \ \textcolor{keyword}{mutable}\ papi\_queue<Executor>\ polymorphic\_object\_move\_completed\{}
\DoxyCodeLine{00314\ \ \ \ \ \ \ \ \ \&papi\_handle,\ \textcolor{stringliteral}{"{}polymorphic\_object\_move\_completed"{}}\};}
\DoxyCodeLine{00315\ \ \ \ \ \textcolor{keyword}{mutable}\ papi\_queue<Executor>\ polymorphic\_object\_deleted\{}
\DoxyCodeLine{00316\ \ \ \ \ \ \ \ \ \&papi\_handle,\ \textcolor{stringliteral}{"{}polymorphic\_object\_deleted"{}}\};}
\DoxyCodeLine{00317\ }
\DoxyCodeLine{00318\ \ \ \ \ \textcolor{keyword}{mutable}\ papi\_queue<LinOpFactory>\ linop\_factory\_generate\_started\{}
\DoxyCodeLine{00319\ \ \ \ \ \ \ \ \ \&papi\_handle,\ \textcolor{stringliteral}{"{}linop\_factory\_generate\_started"{}}\};}
\DoxyCodeLine{00320\ \ \ \ \ \textcolor{keyword}{mutable}\ papi\_queue<LinOpFactory>\ linop\_factory\_generate\_completed\{}
\DoxyCodeLine{00321\ \ \ \ \ \ \ \ \ \&papi\_handle,\ \textcolor{stringliteral}{"{}linop\_factory\_generate\_completed"{}}\};}
\DoxyCodeLine{00322\ }
\DoxyCodeLine{00323\ \ \ \ \ \textcolor{keyword}{mutable}\ papi\_queue<LinOp>\ linop\_apply\_started\{\&papi\_handle,}
\DoxyCodeLine{00324\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}linop\_apply\_started"{}}\};}
\DoxyCodeLine{00325\ \ \ \ \ \textcolor{keyword}{mutable}\ papi\_queue<LinOp>\ linop\_apply\_completed\{\&papi\_handle,}
\DoxyCodeLine{00326\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}linop\_apply\_completed"{}}\};}
\DoxyCodeLine{00327\ \ \ \ \ \textcolor{keyword}{mutable}\ papi\_queue<LinOp>\ linop\_advanced\_apply\_started\{}
\DoxyCodeLine{00328\ \ \ \ \ \ \ \ \ \&papi\_handle,\ \textcolor{stringliteral}{"{}linop\_advanced\_apply\_started"{}}\};}
\DoxyCodeLine{00329\ \ \ \ \ \textcolor{keyword}{mutable}\ papi\_queue<LinOp>\ linop\_advanced\_apply\_completed\{}
\DoxyCodeLine{00330\ \ \ \ \ \ \ \ \ \&papi\_handle,\ \textcolor{stringliteral}{"{}linop\_advanced\_apply\_completed"{}}\};}
\DoxyCodeLine{00331\ }
\DoxyCodeLine{00332\ \ \ \ \ \textcolor{keyword}{mutable}\ std::map<std::uintptr\_t,\ void*>\ criterion\_check\_completed;}
\DoxyCodeLine{00333\ }
\DoxyCodeLine{00334\ \ \ \ \ \textcolor{keyword}{mutable}\ papi\_queue<LinOp>\ iteration\_complete\{\&papi\_handle,}
\DoxyCodeLine{00335\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}iteration\_complete"{}}\};}
\DoxyCodeLine{00336\ }
\DoxyCodeLine{00337\ }
\DoxyCodeLine{00338\ \ \ \ \ std::string\ name\{\textcolor{stringliteral}{"{}ginkgo"{}}\};}
\DoxyCodeLine{00339\ \ \ \ \ papi\_handle\_t\ papi\_handle;}
\DoxyCodeLine{00340\ \};}
\DoxyCodeLine{00341\ }
\DoxyCodeLine{00342\ }
\DoxyCodeLine{00343\ \}\ \ \textcolor{comment}{//\ namespace\ log}}
\DoxyCodeLine{00344\ \}\ \ \textcolor{comment}{//\ namespace\ gko}}
\DoxyCodeLine{00345\ }
\DoxyCodeLine{00346\ }
\DoxyCodeLine{00347\ \textcolor{preprocessor}{\#endif\ \ }\textcolor{comment}{//\ GKO\_HAVE\_PAPI\_SDE}}
\DoxyCodeLine{00348\ \textcolor{preprocessor}{\#endif\ \ }\textcolor{comment}{//\ GKO\_PUBLIC\_CORE\_LOG\_PAPI\_HPP\_}}

\end{DoxyCode}
