\doxysection{gko::\+Dpcpp\+Executor Class Reference}
\hypertarget{classgko_1_1DpcppExecutor}{}\label{classgko_1_1DpcppExecutor}\index{gko::DpcppExecutor@{gko::DpcppExecutor}}


This is the \doxylink{classgko_1_1Executor}{Executor} subclass which represents a DPC++ enhanced device.  




{\ttfamily \+\#include $<$ginkgo/\+core/\+base/\+executor.\+hpp$>$}



Inheritance diagram for gko::\+Dpcpp\+Executor:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classgko_1_1DpcppExecutor__inherit__graph}
\end{center}
\end{figure}


Collaboration diagram for gko::\+Dpcpp\+Executor:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classgko_1_1DpcppExecutor__coll__graph}
\end{center}
\end{figure}
\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_a97089607eb590386ab646edea67d58cb}{get\+\_\+master}} () noexcept override
\begin{DoxyCompactList}\small\item\em Returns the master \doxylink{classgko_1_1OmpExecutor}{Omp\+Executor} of this \doxylink{classgko_1_1Executor}{Executor}. \end{DoxyCompactList}\item 
std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_a25e312e44fd224e2b1d81ebe7755e8d9}{get\+\_\+master}} () const noexcept override
\begin{DoxyCompactList}\small\item\em Returns the master \doxylink{classgko_1_1OmpExecutor}{Omp\+Executor} of this \doxylink{classgko_1_1Executor}{Executor}.    \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_a6b2a82c46748ddbf097fa2da3ec64d90}{synchronize}} () const override
\begin{DoxyCompactList}\small\item\em Synchronize the operations launched on the executor with its master. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{classgko_1_1scoped__device__id__guard}{scoped\+\_\+device\+\_\+id\+\_\+guard}} \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_ab8128e7f66ad3a5228de54356621cd7f}{get\+\_\+scoped\+\_\+device\+\_\+id\+\_\+guard}} () const override
\item 
std::\+string \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_a30330475d4668e72586456434171b6d6}{get\+\_\+description}} () const override
\item 
int \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_aefdd7095f2d18ff8e4ab8354006f305b}{get\+\_\+device\+\_\+id}} () const noexcept
\begin{DoxyCompactList}\small\item\em Get the DPCPP device id of the device associated to this executor. \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1DpcppExecutor_a46a7dceb3f7937a1dd7407fe6dadee4a}\label{classgko_1_1DpcppExecutor_a46a7dceb3f7937a1dd7407fe6dadee4a} 
sycl::\+queue \texorpdfstring{$\ast$}{*} {\bfseries get\+\_\+queue} () const
\item 
const std::\+vector$<$ int $>$ \& \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_a04ffb17d22dd9c0f970f25fb77535f33}{get\+\_\+subgroup\+\_\+sizes}} () const noexcept
\begin{DoxyCompactList}\small\item\em Get the available subgroup sizes for this device. \end{DoxyCompactList}\item 
int \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_a1a9ef86016a05905955e2d05812bf00d}{get\+\_\+num\+\_\+computing\+\_\+units}} () const noexcept
\begin{DoxyCompactList}\small\item\em Get the number of Computing Units of this executor. \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1DpcppExecutor_a5539608a0027a5ff6b1330d9595e7e58}\label{classgko_1_1DpcppExecutor_a5539608a0027a5ff6b1330d9595e7e58} 
int {\bfseries get\+\_\+num\+\_\+subgroups} () const noexcept
\begin{DoxyCompactList}\small\item\em Get the number of subgroups of this executor. \end{DoxyCompactList}\item 
const std::\+vector$<$ int $>$ \& \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_a7803d98c1a2ac3356468557ec6e08d3f}{get\+\_\+max\+\_\+workitem\+\_\+sizes}} () const noexcept
\begin{DoxyCompactList}\small\item\em Get the maximum work item sizes. \end{DoxyCompactList}\item 
int \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_a2a4b81ed45477d3c4d38a340cb994ec5}{get\+\_\+max\+\_\+workgroup\+\_\+size}} () const noexcept
\begin{DoxyCompactList}\small\item\em Get the maximum workgroup size. \end{DoxyCompactList}\item 
int \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_a950a8f15ace58f5f54af3a9b52a11998}{get\+\_\+max\+\_\+subgroup\+\_\+size}} () const noexcept
\begin{DoxyCompactList}\small\item\em Get the maximum subgroup size. \end{DoxyCompactList}\item 
std::\+string \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_ab6ff2a7bc51dca54ef9cce5c836ade2f}{get\+\_\+device\+\_\+type}} () const noexcept
\begin{DoxyCompactList}\small\item\em Get a string representing the device type. \end{DoxyCompactList}\item 
virtual void \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_a4fdbf8100b039d3858634bf9c502f5d7}{run}} (const \doxymbox{\hyperlink{classgko_1_1Operation}{Operation}} \&op) const=0
\begin{DoxyCompactList}\small\item\em Runs the specified \doxylink{classgko_1_1Operation}{Operation} using this \doxylink{classgko_1_1Executor}{Executor}. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename Closure\+Omp, typename Closure\+Cuda, typename Closure\+Hip, typename Closure\+Dpcpp$>$ }\\void \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_a294787f033b02fd013af087d02a4ae1b}{run}} (const Closure\+Omp \&op\+\_\+omp, const Closure\+Cuda \&op\+\_\+cuda, const Closure\+Hip \&op\+\_\+hip, const Closure\+Dpcpp \&op\+\_\+dpcpp) const
\begin{DoxyCompactList}\small\item\em Runs one of the passed in functors, depending on the \doxylink{classgko_1_1Executor}{Executor} type. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename Closure\+Reference, typename Closure\+Omp, typename Closure\+Cuda, typename Closure\+Hip, typename Closure\+Dpcpp$>$ }\\void \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_abe906f109824da54447e504ff88aa97f}{run}} (std::\+string name, const Closure\+Reference \&op\+\_\+ref, const Closure\+Omp \&op\+\_\+omp, const Closure\+Cuda \&op\+\_\+cuda, const Closure\+Hip \&op\+\_\+hip, const Closure\+Dpcpp \&op\+\_\+dpcpp) const
\begin{DoxyCompactList}\small\item\em Runs one of the passed in functors, depending on the \doxylink{classgko_1_1Executor}{Executor} type. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static std::\+shared\+\_\+ptr$<$ Dpcpp\+Executor $>$ \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_af69a356ee07f641010df5d2e9e518bb0}{create}} (int device\+\_\+id, std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ master, std::\+string device\+\_\+type="{}all"{}, dpcpp\+\_\+queue\+\_\+property property=dpcpp\+\_\+queue\+\_\+property::\+in\+\_\+order)
\begin{DoxyCompactList}\small\item\em Creates a new \doxylink{classgko_1_1DpcppExecutor}{Dpcpp\+Executor}. \end{DoxyCompactList}\item 
static int \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_adf306338233c8e8aca0dec96aefe5d93}{get\+\_\+num\+\_\+devices}} (std::\+string device\+\_\+type)
\begin{DoxyCompactList}\small\item\em Get the number of devices present on the system. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
This is the \doxylink{classgko_1_1Executor}{Executor} subclass which represents a DPC++ enhanced device. 

\label{doc-func-members}
\Hypertarget{classgko_1_1DpcppExecutor_doc-func-members}
\doxysubsection{Member Function Documentation}
\Hypertarget{classgko_1_1DpcppExecutor_af69a356ee07f641010df5d2e9e518bb0}\index{gko::DpcppExecutor@{gko::DpcppExecutor}!create@{create}}
\index{create@{create}!gko::DpcppExecutor@{gko::DpcppExecutor}}
\doxysubsubsection{\texorpdfstring{create()}{create()}}
{\footnotesize\ttfamily \label{classgko_1_1DpcppExecutor_af69a356ee07f641010df5d2e9e518bb0} 
std::\+shared\+\_\+ptr$<$ Dpcpp\+Executor $>$ gko::\+\+Dpcpp\+Executor::\+create (\begin{DoxyParamCaption}\item[{int}]{device\+\_\+id}{, }\item[{std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{master}{, }\item[{std::\+string}]{device\+\_\+type}{ = {\ttfamily "{}all"{}}, }\item[{dpcpp\+\_\+queue\+\_\+property}]{property}{ = {\ttfamily dpcpp\+\_\+queue\+\_\+property:\+:\+in\+\_\+order}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Creates a new \doxylink{classgko_1_1DpcppExecutor}{Dpcpp\+Executor}. 


\begin{DoxyParams}{Parameters}
{\em device\+\_\+id} & the DPCPP device id of this device \\
\hline
{\em master} & an executor on the host that is used to invoke the device kernels \\
\hline
{\em device\+\_\+type} & a string representing the type of device to consider (accelerator, cpu, gpu or all). \\
\hline
\end{DoxyParams}
\Hypertarget{classgko_1_1DpcppExecutor_a30330475d4668e72586456434171b6d6}\index{gko::DpcppExecutor@{gko::DpcppExecutor}!get\_description@{get\_description}}
\index{get\_description@{get\_description}!gko::DpcppExecutor@{gko::DpcppExecutor}}
\doxysubsubsection{\texorpdfstring{get\_description()}{get\_description()}}
{\footnotesize\ttfamily \label{classgko_1_1DpcppExecutor_a30330475d4668e72586456434171b6d6} 
std::\+string gko::\+\+Dpcpp\+Executor::\+get\+\_\+description (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}

\begin{DoxyReturn}{Returns}
a textual representation of the executor and its device. 
\end{DoxyReturn}


Implements \doxymbox{\hyperlink{classgko_1_1Executor_a9b25713dfacc7914b69115f815e616b0}{gko::\+\+Executor}}.



References \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_a30330475d4668e72586456434171b6d6}{get\+\_\+description()}}.



Referenced by \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_a30330475d4668e72586456434171b6d6}{get\+\_\+description()}}.

\Hypertarget{classgko_1_1DpcppExecutor_aefdd7095f2d18ff8e4ab8354006f305b}\index{gko::DpcppExecutor@{gko::DpcppExecutor}!get\_device\_id@{get\_device\_id}}
\index{get\_device\_id@{get\_device\_id}!gko::DpcppExecutor@{gko::DpcppExecutor}}
\doxysubsubsection{\texorpdfstring{get\_device\_id()}{get\_device\_id()}}
{\footnotesize\ttfamily \label{classgko_1_1DpcppExecutor_aefdd7095f2d18ff8e4ab8354006f305b} 
int gko::\+\+Dpcpp\+Executor::\+get\+\_\+device\+\_\+id (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Get the DPCPP device id of the device associated to this executor. 

\begin{DoxyReturn}{Returns}
the DPCPP device id of the device associated to this executor 
\end{DoxyReturn}


References \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_aefdd7095f2d18ff8e4ab8354006f305b}{get\+\_\+device\+\_\+id()}}.



Referenced by \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_aefdd7095f2d18ff8e4ab8354006f305b}{get\+\_\+device\+\_\+id()}}.

\Hypertarget{classgko_1_1DpcppExecutor_ab6ff2a7bc51dca54ef9cce5c836ade2f}\index{gko::DpcppExecutor@{gko::DpcppExecutor}!get\_device\_type@{get\_device\_type}}
\index{get\_device\_type@{get\_device\_type}!gko::DpcppExecutor@{gko::DpcppExecutor}}
\doxysubsubsection{\texorpdfstring{get\_device\_type()}{get\_device\_type()}}
{\footnotesize\ttfamily \label{classgko_1_1DpcppExecutor_ab6ff2a7bc51dca54ef9cce5c836ade2f} 
std::\+string gko::\+\+Dpcpp\+Executor::\+get\+\_\+device\+\_\+type (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Get a string representing the device type. 

\begin{DoxyReturn}{Returns}
a string representing the device type 
\end{DoxyReturn}
\Hypertarget{classgko_1_1DpcppExecutor_a25e312e44fd224e2b1d81ebe7755e8d9}\index{gko::DpcppExecutor@{gko::DpcppExecutor}!get\_master@{get\_master}}
\index{get\_master@{get\_master}!gko::DpcppExecutor@{gko::DpcppExecutor}}
\doxysubsubsection{\texorpdfstring{get\_master()}{get\_master()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{classgko_1_1DpcppExecutor_a25e312e44fd224e2b1d81ebe7755e8d9} 
std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ gko::\+\+Dpcpp\+Executor::\+get\+\_\+master (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}, {\ttfamily [noexcept]}}



Returns the master \doxylink{classgko_1_1OmpExecutor}{Omp\+Executor} of this \doxylink{classgko_1_1Executor}{Executor}.    

\begin{DoxyReturn}{Returns}
the master \doxylink{classgko_1_1OmpExecutor}{Omp\+Executor} of this \doxylink{classgko_1_1Executor}{Executor}.    
\end{DoxyReturn}


Implements \doxymbox{\hyperlink{classgko_1_1Executor_a30d5407c37711d49184914026d815708}{gko::\+\+Executor}}.



References \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_a97089607eb590386ab646edea67d58cb}{get\+\_\+master()}}.

\Hypertarget{classgko_1_1DpcppExecutor_a97089607eb590386ab646edea67d58cb}\index{gko::DpcppExecutor@{gko::DpcppExecutor}!get\_master@{get\_master}}
\index{get\_master@{get\_master}!gko::DpcppExecutor@{gko::DpcppExecutor}}
\doxysubsubsection{\texorpdfstring{get\_master()}{get\_master()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{classgko_1_1DpcppExecutor_a97089607eb590386ab646edea67d58cb} 
std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ gko::\+\+Dpcpp\+Executor::\+get\+\_\+master (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}, {\ttfamily [noexcept]}}



Returns the master \doxylink{classgko_1_1OmpExecutor}{Omp\+Executor} of this \doxylink{classgko_1_1Executor}{Executor}. 

\begin{DoxyReturn}{Returns}
the master \doxylink{classgko_1_1OmpExecutor}{Omp\+Executor} of this \doxylink{classgko_1_1Executor}{Executor}. 
\end{DoxyReturn}


Implements \doxymbox{\hyperlink{classgko_1_1Executor_aa23172c7579fe4a9a41af8eba62ed54f}{gko::\+\+Executor}}.



Referenced by \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_a25e312e44fd224e2b1d81ebe7755e8d9}{get\+\_\+master()}}.

\Hypertarget{classgko_1_1DpcppExecutor_a950a8f15ace58f5f54af3a9b52a11998}\index{gko::DpcppExecutor@{gko::DpcppExecutor}!get\_max\_subgroup\_size@{get\_max\_subgroup\_size}}
\index{get\_max\_subgroup\_size@{get\_max\_subgroup\_size}!gko::DpcppExecutor@{gko::DpcppExecutor}}
\doxysubsubsection{\texorpdfstring{get\_max\_subgroup\_size()}{get\_max\_subgroup\_size()}}
{\footnotesize\ttfamily \label{classgko_1_1DpcppExecutor_a950a8f15ace58f5f54af3a9b52a11998} 
int gko::\+\+Dpcpp\+Executor::\+get\+\_\+max\+\_\+subgroup\+\_\+size (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Get the maximum subgroup size. 

\begin{DoxyReturn}{Returns}
the maximum subgroup size 
\end{DoxyReturn}
\Hypertarget{classgko_1_1DpcppExecutor_a2a4b81ed45477d3c4d38a340cb994ec5}\index{gko::DpcppExecutor@{gko::DpcppExecutor}!get\_max\_workgroup\_size@{get\_max\_workgroup\_size}}
\index{get\_max\_workgroup\_size@{get\_max\_workgroup\_size}!gko::DpcppExecutor@{gko::DpcppExecutor}}
\doxysubsubsection{\texorpdfstring{get\_max\_workgroup\_size()}{get\_max\_workgroup\_size()}}
{\footnotesize\ttfamily \label{classgko_1_1DpcppExecutor_a2a4b81ed45477d3c4d38a340cb994ec5} 
int gko::\+\+Dpcpp\+Executor::\+get\+\_\+max\+\_\+workgroup\+\_\+size (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Get the maximum workgroup size. 

\begin{DoxyReturn}{Returns}
the maximum workgroup size 
\end{DoxyReturn}
\Hypertarget{classgko_1_1DpcppExecutor_a7803d98c1a2ac3356468557ec6e08d3f}\index{gko::DpcppExecutor@{gko::DpcppExecutor}!get\_max\_workitem\_sizes@{get\_max\_workitem\_sizes}}
\index{get\_max\_workitem\_sizes@{get\_max\_workitem\_sizes}!gko::DpcppExecutor@{gko::DpcppExecutor}}
\doxysubsubsection{\texorpdfstring{get\_max\_workitem\_sizes()}{get\_max\_workitem\_sizes()}}
{\footnotesize\ttfamily \label{classgko_1_1DpcppExecutor_a7803d98c1a2ac3356468557ec6e08d3f} 
const std::\+vector$<$ int $>$ \& gko::\+\+Dpcpp\+Executor::\+get\+\_\+max\+\_\+workitem\+\_\+sizes (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Get the maximum work item sizes. 

\begin{DoxyReturn}{Returns}
the maximum work item sizes 
\end{DoxyReturn}
\Hypertarget{classgko_1_1DpcppExecutor_a1a9ef86016a05905955e2d05812bf00d}\index{gko::DpcppExecutor@{gko::DpcppExecutor}!get\_num\_computing\_units@{get\_num\_computing\_units}}
\index{get\_num\_computing\_units@{get\_num\_computing\_units}!gko::DpcppExecutor@{gko::DpcppExecutor}}
\doxysubsubsection{\texorpdfstring{get\_num\_computing\_units()}{get\_num\_computing\_units()}}
{\footnotesize\ttfamily \label{classgko_1_1DpcppExecutor_a1a9ef86016a05905955e2d05812bf00d} 
int gko::\+\+Dpcpp\+Executor::\+get\+\_\+num\+\_\+computing\+\_\+units (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Get the number of Computing Units of this executor. 

\begin{DoxyReturn}{Returns}
the number of Computing Units of this executor 
\end{DoxyReturn}
\Hypertarget{classgko_1_1DpcppExecutor_adf306338233c8e8aca0dec96aefe5d93}\index{gko::DpcppExecutor@{gko::DpcppExecutor}!get\_num\_devices@{get\_num\_devices}}
\index{get\_num\_devices@{get\_num\_devices}!gko::DpcppExecutor@{gko::DpcppExecutor}}
\doxysubsubsection{\texorpdfstring{get\_num\_devices()}{get\_num\_devices()}}
{\footnotesize\ttfamily \label{classgko_1_1DpcppExecutor_adf306338233c8e8aca0dec96aefe5d93} 
int gko::\+\+Dpcpp\+Executor::\+get\+\_\+num\+\_\+devices (\begin{DoxyParamCaption}\item[{std::\+string}]{device\+\_\+type}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Get the number of devices present on the system. 


\begin{DoxyParams}{Parameters}
{\em device\+\_\+type} & a string representing the device type\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the number of devices present on the system 
\end{DoxyReturn}
\Hypertarget{classgko_1_1DpcppExecutor_ab8128e7f66ad3a5228de54356621cd7f}\index{gko::DpcppExecutor@{gko::DpcppExecutor}!get\_scoped\_device\_id\_guard@{get\_scoped\_device\_id\_guard}}
\index{get\_scoped\_device\_id\_guard@{get\_scoped\_device\_id\_guard}!gko::DpcppExecutor@{gko::DpcppExecutor}}
\doxysubsubsection{\texorpdfstring{get\_scoped\_device\_id\_guard()}{get\_scoped\_device\_id\_guard()}}
{\footnotesize\ttfamily \label{classgko_1_1DpcppExecutor_ab8128e7f66ad3a5228de54356621cd7f} 
\doxymbox{\hyperlink{classgko_1_1scoped__device__id__guard}{scoped\+\_\+device\+\_\+id\+\_\+guard}} gko::\+\+Dpcpp\+Executor::\+get\+\_\+scoped\+\_\+device\+\_\+id\+\_\+guard (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



Implements \doxymbox{\hyperlink{classgko_1_1Executor}{gko::\+\+Executor}}.

\Hypertarget{classgko_1_1DpcppExecutor_a04ffb17d22dd9c0f970f25fb77535f33}\index{gko::DpcppExecutor@{gko::DpcppExecutor}!get\_subgroup\_sizes@{get\_subgroup\_sizes}}
\index{get\_subgroup\_sizes@{get\_subgroup\_sizes}!gko::DpcppExecutor@{gko::DpcppExecutor}}
\doxysubsubsection{\texorpdfstring{get\_subgroup\_sizes()}{get\_subgroup\_sizes()}}
{\footnotesize\ttfamily \label{classgko_1_1DpcppExecutor_a04ffb17d22dd9c0f970f25fb77535f33} 
const std::\+vector$<$ int $>$ \& gko::\+\+Dpcpp\+Executor::\+get\+\_\+subgroup\+\_\+sizes (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Get the available subgroup sizes for this device. 

\begin{DoxyReturn}{Returns}
the available subgroup sizes for this device 
\end{DoxyReturn}
\Hypertarget{classgko_1_1DpcppExecutor_a294787f033b02fd013af087d02a4ae1b}\index{gko::DpcppExecutor@{gko::DpcppExecutor}!run@{run}}
\index{run@{run}!gko::DpcppExecutor@{gko::DpcppExecutor}}
\doxysubsubsection{\texorpdfstring{run()}{run()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}}
{\footnotesize\ttfamily \label{classgko_1_1DpcppExecutor_a294787f033b02fd013af087d02a4ae1b} 
template$<$typename Closure\+Omp, typename Closure\+Cuda, typename Closure\+Hip, typename Closure\+Dpcpp$>$ \\
void \doxymbox{\hyperlink{classgko_1_1Executor_a1de8e2668b76e66690acf5eef9e8324d}{gko::\+\+Executor::\+run}} (\begin{DoxyParamCaption}\item[{const Closure\+Omp \&}]{op\+\_\+omp}{, }\item[{const Closure\+Cuda \&}]{op\+\_\+cuda}{, }\item[{const Closure\+Hip \&}]{op\+\_\+hip}{, }\item[{const Closure\+Dpcpp \&}]{op\+\_\+dpcpp}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Runs one of the passed in functors, depending on the \doxylink{classgko_1_1Executor}{Executor} type. 


\begin{DoxyTemplParams}{Template Parameters}
{\em Closure\+Omp} & type of op\+\_\+omp \\
\hline
{\em Closure\+Cuda} & type of op\+\_\+cuda \\
\hline
{\em Closure\+Hip} & type of op\+\_\+hip \\
\hline
{\em Closure\+Dpcpp} & type of op\+\_\+dpcpp\\
\hline
\end{DoxyTemplParams}

\begin{DoxyParams}{Parameters}
{\em op\+\_\+omp} & functor to run in case of a \doxylink{classgko_1_1OmpExecutor}{Omp\+Executor} or \doxylink{classgko_1_1ReferenceExecutor}{Reference\+Executor} \\
\hline
{\em op\+\_\+cuda} & functor to run in case of a \doxylink{classgko_1_1CudaExecutor}{Cuda\+Executor} \\
\hline
{\em op\+\_\+hip} & functor to run in case of a \doxylink{classgko_1_1HipExecutor}{Hip\+Executor} \\
\hline
{\em op\+\_\+dpcpp} & functor to run in case of a \doxylink{classgko_1_1DpcppExecutor}{Dpcpp\+Executor} \\
\hline
\end{DoxyParams}
\Hypertarget{classgko_1_1DpcppExecutor_a4fdbf8100b039d3858634bf9c502f5d7}\index{gko::DpcppExecutor@{gko::DpcppExecutor}!run@{run}}
\index{run@{run}!gko::DpcppExecutor@{gko::DpcppExecutor}}
\doxysubsubsection{\texorpdfstring{run()}{run()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}}
{\footnotesize\ttfamily \label{classgko_1_1DpcppExecutor_a4fdbf8100b039d3858634bf9c502f5d7} 
virtual void \doxymbox{\hyperlink{classgko_1_1Executor_a1de8e2668b76e66690acf5eef9e8324d}{gko::\+\+Executor::\+run}} (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1Operation}{Operation}} \&}]{op}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}



Runs the specified \doxylink{classgko_1_1Operation}{Operation} using this \doxylink{classgko_1_1Executor}{Executor}. 


\begin{DoxyParams}{Parameters}
{\em op} & the operation to run \\
\hline
\end{DoxyParams}


Implements \doxymbox{\hyperlink{classgko_1_1Executor_a1de8e2668b76e66690acf5eef9e8324d}{gko::\+\+Executor}}.

\Hypertarget{classgko_1_1DpcppExecutor_abe906f109824da54447e504ff88aa97f}\index{gko::DpcppExecutor@{gko::DpcppExecutor}!run@{run}}
\index{run@{run}!gko::DpcppExecutor@{gko::DpcppExecutor}}
\doxysubsubsection{\texorpdfstring{run()}{run()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}}
{\footnotesize\ttfamily \label{classgko_1_1DpcppExecutor_abe906f109824da54447e504ff88aa97f} 
template$<$typename Closure\+Reference, typename Closure\+Omp, typename Closure\+Cuda, typename Closure\+Hip, typename Closure\+Dpcpp$>$ \\
void \doxymbox{\hyperlink{classgko_1_1Executor_a1de8e2668b76e66690acf5eef9e8324d}{gko::\+\+Executor::\+run}} (\begin{DoxyParamCaption}\item[{std::\+string}]{name}{, }\item[{const Closure\+Reference \&}]{op\+\_\+ref}{, }\item[{const Closure\+Omp \&}]{op\+\_\+omp}{, }\item[{const Closure\+Cuda \&}]{op\+\_\+cuda}{, }\item[{const Closure\+Hip \&}]{op\+\_\+hip}{, }\item[{const Closure\+Dpcpp \&}]{op\+\_\+dpcpp}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Runs one of the passed in functors, depending on the \doxylink{classgko_1_1Executor}{Executor} type. 


\begin{DoxyTemplParams}{Template Parameters}
{\em Closure\+Reference} & type of op\+\_\+ref \\
\hline
{\em Closure\+Omp} & type of op\+\_\+omp \\
\hline
{\em Closure\+Cuda} & type of op\+\_\+cuda \\
\hline
{\em Closure\+Hip} & type of op\+\_\+hip \\
\hline
{\em Closure\+Dpcpp} & type of op\+\_\+dpcpp\\
\hline
\end{DoxyTemplParams}

\begin{DoxyParams}{Parameters}
{\em name} & the name of the operation \\
\hline
{\em op\+\_\+ref} & functor to run in case of a \doxylink{classgko_1_1ReferenceExecutor}{Reference\+Executor} \\
\hline
{\em op\+\_\+omp} & functor to run in case of a \doxylink{classgko_1_1OmpExecutor}{Omp\+Executor} \\
\hline
{\em op\+\_\+cuda} & functor to run in case of a \doxylink{classgko_1_1CudaExecutor}{Cuda\+Executor} \\
\hline
{\em op\+\_\+hip} & functor to run in case of a \doxylink{classgko_1_1HipExecutor}{Hip\+Executor} \\
\hline
{\em op\+\_\+dpcpp} & functor to run in case of a \doxylink{classgko_1_1DpcppExecutor}{Dpcpp\+Executor} \\
\hline
\end{DoxyParams}
\Hypertarget{classgko_1_1DpcppExecutor_a6b2a82c46748ddbf097fa2da3ec64d90}\index{gko::DpcppExecutor@{gko::DpcppExecutor}!synchronize@{synchronize}}
\index{synchronize@{synchronize}!gko::DpcppExecutor@{gko::DpcppExecutor}}
\doxysubsubsection{\texorpdfstring{synchronize()}{synchronize()}}
{\footnotesize\ttfamily \label{classgko_1_1DpcppExecutor_a6b2a82c46748ddbf097fa2da3ec64d90} 
void gko::\+\+Dpcpp\+Executor::\+synchronize (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



Synchronize the operations launched on the executor with its master. 



Implements \doxymbox{\hyperlink{classgko_1_1Executor_a24eeee7648c0f0fd07c9866d07154875}{gko::\+\+Executor}}.



References \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_a6b2a82c46748ddbf097fa2da3ec64d90}{synchronize()}}.



Referenced by \doxymbox{\hyperlink{classgko_1_1DpcppExecutor_a6b2a82c46748ddbf097fa2da3ec64d90}{synchronize()}}.



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