\doxysection{gko::\+experimental::\+mpi::\+Collective\+Communicator Class Reference}
\hypertarget{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator}{}\label{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator}\index{gko::experimental::mpi::CollectiveCommunicator@{gko::experimental::mpi::CollectiveCommunicator}}


Interface for a collective communicator.  




{\ttfamily \+\#include $<$ginkgo/\+core/\+distributed/\+collective\+\_\+communicator.\+hpp$>$}



Inheritance diagram for gko::\+experimental::\+mpi::\+Collective\+Communicator:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator__inherit__graph}
\end{center}
\end{figure}
\doxysubsubsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
using \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a4eb0fac1710fca957997116855df756e}{index\+\_\+map\+\_\+ptr}}
\begin{DoxyCompactList}\small\item\em All allowed index\+\_\+map types (as const \texorpdfstring{$\ast$}{*}). \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_aaf9ed066272d6065dff755ae2c772427}\label{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_aaf9ed066272d6065dff755ae2c772427} 
{\bfseries Collective\+Communicator} (\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{communicator}} base=MPI\+\_\+\+COMM\+\_\+\+NULL)
\item 
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_af4174d9706f3dee8a06734a4f33c9b12}\label{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_af4174d9706f3dee8a06734a4f33c9b12} 
const \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{communicator}} \& {\bfseries get\+\_\+base\+\_\+communicator} () const
\item 
{\footnotesize template$<$typename Send\+Type, typename Recv\+Type$>$ }\\\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1request}{request}} \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a94f644ab6d92ef607f82de7092a56056}{i\+\_\+all\+\_\+to\+\_\+all\+\_\+v}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, const Send\+Type \texorpdfstring{$\ast$}{*}send\+\_\+buffer, Recv\+Type \texorpdfstring{$\ast$}{*}recv\+\_\+buffer) const
\begin{DoxyCompactList}\small\item\em Non-\/blocking all-\/to-\/all communication. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1request}{request}} \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a8be792dac2b7d4df3f1524bbf0b5e625}{i\+\_\+all\+\_\+to\+\_\+all\+\_\+v}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, const void \texorpdfstring{$\ast$}{*}send\+\_\+buffer, MPI\+\_\+\+Datatype send\+\_\+type, void \texorpdfstring{$\ast$}{*}recv\+\_\+buffer, MPI\+\_\+\+Datatype recv\+\_\+type) const
\item 
virtual std::\+unique\+\_\+ptr$<$ Collective\+Communicator $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a9a457e816f13e1c1f26c45123a97f0c6}{create\+\_\+with\+\_\+same\+\_\+type}} (\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{communicator}} base, \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a4eb0fac1710fca957997116855df756e}{index\+\_\+map\+\_\+ptr}} imap) const =0
\begin{DoxyCompactList}\small\item\em Creates a new \doxylink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator}{Collective\+Communicator} with the same dynamic type. \end{DoxyCompactList}\item 
virtual std::\+unique\+\_\+ptr$<$ Collective\+Communicator $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a721c058409fffd021cd31aab1ed9279b}{create\+\_\+inverse}} () const =0
\begin{DoxyCompactList}\small\item\em Creates a \doxylink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator}{Collective\+Communicator} with the inverse communication pattern than this object. \end{DoxyCompactList}\item 
virtual \doxymbox{\hyperlink{namespacegko_1_1experimental_1_1mpi_a13b7760affb031fee59d385754eaaffb}{comm\+\_\+index\+\_\+type}} \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a77b426c85c3cdada3cd3936c7e5e1e19}{get\+\_\+recv\+\_\+size}} () const =0
\begin{DoxyCompactList}\small\item\em Get the number of elements received by this process within this communication pattern. \end{DoxyCompactList}\item 
virtual \doxymbox{\hyperlink{namespacegko_1_1experimental_1_1mpi_a13b7760affb031fee59d385754eaaffb}{comm\+\_\+index\+\_\+type}} \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_ad96f20bbe51b403a08819f27d3be53bf}{get\+\_\+send\+\_\+size}} () const =0
\begin{DoxyCompactList}\small\item\em Get the number of elements sent by this process within this communication pattern. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Interface for a collective communicator. 

A collective communicator only provides routines for collective communications. At the moment this is restricted to the variable all-\/to-\/all. 

\label{doc-typedef-members}
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_doc-typedef-members}
\doxysubsection{Member Typedef Documentation}
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a4eb0fac1710fca957997116855df756e}\index{gko::experimental::mpi::CollectiveCommunicator@{gko::experimental::mpi::CollectiveCommunicator}!index\_map\_ptr@{index\_map\_ptr}}
\index{index\_map\_ptr@{index\_map\_ptr}!gko::experimental::mpi::CollectiveCommunicator@{gko::experimental::mpi::CollectiveCommunicator}}
\doxysubsubsection{\texorpdfstring{index\_map\_ptr}{index\_map\_ptr}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a4eb0fac1710fca957997116855df756e} 
using \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a4eb0fac1710fca957997116855df756e}{gko::\+experimental::\+mpi::\+\+Collective\+Communicator::\+index\+\_\+map\+\_\+ptr}}}

{\bfseries Initial value:\+}
\begin{DoxyCode}{0}
\DoxyCodeLine{}
\DoxyCodeLine{std::variant<const\ distributed::index\_map<int32,\ int32>*,}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1index__map}{distributed::index\_map<int32,\ int64>}}*,}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1index__map}{distributed::index\_map<int64,\ int64>}}*>}

\end{DoxyCode}


All allowed index\+\_\+map types (as const \texorpdfstring{$\ast$}{*}). 



\label{doc-func-members}
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_doc-func-members}
\doxysubsection{Member Function Documentation}
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a721c058409fffd021cd31aab1ed9279b}\index{gko::experimental::mpi::CollectiveCommunicator@{gko::experimental::mpi::CollectiveCommunicator}!create\_inverse@{create\_inverse}}
\index{create\_inverse@{create\_inverse}!gko::experimental::mpi::CollectiveCommunicator@{gko::experimental::mpi::CollectiveCommunicator}}
\doxysubsubsection{\texorpdfstring{create\_inverse()}{create\_inverse()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a721c058409fffd021cd31aab1ed9279b} 
virtual std::\+unique\+\_\+ptr$<$ Collective\+Communicator $>$ gko::\+experimental::\+mpi::\+\+Collective\+Communicator::\+create\+\_\+inverse (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [nodiscard]}, {\ttfamily [pure virtual]}}



Creates a \doxylink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator}{Collective\+Communicator} with the inverse communication pattern than this object. 

\begin{DoxyReturn}{Returns}
a \doxylink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator}{Collective\+Communicator} with the inverse communication pattern. 
\end{DoxyReturn}


Implemented in \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1DenseCommunicator_a2b218369edacc186a429e37e7cbc548d}{gko::\+experimental::\+mpi::\+\+Dense\+Communicator}}, and \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_a1eb56683a480814379ee120f844ddacb}{gko::\+experimental::\+mpi::\+\+Neighborhood\+Communicator}}.

\Hypertarget{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a9a457e816f13e1c1f26c45123a97f0c6}\index{gko::experimental::mpi::CollectiveCommunicator@{gko::experimental::mpi::CollectiveCommunicator}!create\_with\_same\_type@{create\_with\_same\_type}}
\index{create\_with\_same\_type@{create\_with\_same\_type}!gko::experimental::mpi::CollectiveCommunicator@{gko::experimental::mpi::CollectiveCommunicator}}
\doxysubsubsection{\texorpdfstring{create\_with\_same\_type()}{create\_with\_same\_type()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a9a457e816f13e1c1f26c45123a97f0c6} 
virtual std::\+unique\+\_\+ptr$<$ Collective\+Communicator $>$ gko::\+experimental::\+mpi::\+\+Collective\+Communicator::\+create\+\_\+with\+\_\+same\+\_\+type (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{communicator}}}]{base}{, }\item[{\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a4eb0fac1710fca957997116855df756e}{index\+\_\+map\+\_\+ptr}}}]{imap}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [nodiscard]}, {\ttfamily [pure virtual]}}



Creates a new \doxylink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator}{Collective\+Communicator} with the same dynamic type. 


\begin{DoxyParams}{Parameters}
{\em base} & The base communicator \\
\hline
{\em imap} & The index\+\_\+map that defines the communication pattern\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a \doxylink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator}{Collective\+Communicator} with the same dynamic type 
\end{DoxyReturn}


Implemented in \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1DenseCommunicator_afb335f202995227958acb0c7ecc09dc7}{gko::\+experimental::\+mpi::\+\+Dense\+Communicator}}, and \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_a9e913ad4689b21012cafadf34285d8f8}{gko::\+experimental::\+mpi::\+\+Neighborhood\+Communicator}}.

\Hypertarget{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a77b426c85c3cdada3cd3936c7e5e1e19}\index{gko::experimental::mpi::CollectiveCommunicator@{gko::experimental::mpi::CollectiveCommunicator}!get\_recv\_size@{get\_recv\_size}}
\index{get\_recv\_size@{get\_recv\_size}!gko::experimental::mpi::CollectiveCommunicator@{gko::experimental::mpi::CollectiveCommunicator}}
\doxysubsubsection{\texorpdfstring{get\_recv\_size()}{get\_recv\_size()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a77b426c85c3cdada3cd3936c7e5e1e19} 
virtual \doxymbox{\hyperlink{namespacegko_1_1experimental_1_1mpi_a13b7760affb031fee59d385754eaaffb}{comm\+\_\+index\+\_\+type}} gko::\+experimental::\+mpi::\+\+Collective\+Communicator::\+get\+\_\+recv\+\_\+size (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [nodiscard]}, {\ttfamily [pure virtual]}}



Get the number of elements received by this process within this communication pattern. 

\begin{DoxyReturn}{Returns}
number of received elements. 
\end{DoxyReturn}


Implemented in \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1DenseCommunicator_a42ea7976b0f0294326e452cc39fecb63}{gko::\+experimental::\+mpi::\+\+Dense\+Communicator}}, and \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_a885ed4e93933ee39d85537ab202dba76}{gko::\+experimental::\+mpi::\+\+Neighborhood\+Communicator}}.

\Hypertarget{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_ad96f20bbe51b403a08819f27d3be53bf}\index{gko::experimental::mpi::CollectiveCommunicator@{gko::experimental::mpi::CollectiveCommunicator}!get\_send\_size@{get\_send\_size}}
\index{get\_send\_size@{get\_send\_size}!gko::experimental::mpi::CollectiveCommunicator@{gko::experimental::mpi::CollectiveCommunicator}}
\doxysubsubsection{\texorpdfstring{get\_send\_size()}{get\_send\_size()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_ad96f20bbe51b403a08819f27d3be53bf} 
virtual \doxymbox{\hyperlink{namespacegko_1_1experimental_1_1mpi_a13b7760affb031fee59d385754eaaffb}{comm\+\_\+index\+\_\+type}} gko::\+experimental::\+mpi::\+\+Collective\+Communicator::\+get\+\_\+send\+\_\+size (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [nodiscard]}, {\ttfamily [pure virtual]}}



Get the number of elements sent by this process within this communication pattern. 

\begin{DoxyReturn}{Returns}
number of sent elements. 
\end{DoxyReturn}


Implemented in \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1DenseCommunicator_a69f783c216c743560b9b92c143770648}{gko::\+experimental::\+mpi::\+\+Dense\+Communicator}}, and \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_ad032c76b8a0aecc5f0113efab3326a39}{gko::\+experimental::\+mpi::\+\+Neighborhood\+Communicator}}.

\Hypertarget{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a94f644ab6d92ef607f82de7092a56056}\index{gko::experimental::mpi::CollectiveCommunicator@{gko::experimental::mpi::CollectiveCommunicator}!i\_all\_to\_all\_v@{i\_all\_to\_all\_v}}
\index{i\_all\_to\_all\_v@{i\_all\_to\_all\_v}!gko::experimental::mpi::CollectiveCommunicator@{gko::experimental::mpi::CollectiveCommunicator}}
\doxysubsubsection{\texorpdfstring{i\_all\_to\_all\_v()}{i\_all\_to\_all\_v()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a94f644ab6d92ef607f82de7092a56056} 
template$<$typename Send\+Type, typename Recv\+Type$>$ \\
\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1request}{request}} gko::\+experimental::\+mpi::\+\+Collective\+Communicator::\+i\+\_\+all\+\_\+to\+\_\+all\+\_\+v (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{const Send\+Type \texorpdfstring{$\ast$}{*}}]{send\+\_\+buffer}{, }\item[{Recv\+Type \texorpdfstring{$\ast$}{*}}]{recv\+\_\+buffer}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [nodiscard]}}



Non-\/blocking all-\/to-\/all communication. 

The send\+\_\+buffer must have allocated at least get\+\_\+send\+\_\+size number of elements, and the recv\+\_\+buffer must have allocated at least get\+\_\+recv\+\_\+size number of elements.


\begin{DoxyTemplParams}{Template Parameters}
{\em Send\+Type} & the type of the elements to send \\
\hline
{\em Recv\+Type} & the type of the elements to receive\\
\hline
\end{DoxyTemplParams}

\begin{DoxyParams}{Parameters}
{\em exec} & the executor for the communication \\
\hline
{\em send\+\_\+buffer} & the send buffer \\
\hline
{\em recv\+\_\+buffer} & the receive buffer\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a request handle 
\end{DoxyReturn}


References \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a94f644ab6d92ef607f82de7092a56056}{i\+\_\+all\+\_\+to\+\_\+all\+\_\+v()}}.



Referenced by \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a94f644ab6d92ef607f82de7092a56056}{i\+\_\+all\+\_\+to\+\_\+all\+\_\+v()}}.

\Hypertarget{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a8be792dac2b7d4df3f1524bbf0b5e625}\index{gko::experimental::mpi::CollectiveCommunicator@{gko::experimental::mpi::CollectiveCommunicator}!i\_all\_to\_all\_v@{i\_all\_to\_all\_v}}
\index{i\_all\_to\_all\_v@{i\_all\_to\_all\_v}!gko::experimental::mpi::CollectiveCommunicator@{gko::experimental::mpi::CollectiveCommunicator}}
\doxysubsubsection{\texorpdfstring{i\_all\_to\_all\_v()}{i\_all\_to\_all\_v()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a8be792dac2b7d4df3f1524bbf0b5e625} 
\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1request}{request}} gko::\+experimental::\+mpi::\+\+Collective\+Communicator::\+i\+\_\+all\+\_\+to\+\_\+all\+\_\+v (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{const void \texorpdfstring{$\ast$}{*}}]{send\+\_\+buffer}{, }\item[{MPI\+\_\+\+Datatype}]{send\+\_\+type}{, }\item[{void \texorpdfstring{$\ast$}{*}}]{recv\+\_\+buffer}{, }\item[{MPI\+\_\+\+Datatype}]{recv\+\_\+type}{}\end{DoxyParamCaption}) const}







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