\doxysection{device\+\_\+matrix\+\_\+data.\+hpp}
\hypertarget{device__matrix__data_8hpp_source}{}\label{device__matrix__data_8hpp_source}\index{ginkgo/core/base/device\_matrix\_data.hpp@{ginkgo/core/base/device\_matrix\_data.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\_BASE\_DEVICE\_MATRIX\_DATA\_HPP\_}}
\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#define\ GKO\_PUBLIC\_CORE\_BASE\_DEVICE\_MATRIX\_DATA\_HPP\_}}
\DoxyCodeLine{00007\ }
\DoxyCodeLine{00008\ }
\DoxyCodeLine{00009\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/array.hpp>}}
\DoxyCodeLine{00010\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/dim.hpp>}}
\DoxyCodeLine{00011\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/exception\_helpers.hpp>}}
\DoxyCodeLine{00012\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/executor.hpp>}}
\DoxyCodeLine{00013\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/matrix\_data.hpp>}}
\DoxyCodeLine{00014\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/temporary\_clone.hpp>}}
\DoxyCodeLine{00015\ }
\DoxyCodeLine{00016\ }
\DoxyCodeLine{00017\ \textcolor{keyword}{namespace\ }\doxymbox{\hyperlink{namespacegko}{gko}}\ \{}
\DoxyCodeLine{00018\ }
\DoxyCodeLine{00019\ }
\DoxyCodeLine{00035\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType,\ \textcolor{keyword}{typename}\ IndexType>}
\DoxyCodeLine{00036\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1device__matrix__data_a3653ff48a4c4206892c87ecb0fd23203}{device\_matrix\_data}}\ \{}
\DoxyCodeLine{00037\ \ \ \ \ GKO\_ASSERT\_SUPPORTED\_VALUE\_AND\_INDEX\_TYPE;}
\DoxyCodeLine{00038\ }
\DoxyCodeLine{00039\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00040\ \ \ \ \ \textcolor{keyword}{using\ }value\_type\ =\ ValueType;}
\DoxyCodeLine{00041\ \ \ \ \ \textcolor{keyword}{using\ }index\_type\ =\ IndexType;}
\DoxyCodeLine{00042\ \ \ \ \ \textcolor{keyword}{using\ }nonzero\_type\ =\ \doxymbox{\hyperlink{structgko_1_1matrix__data__entry}{matrix\_data\_entry<value\_type,\ index\_type>}};}
\DoxyCodeLine{00043\ \ \ \ \ \textcolor{keyword}{using\ }host\_type\ =\ \doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\_data<value\_type,\ index\_type>}};}
\DoxyCodeLine{00044\ }
\DoxyCodeLine{00054\ \ \ \ \ \textcolor{keyword}{explicit}\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_a3653ff48a4c4206892c87ecb0fd23203}{device\_matrix\_data}}(std::shared\_ptr<const\ Executor>\ exec,}
\DoxyCodeLine{00055\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\ size\ =\ \{\},\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ num\_entries\ =\ 0);}
\DoxyCodeLine{00056\ }
\DoxyCodeLine{00065\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_ab2ea8a6610e43c02cf0f3080805faa0d}{device\_matrix\_data}}(std::shared\_ptr<const\ Executor>\ exec,}
\DoxyCodeLine{00066\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_a3653ff48a4c4206892c87ecb0fd23203}{device\_matrix\_data}}\&\ data);}
\DoxyCodeLine{00067\ }
\DoxyCodeLine{00076\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_afacc9e975bda74ba64399831c0388e9c}{device\_matrix\_data}}(std::shared\_ptr<const\ Executor>\ exec,\ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\ size,}
\DoxyCodeLine{00077\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array<index\_type>}}\ row\_idxs,\ \doxymbox{\hyperlink{classgko_1_1array}{array<index\_type>}}\ col\_idxs,}
\DoxyCodeLine{00078\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array<value\_type>}}\ values);}
\DoxyCodeLine{00079\ }
\DoxyCodeLine{00084\ \ \ \ \ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ InputValueType,\ \textcolor{keyword}{typename}\ RowIndexType,}
\DoxyCodeLine{00085\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{typename}\ ColIndexType>}
\DoxyCodeLine{00086\ \ \ \ \ GKO\_DEPRECATED(}
\DoxyCodeLine{00087\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}explicitly\ construct\ the\ gko::array\ arguments\ instead\ of\ passing\ "{}}}
\DoxyCodeLine{00088\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}initializer\ lists"{}})}
\DoxyCodeLine{00089\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_a3653ff48a4c4206892c87ecb0fd23203}{device\_matrix\_data}}(\doxymbox{\hyperlink{namespacestd}{std}}::shared\_ptr<const\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}>\ exec,\ \doxymbox{\hyperlink{structgko_1_1dim}{dim}}<2>\ size,}
\DoxyCodeLine{00090\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacestd}{std}}::initializer\_list<RowIndexType>\ row\_idxs,}
\DoxyCodeLine{00091\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacestd}{std}}::initializer\_list<ColIndexType>\ col\_idxs,}
\DoxyCodeLine{00092\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacestd}{std}}::initializer\_list<InputValueType>\ values)}
\DoxyCodeLine{00093\ \ \ \ \ \ \ \ \ :\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_a3653ff48a4c4206892c87ecb0fd23203}{device\_matrix\_data}}\{exec,\ size,}
\DoxyCodeLine{00094\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array<index\_type>}}\{exec,\ std::move(row\_idxs)\},}
\DoxyCodeLine{00095\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array<index\_type>}}\{exec,\ std::move(col\_idxs)\},}
\DoxyCodeLine{00096\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array<value\_type>}}\{exec,\ std::move(values)\}\}}
\DoxyCodeLine{00097\ \ \ \ \ \{\}}
\DoxyCodeLine{00098\ }
\DoxyCodeLine{00105\ \ \ \ \ host\_type\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_ad76d20b33f8744baa54594a62d5a458c}{copy\_to\_host}}()\ \textcolor{keyword}{const};}
\DoxyCodeLine{00106\ }
\DoxyCodeLine{00116\ \ \ \ \ \textcolor{keyword}{static}\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_a3653ff48a4c4206892c87ecb0fd23203}{device\_matrix\_data}}\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_a1642ea80e5bef6b868a2f90e47e5ad98}{create\_from\_host}}(}
\DoxyCodeLine{00117\ \ \ \ \ \ \ \ \ std::shared\_ptr<const\ Executor>\ exec,\ \textcolor{keyword}{const}\ host\_type\&\ data);}
\DoxyCodeLine{00118\ }
\DoxyCodeLine{00122\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_a6f6975fc7241ab234682b53dbc8b4f8f}{fill\_zero}}();}
\DoxyCodeLine{00123\ }
\DoxyCodeLine{00129\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_a78a09fe708c05b511d9b7d5db8d3e9aa}{sort\_row\_major}}();}
\DoxyCodeLine{00130\ }
\DoxyCodeLine{00136\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_ad4fb4fc719d1127c009c9908c9ad7927}{remove\_zeros}}();}
\DoxyCodeLine{00137\ }
\DoxyCodeLine{00143\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_a8b58afc780989cfcba739829572fe7ab}{sum\_duplicates}}();}
\DoxyCodeLine{00144\ }
\DoxyCodeLine{00150\ \ \ \ \ std::shared\_ptr<const\ Executor>\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_ab136667bf2edfe108562ac621b5dbb2c}{get\_executor}}()\textcolor{keyword}{\ const}}
\DoxyCodeLine{00151\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00152\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ values\_.get\_executor();}
\DoxyCodeLine{00153\ \ \ \ \ \}}
\DoxyCodeLine{00154\ }
\DoxyCodeLine{00160\ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_a0833ae3149f79aa779c3fdbd8162d515}{get\_size}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ size\_;\ \}}
\DoxyCodeLine{00161\ }
\DoxyCodeLine{00167\ \ \ \ \ GKO\_DEPRECATED(\textcolor{stringliteral}{"{}use\ get\_num\_stored\_elements()"{}})}
\DoxyCodeLine{00168\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_a5bacac26357200725ba02a2b5715d612}{get\_num\_elems}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_a3e2d62a3d845a950fb2e17393e3d0778}{get\_num\_stored\_elements}}();\ \}}
\DoxyCodeLine{00169\ }
\DoxyCodeLine{00175\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_a3e2d62a3d845a950fb2e17393e3d0778}{get\_num\_stored\_elements}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ values\_.get\_size();\ \}}
\DoxyCodeLine{00176\ }
\DoxyCodeLine{00182\ \ \ \ \ index\_type*\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_a1e8e3b0c928366f6226b5ba9d5d24f7d}{get\_row\_idxs}}()\ \{\ \textcolor{keywordflow}{return}\ row\_idxs\_.get\_data();\ \}}
\DoxyCodeLine{00183\ }
\DoxyCodeLine{00189\ \ \ \ \ \textcolor{keyword}{const}\ index\_type*\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_a19208a2418be777748f7e99bb2c03c47}{get\_const\_row\_idxs}}()\textcolor{keyword}{\ const}}
\DoxyCodeLine{00190\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00191\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ row\_idxs\_.get\_const\_data();}
\DoxyCodeLine{00192\ \ \ \ \ \}}
\DoxyCodeLine{00193\ }
\DoxyCodeLine{00199\ \ \ \ \ index\_type*\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_abcea476caaaec017b3503b47953fb3ac}{get\_col\_idxs}}()\ \{\ \textcolor{keywordflow}{return}\ col\_idxs\_.get\_data();\ \}}
\DoxyCodeLine{00200\ }
\DoxyCodeLine{00206\ \ \ \ \ \textcolor{keyword}{const}\ index\_type*\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_a4394207fef43d5aaa0219bdb635c0960}{get\_const\_col\_idxs}}()\textcolor{keyword}{\ const}}
\DoxyCodeLine{00207\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00208\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ col\_idxs\_.get\_const\_data();}
\DoxyCodeLine{00209\ \ \ \ \ \}}
\DoxyCodeLine{00210\ }
\DoxyCodeLine{00216\ \ \ \ \ value\_type*\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_aca81060702f427c0527e57ac3aadbceb}{get\_values}}()\ \{\ \textcolor{keywordflow}{return}\ values\_.get\_data();\ \}}
\DoxyCodeLine{00217\ }
\DoxyCodeLine{00223\ \ \ \ \ \textcolor{keyword}{const}\ value\_type*\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_a2fae2f18047fbe705fe5e65da0a6d2df}{get\_const\_values}}()\textcolor{keyword}{\ const}}
\DoxyCodeLine{00224\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00225\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ values\_.get\_const\_data();}
\DoxyCodeLine{00226\ \ \ \ \ \}}
\DoxyCodeLine{00227\ }
\DoxyCodeLine{00234\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_a449321da72bedffd451f53ba1f0c4df0}{resize\_and\_reset}}(\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ new\_num\_entries);}
\DoxyCodeLine{00235\ }
\DoxyCodeLine{00243\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_a51ba3d8b6aa53d6dda7041ed519c29f0}{resize\_and\_reset}}(\doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\ new\_size,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ new\_num\_entries);}
\DoxyCodeLine{00244\ }
\DoxyCodeLine{00248\ \ \ \ \ \textcolor{keyword}{struct\ }\doxymbox{\hyperlink{structgko_1_1device__matrix__data_1_1arrays}{arrays}}\ \{}
\DoxyCodeLine{00249\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array<index\_type>}}\ row\_idxs;}
\DoxyCodeLine{00250\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array<index\_type>}}\ col\_idxs;}
\DoxyCodeLine{00251\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array<value\_type>}}\ values;}
\DoxyCodeLine{00252\ \ \ \ \ \};}
\DoxyCodeLine{00253\ }
\DoxyCodeLine{00260\ \ \ \ \ arrays\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data_a9d1846d039164943d54080b237c2aa47}{empty\_out}}();}
\DoxyCodeLine{00261\ }
\DoxyCodeLine{00262\ \textcolor{keyword}{private}:}
\DoxyCodeLine{00263\ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\ size\_;}
\DoxyCodeLine{00264\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array<index\_type>}}\ row\_idxs\_;}
\DoxyCodeLine{00265\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array<index\_type>}}\ col\_idxs\_;}
\DoxyCodeLine{00266\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array<value\_type>}}\ values\_;}
\DoxyCodeLine{00267\ \};}
\DoxyCodeLine{00268\ }
\DoxyCodeLine{00269\ }
\DoxyCodeLine{00270\ \textcolor{keyword}{namespace\ }detail\ \{}
\DoxyCodeLine{00271\ }
\DoxyCodeLine{00272\ }
\DoxyCodeLine{00273\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType,\ \textcolor{keyword}{typename}\ IndexType>}
\DoxyCodeLine{00274\ \textcolor{keyword}{struct\ }temporary\_clone\_helper<\doxymbox{\hyperlink{classgko_1_1device__matrix__data}{device\_matrix\_data}}<ValueType,\ IndexType>>\ \{}
\DoxyCodeLine{00275\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<device\_matrix\_data<ValueType,\ IndexType>>\ create(}
\DoxyCodeLine{00276\ \ \ \ \ \ \ \ \ std::shared\_ptr<const\ Executor>\ exec,}
\DoxyCodeLine{00277\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1device__matrix__data}{device\_matrix\_data<ValueType,\ IndexType>}}*\ ptr,\ \textcolor{keywordtype}{bool}\ copy\_data)}
\DoxyCodeLine{00278\ \ \ \ \ \{}
\DoxyCodeLine{00279\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (copy\_data)\ \{}
\DoxyCodeLine{00280\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ std::make\_unique<device\_matrix\_data<ValueType,\ IndexType>>(}
\DoxyCodeLine{00281\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ std::move(exec),\ *ptr);}
\DoxyCodeLine{00282\ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
\DoxyCodeLine{00283\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ std::make\_unique<device\_matrix\_data<ValueType,\ IndexType>>(}
\DoxyCodeLine{00284\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ std::move(exec),\ ptr-\/>\doxymbox{\hyperlink{classgko_1_1device__matrix__data_a0833ae3149f79aa779c3fdbd8162d515}{get\_size}}(),}
\DoxyCodeLine{00285\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ptr-\/>\doxymbox{\hyperlink{classgko_1_1device__matrix__data_a3e2d62a3d845a950fb2e17393e3d0778}{get\_num\_stored\_elements}}());}
\DoxyCodeLine{00286\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{00287\ \ \ \ \ \}}
\DoxyCodeLine{00288\ \};}
\DoxyCodeLine{00289\ }
\DoxyCodeLine{00290\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType,\ \textcolor{keyword}{typename}\ IndexType>}
\DoxyCodeLine{00291\ \textcolor{keyword}{struct\ }temporary\_clone\_helper<const\ device\_matrix\_data<ValueType,\ IndexType>>\ \{}
\DoxyCodeLine{00292\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<const\ device\_matrix\_data<ValueType,\ IndexType>>}
\DoxyCodeLine{00293\ \ \ \ \ create(std::shared\_ptr<const\ Executor>\ exec,}
\DoxyCodeLine{00294\ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ device\_matrix\_data<ValueType,\ IndexType>*\ ptr,\ \textcolor{keywordtype}{bool})}
\DoxyCodeLine{00295\ \ \ \ \ \{}
\DoxyCodeLine{00296\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ std::make\_unique<const\ device\_matrix\_data<ValueType,\ IndexType>>(}
\DoxyCodeLine{00297\ \ \ \ \ \ \ \ \ \ \ \ \ std::move(exec),\ *ptr);}
\DoxyCodeLine{00298\ \ \ \ \ \}}
\DoxyCodeLine{00299\ \};}
\DoxyCodeLine{00300\ }
\DoxyCodeLine{00301\ }
\DoxyCodeLine{00302\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType,\ \textcolor{keyword}{typename}\ IndexType>}
\DoxyCodeLine{00303\ \textcolor{keyword}{class\ }copy\_back\_deleter<device\_matrix\_data<ValueType,\ IndexType>>}
\DoxyCodeLine{00304\ \ \ \ \ :\ \textcolor{keyword}{public}\ copy\_back\_deleter\_from\_assignment<}
\DoxyCodeLine{00305\ \ \ \ \ \ \ \ \ \ \ device\_matrix\_data<ValueType,\ IndexType>>\ \{}
\DoxyCodeLine{00306\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00307\ \ \ \ \ \textcolor{keyword}{using\ }copy\_back\_deleter\_from\_assignment<device\_matrix\_data<}
\DoxyCodeLine{00308\ \ \ \ \ \ \ \ \ ValueType,\ IndexType>>::copy\_back\_deleter\_from\_assignment;}
\DoxyCodeLine{00309\ \};}
\DoxyCodeLine{00310\ }
\DoxyCodeLine{00311\ }
\DoxyCodeLine{00312\ \}\ \ \textcolor{comment}{//\ namespace\ detail}}
\DoxyCodeLine{00313\ \}\ \ \textcolor{comment}{//\ namespace\ gko}}
\DoxyCodeLine{00314\ }
\DoxyCodeLine{00315\ }
\DoxyCodeLine{00316\ \textcolor{preprocessor}{\#endif\ \ }\textcolor{comment}{//\ GKO\_PUBLIC\_CORE\_BASE\_DEVICE\_MATRIX\_DATA\_HPP\_}}

\end{DoxyCode}
