\doxysection{gko::\+experimental::\+mpi::\+Neighborhood\+Communicator Class Reference}
\hypertarget{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator}{}\label{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator}\index{gko::experimental::mpi::NeighborhoodCommunicator@{gko::experimental::mpi::NeighborhoodCommunicator}}


A \doxylink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator}{Collective\+Communicator} that uses a neighborhood topology.  




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



Inheritance diagram for gko::\+experimental::\+mpi::\+Neighborhood\+Communicator:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=242pt]{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator__inherit__graph}
\end{center}
\end{figure}


Collaboration diagram for gko::\+experimental::\+mpi::\+Neighborhood\+Communicator:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=242pt]{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator__coll__graph}
\end{center}
\end{figure}
\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_aaa76b12ceae826610becab5a9610cb06}\label{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_aaa76b12ceae826610becab5a9610cb06} 
{\bfseries Neighborhood\+Communicator} (const Neighborhood\+Communicator \&other)=default
\item 
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_aec2f49e519abac607eb071041f7f495a}\label{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_aec2f49e519abac607eb071041f7f495a} 
{\bfseries Neighborhood\+Communicator} (Neighborhood\+Communicator \&\&other)
\item 
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_a857cdcb9ac16abfc3af5c7a3aacd9c13}\label{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_a857cdcb9ac16abfc3af5c7a3aacd9c13} 
Neighborhood\+Communicator \& {\bfseries operator=} (const Neighborhood\+Communicator \&other)=default
\item 
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_a5151d7640d2c912ab09d0ca8f181cfa1}\label{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_a5151d7640d2c912ab09d0ca8f181cfa1} 
Neighborhood\+Communicator \& {\bfseries operator=} (Neighborhood\+Communicator \&\&other)
\item 
\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_abceacf78b77f063265ce1ca6f4c87d70}{Neighborhood\+Communicator}} (\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{communicator}} base)
\begin{DoxyCompactList}\small\item\em Default constructor with empty communication pattern. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename Local\+Index\+Type, typename Global\+Index\+Type$>$ }\\\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_ae826c5c548fb5d1fcb19bf6b77b5ba58}{Neighborhood\+Communicator}} (\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{communicator}} base, const \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1index__map}{distributed::\+index\+\_\+map}}$<$ Local\+Index\+Type, Global\+Index\+Type $>$ \&imap)
\begin{DoxyCompactList}\small\item\em Create a \doxylink{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator}{Neighborhood\+Communicator} from an index map. \end{DoxyCompactList}\item 
std::\+unique\+\_\+ptr$<$ Collective\+Communicator $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_a9e913ad4689b21012cafadf34285d8f8}{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 override
\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 
std::\+unique\+\_\+ptr$<$ Collective\+Communicator $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_a1eb56683a480814379ee120f844ddacb}{create\+\_\+inverse}} () const override
\begin{DoxyCompactList}\small\item\em Creates the inverse \doxylink{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator}{Neighborhood\+Communicator} by switching sources and destinations. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{namespacegko_1_1experimental_1_1mpi_a13b7760affb031fee59d385754eaaffb}{comm\+\_\+index\+\_\+type}} \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_a885ed4e93933ee39d85537ab202dba76}{get\+\_\+recv\+\_\+size}} () const override
\begin{DoxyCompactList}\small\item\em Get the number of elements received by this process within this communication pattern. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{namespacegko_1_1experimental_1_1mpi_a13b7760affb031fee59d385754eaaffb}{comm\+\_\+index\+\_\+type}} \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_ad032c76b8a0aecc5f0113efab3326a39}{get\+\_\+send\+\_\+size}} () const override
\begin{DoxyCompactList}\small\item\em Get the number of elements sent by this process within this communication pattern. \end{DoxyCompactList}\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_1NeighborhoodCommunicator_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_1NeighborhoodCommunicator_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
\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator}{gko::\+experimental::\+mpi::\+\+Collective\+Communicator}}}
\begin{DoxyCompactItemize}
\item 
{\bfseries Collective\+Communicator} (\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{communicator}} base=MPI\+\_\+\+COMM\+\_\+\+NULL)
\item 
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
\end{DoxyCompactItemize}
\doxysubsubsection*{Friends}
\begin{DoxyCompactItemize}
\item 
bool \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_a2c534e7fb686124160b394575ec4c371}{operator==}} (const Neighborhood\+Communicator \&a, const Neighborhood\+Communicator \&b)
\begin{DoxyCompactList}\small\item\em Compares two communicators for equality locally. \end{DoxyCompactList}\item 
bool \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_a2c33ce8d89ada56083ca90749b27ca3b}{operator!=}} (const Neighborhood\+Communicator \&a, const Neighborhood\+Communicator \&b)
\begin{DoxyCompactList}\small\item\em Compares two communicators for inequality. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Additional Inherited Members}
\doxysubsection*{Public Types inherited from \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator}{gko::\+experimental::\+mpi::\+\+Collective\+Communicator}}}
\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}


\doxysubsection{Detailed Description}
A \doxylink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator}{Collective\+Communicator} that uses a neighborhood topology. 

The neighborhood communicator is defined by a list of neighbors this rank sends data to and a list of neighbors this rank receives data from. No communication with any ranks that is not in one of those lists will take place. 

\label{doc-constructors}
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_doc-constructors}
\doxysubsection{Constructor \& Destructor Documentation}
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_abceacf78b77f063265ce1ca6f4c87d70}\index{gko::experimental::mpi::NeighborhoodCommunicator@{gko::experimental::mpi::NeighborhoodCommunicator}!NeighborhoodCommunicator@{NeighborhoodCommunicator}}
\index{NeighborhoodCommunicator@{NeighborhoodCommunicator}!gko::experimental::mpi::NeighborhoodCommunicator@{gko::experimental::mpi::NeighborhoodCommunicator}}
\doxysubsubsection{\texorpdfstring{NeighborhoodCommunicator()}{NeighborhoodCommunicator()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_abceacf78b77f063265ce1ca6f4c87d70} 
gko::\+experimental::\+mpi::\+\+Neighborhood\+Communicator::\+\+Neighborhood\+Communicator (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{communicator}}}]{base}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [explicit]}}



Default constructor with empty communication pattern. 


\begin{DoxyParams}{Parameters}
{\em base} & the base communicator \\
\hline
\end{DoxyParams}
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_ae826c5c548fb5d1fcb19bf6b77b5ba58}\index{gko::experimental::mpi::NeighborhoodCommunicator@{gko::experimental::mpi::NeighborhoodCommunicator}!NeighborhoodCommunicator@{NeighborhoodCommunicator}}
\index{NeighborhoodCommunicator@{NeighborhoodCommunicator}!gko::experimental::mpi::NeighborhoodCommunicator@{gko::experimental::mpi::NeighborhoodCommunicator}}
\doxysubsubsection{\texorpdfstring{NeighborhoodCommunicator()}{NeighborhoodCommunicator()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_ae826c5c548fb5d1fcb19bf6b77b5ba58} 
template$<$typename Local\+Index\+Type, typename Global\+Index\+Type$>$ \\
gko::\+experimental::\+mpi::\+\+Neighborhood\+Communicator::\+\+Neighborhood\+Communicator (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{communicator}}}]{base}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1index__map}{distributed::\+index\+\_\+map}}$<$ Local\+Index\+Type, Global\+Index\+Type $>$ \&}]{imap}{}\end{DoxyParamCaption})}



Create a \doxylink{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator}{Neighborhood\+Communicator} from an index map. 

The receiving neighbors are defined by the remote indices and their owning ranks of the index map. The send neighbors are deduced from that through collective communication.


\begin{DoxyTemplParams}{Template Parameters}
{\em Local\+Index\+Type} & the local index type of the map \\
\hline
{\em Global\+Index\+Type} & the global index type of the map\\
\hline
\end{DoxyTemplParams}

\begin{DoxyParams}{Parameters}
{\em base} & the base communicator \\
\hline
{\em imap} & the index map that defines the communication pattern \\
\hline
\end{DoxyParams}


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



Creates the inverse \doxylink{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator}{Neighborhood\+Communicator} by switching sources and destinations. 

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


Implements \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a721c058409fffd021cd31aab1ed9279b}{gko::\+experimental::\+mpi::\+\+Collective\+Communicator}}.

\Hypertarget{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_a9e913ad4689b21012cafadf34285d8f8}\index{gko::experimental::mpi::NeighborhoodCommunicator@{gko::experimental::mpi::NeighborhoodCommunicator}!create\_with\_same\_type@{create\_with\_same\_type}}
\index{create\_with\_same\_type@{create\_with\_same\_type}!gko::experimental::mpi::NeighborhoodCommunicator@{gko::experimental::mpi::NeighborhoodCommunicator}}
\doxysubsubsection{\texorpdfstring{create\_with\_same\_type()}{create\_with\_same\_type()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_a9e913ad4689b21012cafadf34285d8f8} 
std::\+unique\+\_\+ptr$<$ Collective\+Communicator $>$ gko::\+experimental::\+mpi::\+\+Neighborhood\+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 [override]}, {\ttfamily [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}


Implements \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a9a457e816f13e1c1f26c45123a97f0c6}{gko::\+experimental::\+mpi::\+\+Collective\+Communicator}}.

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



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

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


Implements \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a77b426c85c3cdada3cd3936c7e5e1e19}{gko::\+experimental::\+mpi::\+\+Collective\+Communicator}}.

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



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

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


Implements \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_ad96f20bbe51b403a08819f27d3be53bf}{gko::\+experimental::\+mpi::\+\+Collective\+Communicator}}.

\Hypertarget{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_a94f644ab6d92ef607f82de7092a56056}\index{gko::experimental::mpi::NeighborhoodCommunicator@{gko::experimental::mpi::NeighborhoodCommunicator}!i\_all\_to\_all\_v@{i\_all\_to\_all\_v}}
\index{i\_all\_to\_all\_v@{i\_all\_to\_all\_v}!gko::experimental::mpi::NeighborhoodCommunicator@{gko::experimental::mpi::NeighborhoodCommunicator}}
\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_1NeighborhoodCommunicator_a94f644ab6d92ef607f82de7092a56056} 
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}{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}
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_a8be792dac2b7d4df3f1524bbf0b5e625}\index{gko::experimental::mpi::NeighborhoodCommunicator@{gko::experimental::mpi::NeighborhoodCommunicator}!i\_all\_to\_all\_v@{i\_all\_to\_all\_v}}
\index{i\_all\_to\_all\_v@{i\_all\_to\_all\_v}!gko::experimental::mpi::NeighborhoodCommunicator@{gko::experimental::mpi::NeighborhoodCommunicator}}
\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_1NeighborhoodCommunicator_a8be792dac2b7d4df3f1524bbf0b5e625} 
\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1request}{request}} \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1CollectiveCommunicator_a94f644ab6d92ef607f82de7092a56056}{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}







\label{doc-related-members}
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_doc-related-members}
\doxysubsection{Friends And Related Symbol Documentation}
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_a2c33ce8d89ada56083ca90749b27ca3b}\index{gko::experimental::mpi::NeighborhoodCommunicator@{gko::experimental::mpi::NeighborhoodCommunicator}!operator"!=@{operator"!=}}
\index{operator"!=@{operator"!=}!gko::experimental::mpi::NeighborhoodCommunicator@{gko::experimental::mpi::NeighborhoodCommunicator}}
\doxysubsubsection{\texorpdfstring{operator"!=}{operator!=}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_a2c33ce8d89ada56083ca90749b27ca3b} 
bool operator!= (\begin{DoxyParamCaption}\item[{const Neighborhood\+Communicator \&}]{a}{, }\item[{const Neighborhood\+Communicator \&}]{b}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}}



Compares two communicators for inequality. 

\begin{DoxySeeAlso}{See also}
operator== 
\end{DoxySeeAlso}
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_a2c534e7fb686124160b394575ec4c371}\index{gko::experimental::mpi::NeighborhoodCommunicator@{gko::experimental::mpi::NeighborhoodCommunicator}!operator==@{operator==}}
\index{operator==@{operator==}!gko::experimental::mpi::NeighborhoodCommunicator@{gko::experimental::mpi::NeighborhoodCommunicator}}
\doxysubsubsection{\texorpdfstring{operator==}{operator==}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1NeighborhoodCommunicator_a2c534e7fb686124160b394575ec4c371} 
bool operator== (\begin{DoxyParamCaption}\item[{const Neighborhood\+Communicator \&}]{a}{, }\item[{const Neighborhood\+Communicator \&}]{b}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}}



Compares two communicators for equality locally. 

Equality is defined as having identical or congruent communicators and their communication pattern is equal. No communication is done, i.\+e. there is no reduction over the local equality check results.

\begin{DoxyReturn}{Returns}
true if both communicators are equal. 
\end{DoxyReturn}


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