\doxysection{gko::\+experimental::\+mpi::\+window\texorpdfstring{$<$}{<} Value\+Type \texorpdfstring{$>$}{>} Class Template Reference}
\hypertarget{classgko_1_1experimental_1_1mpi_1_1window}{}\label{classgko_1_1experimental_1_1mpi_1_1window}\index{gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}}


This class wraps the MPI\+\_\+\+Window class with RAII functionality.  




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

\doxysubsubsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_a979711ce7fb3e661658656c49ffc9d31}\label{classgko_1_1experimental_1_1mpi_1_1window_a979711ce7fb3e661658656c49ffc9d31} 
enum class \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a979711ce7fb3e661658656c49ffc9d31}{create\+\_\+type}} \{ {\bfseries allocate} = 1
, {\bfseries create} = 2
, {\bfseries dynamic\+\_\+create} = 3
 \}
\begin{DoxyCompactList}\small\item\em The create type for the window object. \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_a35fce5e05e221ce18372e1f2609f9953}\label{classgko_1_1experimental_1_1mpi_1_1window_a35fce5e05e221ce18372e1f2609f9953} 
enum class \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a35fce5e05e221ce18372e1f2609f9953}{lock\+\_\+type}} \{ {\bfseries shared} = 1
, {\bfseries exclusive} = 2
 \}
\begin{DoxyCompactList}\small\item\em The lock type for passive target synchronization of the windows. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a0d8b46cb4e781ef71bccbbfb4a9407fe}{window}} ()
\begin{DoxyCompactList}\small\item\em The default constructor. \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_a2cda6b61797c629a43fa4bf4c5fe3271}\label{classgko_1_1experimental_1_1mpi_1_1window_a2cda6b61797c629a43fa4bf4c5fe3271} 
{\bfseries window} (const window \&other)=delete
\item 
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_acd02e7a0360367f92eb414633c362cb5}\label{classgko_1_1experimental_1_1mpi_1_1window_acd02e7a0360367f92eb414633c362cb5} 
\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a0d8b46cb4e781ef71bccbbfb4a9407fe}{window}} \& {\bfseries operator=} (const \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a0d8b46cb4e781ef71bccbbfb4a9407fe}{window}} \&other)=delete
\item 
\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_ae4fca6434fa04ac9b8e9071bfc8cfe70}{window}} (window \&\&other)
\begin{DoxyCompactList}\small\item\em The move constructor. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a0d8b46cb4e781ef71bccbbfb4a9407fe}{window}} \& \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a3e1f9e30923a62c66ee08ccee3ebc39d}{operator=}} (\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a0d8b46cb4e781ef71bccbbfb4a9407fe}{window}} \&\&other)
\begin{DoxyCompactList}\small\item\em The move assignment operator. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_aa4604e5b67e90562628e9c3811383195}{window}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, Value\+Type \texorpdfstring{$\ast$}{*}base, int num\+\_\+elems, const \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{communicator}} \&comm, const int disp\+\_\+unit=sizeof(Value\+Type), MPI\+\_\+\+Info input\+\_\+info=MPI\+\_\+\+INFO\+\_\+\+NULL, \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a979711ce7fb3e661658656c49ffc9d31}{create\+\_\+type}} c\+\_\+type=create\+\_\+type::\+create)
\begin{DoxyCompactList}\small\item\em Create a window object with a given data pointer and type. \end{DoxyCompactList}\item 
MPI\+\_\+\+Win \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_aefdede74f361e099145647ac6b8e8de6}{get\+\_\+window}} () const
\begin{DoxyCompactList}\small\item\em Get the underlying window object of MPI\+\_\+\+Win type. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a8a1150c9844fbff78f31ea32af6cf002}{fence}} (int assert=0) const
\begin{DoxyCompactList}\small\item\em The active target synchronization using MPI\+\_\+\+Win\+\_\+fence for the window object. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_acd2dca005043cf3a0ad8088b136eb4d7}{lock}} (int rank, \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a35fce5e05e221ce18372e1f2609f9953}{lock\+\_\+type}} lock\+\_\+t=lock\+\_\+type::\+shared, int assert=0) const
\begin{DoxyCompactList}\small\item\em Create an epoch using MPI\+\_\+\+Win\+\_\+lock for the window object. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a8007809ea63aa789c2e3eae7b512e683}{unlock}} (int rank) const
\begin{DoxyCompactList}\small\item\em Close the epoch using MPI\+\_\+\+Win\+\_\+unlock for the window object. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_ab6fbd4976d277371670122a783bd6fbc}{lock\+\_\+all}} (int assert=0) const
\begin{DoxyCompactList}\small\item\em Create the epoch on all ranks using MPI\+\_\+\+Win\+\_\+lock\+\_\+all for the window object. \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_a8d34b976309b2958d973d1d68acf627d}\label{classgko_1_1experimental_1_1mpi_1_1window_a8d34b976309b2958d973d1d68acf627d} 
void {\bfseries unlock\+\_\+all} () const
\begin{DoxyCompactList}\small\item\em Close the epoch on all ranks using MPI\+\_\+\+Win\+\_\+unlock\+\_\+all for the window object. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a8a7e4f90d1d0c933106ba31a4ddf06a9}{flush}} (int rank) const
\begin{DoxyCompactList}\small\item\em Flush the existing RDMA operations on the target rank for the calling process for the window object. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_ae960cc6dc72e33ec6df62e3901e53d48}{flush\+\_\+local}} (int rank) const
\begin{DoxyCompactList}\small\item\em Flush the existing RDMA operations on the calling rank from the target rank for the window object. \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_afac84b451109b1bfc77456a541bab07a}\label{classgko_1_1experimental_1_1mpi_1_1window_afac84b451109b1bfc77456a541bab07a} 
void {\bfseries flush\+\_\+all} () const
\begin{DoxyCompactList}\small\item\em Flush all the existing RDMA operations for the calling process for the window object. \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_ad6fcfdb4026058ef960b412cb7844016}\label{classgko_1_1experimental_1_1mpi_1_1window_ad6fcfdb4026058ef960b412cb7844016} 
void {\bfseries flush\+\_\+all\+\_\+local} () const
\begin{DoxyCompactList}\small\item\em Flush all the local existing RDMA operations on the calling rank for the window object. \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_a748e6787b1c3071216bb3310a73416d9}\label{classgko_1_1experimental_1_1mpi_1_1window_a748e6787b1c3071216bb3310a73416d9} 
void {\bfseries sync} () const
\begin{DoxyCompactList}\small\item\em Synchronize the public and private buffers for the window object. \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_a1f4a86eb7b1289e7580a92191f4ed2fe}\label{classgko_1_1experimental_1_1mpi_1_1window_a1f4a86eb7b1289e7580a92191f4ed2fe} 
{\bfseries \texorpdfstring{$\sim$}{\string~}window} ()
\begin{DoxyCompactList}\small\item\em The deleter which calls MPI\+\_\+\+Win\+\_\+free when the window leaves its scope. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename Put\+Type$>$ }\\void \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a151c85c9dbd58b15377edcf0702efe5d}{put}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, const Put\+Type \texorpdfstring{$\ast$}{*}origin\+\_\+buffer, const int origin\+\_\+count, const int target\+\_\+rank, const unsigned int target\+\_\+disp, const int target\+\_\+count) const
\begin{DoxyCompactList}\small\item\em Put data into the target window. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename Put\+Type$>$ }\\\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1request}{request}} \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a08ddae163fc1c34b9456bab96a5f1107}{r\+\_\+put}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, const Put\+Type \texorpdfstring{$\ast$}{*}origin\+\_\+buffer, const int origin\+\_\+count, const int target\+\_\+rank, const unsigned int target\+\_\+disp, const int target\+\_\+count) const
\begin{DoxyCompactList}\small\item\em Put data into the target window. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename Put\+Type$>$ }\\void \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_aa8f681ccf38e74fad75017aa0bf50f81}{accumulate}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, const Put\+Type \texorpdfstring{$\ast$}{*}origin\+\_\+buffer, const int origin\+\_\+count, const int target\+\_\+rank, const unsigned int target\+\_\+disp, const int target\+\_\+count, MPI\+\_\+\+Op operation) const
\begin{DoxyCompactList}\small\item\em Accumulate data into the target window. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename Put\+Type$>$ }\\\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1request}{request}} \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a4fc76b03f10fe40c84c4b5d123f453b9}{r\+\_\+accumulate}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, const Put\+Type \texorpdfstring{$\ast$}{*}origin\+\_\+buffer, const int origin\+\_\+count, const int target\+\_\+rank, const unsigned int target\+\_\+disp, const int target\+\_\+count, MPI\+\_\+\+Op operation) const
\begin{DoxyCompactList}\small\item\em (Non-\/blocking) Accumulate data into the target window. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename Get\+Type$>$ }\\void \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a020a03ef7d6329e75732fe5bfa6f9d75}{get}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, Get\+Type \texorpdfstring{$\ast$}{*}origin\+\_\+buffer, const int origin\+\_\+count, const int target\+\_\+rank, const unsigned int target\+\_\+disp, const int target\+\_\+count) const
\begin{DoxyCompactList}\small\item\em Get data from the target window. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename Get\+Type$>$ }\\\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1request}{request}} \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_af611adbe29e925ef5448ead49bde179e}{r\+\_\+get}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, Get\+Type \texorpdfstring{$\ast$}{*}origin\+\_\+buffer, const int origin\+\_\+count, const int target\+\_\+rank, const unsigned int target\+\_\+disp, const int target\+\_\+count) const
\begin{DoxyCompactList}\small\item\em Get data (with handle) from the target window. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename Get\+Type$>$ }\\void \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a0f103e5469537256f4dac5bf0e9c18ac}{get\+\_\+accumulate}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, Get\+Type \texorpdfstring{$\ast$}{*}origin\+\_\+buffer, const int origin\+\_\+count, Get\+Type \texorpdfstring{$\ast$}{*}result\+\_\+buffer, const int result\+\_\+count, const int target\+\_\+rank, const unsigned int target\+\_\+disp, const int target\+\_\+count, MPI\+\_\+\+Op operation) const
\begin{DoxyCompactList}\small\item\em Get Accumulate data from the target window. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename Get\+Type$>$ }\\\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1request}{request}} \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a69842676f3a38849160857138ce0b745}{r\+\_\+get\+\_\+accumulate}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, Get\+Type \texorpdfstring{$\ast$}{*}origin\+\_\+buffer, const int origin\+\_\+count, Get\+Type \texorpdfstring{$\ast$}{*}result\+\_\+buffer, const int result\+\_\+count, const int target\+\_\+rank, const unsigned int target\+\_\+disp, const int target\+\_\+count, MPI\+\_\+\+Op operation) const
\begin{DoxyCompactList}\small\item\em (Non-\/blocking) Get Accumulate data (with handle) from the target window. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename Get\+Type$>$ }\\void \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a6a63489f00fe21d3007a49b32f0618dd}{fetch\+\_\+and\+\_\+op}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, Get\+Type \texorpdfstring{$\ast$}{*}origin\+\_\+buffer, Get\+Type \texorpdfstring{$\ast$}{*}result\+\_\+buffer, const int target\+\_\+rank, const unsigned int target\+\_\+disp, MPI\+\_\+\+Op operation) const
\begin{DoxyCompactList}\small\item\em Fetch and operate on data from the target window (An optimized version of Get\+\_\+accumulate). \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
\subsubsection*{template$<$typename Value\+Type$>$\newline
class gko::\+experimental::\+mpi::\+window$<$ Value\+Type $>$}
This class wraps the MPI\+\_\+\+Window class with RAII functionality. 

Different create and lock type methods are setup with enums.

MPI\+\_\+\+Window is primarily used for one sided communication and this class provides functionalities to fence, lock, unlock and flush the communication buffers. 

\label{doc-constructors}
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_doc-constructors}
\doxysubsection{Constructor \& Destructor Documentation}
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_a0d8b46cb4e781ef71bccbbfb4a9407fe}\index{gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}!window@{window}}
\index{window@{window}!gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{window()}{window()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1window_a0d8b46cb4e781ef71bccbbfb4a9407fe} 
template$<$typename Value\+Type$>$ \\
\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window}{gko::\+experimental::\+mpi::\+window}}$<$ Value\+Type $>$::\+window (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



The default constructor. 

It creates a null window of MPI\+\_\+\+WIN\+\_\+\+NULL type. 

Referenced by \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a3e1f9e30923a62c66ee08ccee3ebc39d}{operator=()}}, and \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_ae4fca6434fa04ac9b8e9071bfc8cfe70}{window()}}.

\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_ae4fca6434fa04ac9b8e9071bfc8cfe70}\index{gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}!window@{window}}
\index{window@{window}!gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{window()}{window()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1window_ae4fca6434fa04ac9b8e9071bfc8cfe70} 
template$<$typename Value\+Type$>$ \\
\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window}{gko::\+experimental::\+mpi::\+window}}$<$ Value\+Type $>$::\+window (\begin{DoxyParamCaption}\item[{window$<$ Value\+Type $>$ \&\&}]{other}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



The move constructor. 

Move the other object and replace it with MPI\+\_\+\+WIN\+\_\+\+NULL


\begin{DoxyParams}{Parameters}
{\em other} & the window object to be moved. \\
\hline
\end{DoxyParams}


References \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a0d8b46cb4e781ef71bccbbfb4a9407fe}{window()}}.

\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_aa4604e5b67e90562628e9c3811383195}\index{gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}!window@{window}}
\index{window@{window}!gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{window()}{window()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1window_aa4604e5b67e90562628e9c3811383195} 
template$<$typename Value\+Type$>$ \\
\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window}{gko::\+experimental::\+mpi::\+window}}$<$ Value\+Type $>$::\+window (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{Value\+Type \texorpdfstring{$\ast$}{*}}]{base}{, }\item[{int}]{num\+\_\+elems}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{communicator}} \&}]{comm}{, }\item[{const int}]{disp\+\_\+unit}{ = {\ttfamily sizeof(ValueType)}, }\item[{MPI\+\_\+\+Info}]{input\+\_\+info}{ = {\ttfamily MPI\+\_\+INFO\+\_\+NULL}, }\item[{\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a979711ce7fb3e661658656c49ffc9d31}{create\+\_\+type}}}]{c\+\_\+type}{ = {\ttfamily create\+\_\+type:\+:\+create}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Create a window object with a given data pointer and type. 

A collective operation.


\begin{DoxyParams}{Parameters}
{\em exec} & The executor, on which the base pointer is located. \\
\hline
{\em base} & the base pointer for the window object. \\
\hline
{\em num\+\_\+elems} & the num\+\_\+elems of type Value\+Type the window points to. \\
\hline
{\em comm} & the communicator whose ranks will have windows created. \\
\hline
{\em disp\+\_\+unit} & the displacement from base for the window object. \\
\hline
{\em input\+\_\+info} & the MPI\+\_\+\+Info object used to set certain properties. \\
\hline
{\em c\+\_\+type} & the type of creation method to use to create the window. \\
\hline
\end{DoxyParams}


References \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator_aa0a3dec1701cb81754c56e940185f98d}{gko::\+experimental::\+mpi::\+communicator::\+get()}}.



\label{doc-func-members}
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_doc-func-members}
\doxysubsection{Member Function Documentation}
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_aa8f681ccf38e74fad75017aa0bf50f81}\index{gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}!accumulate@{accumulate}}
\index{accumulate@{accumulate}!gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{accumulate()}{accumulate()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1window_aa8f681ccf38e74fad75017aa0bf50f81} 
template$<$typename Value\+Type$>$ \\
template$<$typename Put\+Type$>$ \\
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window}{gko::\+experimental::\+mpi::\+window}}$<$ Value\+Type $>$::\+accumulate (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{const Put\+Type \texorpdfstring{$\ast$}{*}}]{origin\+\_\+buffer}{, }\item[{const int}]{origin\+\_\+count}{, }\item[{const int}]{target\+\_\+rank}{, }\item[{const unsigned int}]{target\+\_\+disp}{, }\item[{const int}]{target\+\_\+count}{, }\item[{MPI\+\_\+\+Op}]{operation}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Accumulate data into the target window. 


\begin{DoxyParams}{Parameters}
{\em exec} & The executor, on which the message buffer is located. \\
\hline
{\em origin\+\_\+buffer} & the buffer to send \\
\hline
{\em origin\+\_\+count} & the number of elements to put \\
\hline
{\em target\+\_\+rank} & the rank to put the data to \\
\hline
{\em target\+\_\+disp} & the displacement at the target window \\
\hline
{\em target\+\_\+count} & the request handle for the send call \\
\hline
{\em operation} & the reduce operation. See @\+MPI\+\_\+\+Op \\
\hline
\end{DoxyParams}


References \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_aefdede74f361e099145647ac6b8e8de6}{get\+\_\+window()}}.

\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_a8a1150c9844fbff78f31ea32af6cf002}\index{gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}!fence@{fence}}
\index{fence@{fence}!gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{fence()}{fence()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1window_a8a1150c9844fbff78f31ea32af6cf002} 
template$<$typename Value\+Type$>$ \\
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window}{gko::\+experimental::\+mpi::\+window}}$<$ Value\+Type $>$::\+fence (\begin{DoxyParamCaption}\item[{int}]{assert}{ = {\ttfamily 0}}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



The active target synchronization using MPI\+\_\+\+Win\+\_\+fence for the window object. 

This is called on all associated ranks.


\begin{DoxyParams}{Parameters}
{\em assert} & the optimization level. 0 is always valid. \\
\hline
\end{DoxyParams}
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_a6a63489f00fe21d3007a49b32f0618dd}\index{gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}!fetch\_and\_op@{fetch\_and\_op}}
\index{fetch\_and\_op@{fetch\_and\_op}!gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{fetch\_and\_op()}{fetch\_and\_op()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1window_a6a63489f00fe21d3007a49b32f0618dd} 
template$<$typename Value\+Type$>$ \\
template$<$typename Get\+Type$>$ \\
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window}{gko::\+experimental::\+mpi::\+window}}$<$ Value\+Type $>$::\+fetch\+\_\+and\+\_\+op (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{Get\+Type \texorpdfstring{$\ast$}{*}}]{origin\+\_\+buffer}{, }\item[{Get\+Type \texorpdfstring{$\ast$}{*}}]{result\+\_\+buffer}{, }\item[{const int}]{target\+\_\+rank}{, }\item[{const unsigned int}]{target\+\_\+disp}{, }\item[{MPI\+\_\+\+Op}]{operation}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Fetch and operate on data from the target window (An optimized version of Get\+\_\+accumulate). 


\begin{DoxyParams}{Parameters}
{\em exec} & The executor, on which the message buffer is located. \\
\hline
{\em origin\+\_\+buffer} & the buffer to send \\
\hline
{\em target\+\_\+rank} & the rank to get the data from \\
\hline
{\em target\+\_\+disp} & the displacement at the target window \\
\hline
{\em operation} & the reduce operation. See @\+MPI\+\_\+\+Op \\
\hline
\end{DoxyParams}


References \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_aefdede74f361e099145647ac6b8e8de6}{get\+\_\+window()}}.

\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_a8a7e4f90d1d0c933106ba31a4ddf06a9}\index{gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}!flush@{flush}}
\index{flush@{flush}!gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{flush()}{flush()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1window_a8a7e4f90d1d0c933106ba31a4ddf06a9} 
template$<$typename Value\+Type$>$ \\
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window}{gko::\+experimental::\+mpi::\+window}}$<$ Value\+Type $>$::\+flush (\begin{DoxyParamCaption}\item[{int}]{rank}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Flush the existing RDMA operations on the target rank for the calling process for the window object. 


\begin{DoxyParams}{Parameters}
{\em rank} & the target rank. \\
\hline
\end{DoxyParams}
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_ae960cc6dc72e33ec6df62e3901e53d48}\index{gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}!flush\_local@{flush\_local}}
\index{flush\_local@{flush\_local}!gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{flush\_local()}{flush\_local()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1window_ae960cc6dc72e33ec6df62e3901e53d48} 
template$<$typename Value\+Type$>$ \\
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window}{gko::\+experimental::\+mpi::\+window}}$<$ Value\+Type $>$::\+flush\+\_\+local (\begin{DoxyParamCaption}\item[{int}]{rank}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Flush the existing RDMA operations on the calling rank from the target rank for the window object. 


\begin{DoxyParams}{Parameters}
{\em rank} & the target rank. \\
\hline
\end{DoxyParams}
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_a020a03ef7d6329e75732fe5bfa6f9d75}\index{gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}!get@{get}}
\index{get@{get}!gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{get()}{get()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1window_a020a03ef7d6329e75732fe5bfa6f9d75} 
template$<$typename Value\+Type$>$ \\
template$<$typename Get\+Type$>$ \\
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window}{gko::\+experimental::\+mpi::\+window}}$<$ Value\+Type $>$::\+get (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{Get\+Type \texorpdfstring{$\ast$}{*}}]{origin\+\_\+buffer}{, }\item[{const int}]{origin\+\_\+count}{, }\item[{const int}]{target\+\_\+rank}{, }\item[{const unsigned int}]{target\+\_\+disp}{, }\item[{const int}]{target\+\_\+count}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Get data from the target window. 


\begin{DoxyParams}{Parameters}
{\em exec} & The executor, on which the message buffer is located. \\
\hline
{\em origin\+\_\+buffer} & the buffer to send \\
\hline
{\em origin\+\_\+count} & the number of elements to get \\
\hline
{\em target\+\_\+rank} & the rank to get the data from \\
\hline
{\em target\+\_\+disp} & the displacement at the target window \\
\hline
{\em target\+\_\+count} & the request handle for the send call \\
\hline
\end{DoxyParams}


References \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_aefdede74f361e099145647ac6b8e8de6}{get\+\_\+window()}}.

\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_a0f103e5469537256f4dac5bf0e9c18ac}\index{gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}!get\_accumulate@{get\_accumulate}}
\index{get\_accumulate@{get\_accumulate}!gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{get\_accumulate()}{get\_accumulate()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1window_a0f103e5469537256f4dac5bf0e9c18ac} 
template$<$typename Value\+Type$>$ \\
template$<$typename Get\+Type$>$ \\
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window}{gko::\+experimental::\+mpi::\+window}}$<$ Value\+Type $>$::\+get\+\_\+accumulate (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{Get\+Type \texorpdfstring{$\ast$}{*}}]{origin\+\_\+buffer}{, }\item[{const int}]{origin\+\_\+count}{, }\item[{Get\+Type \texorpdfstring{$\ast$}{*}}]{result\+\_\+buffer}{, }\item[{const int}]{result\+\_\+count}{, }\item[{const int}]{target\+\_\+rank}{, }\item[{const unsigned int}]{target\+\_\+disp}{, }\item[{const int}]{target\+\_\+count}{, }\item[{MPI\+\_\+\+Op}]{operation}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Get Accumulate data from the target window. 


\begin{DoxyParams}{Parameters}
{\em exec} & The executor, on which the message buffers are located. \\
\hline
{\em origin\+\_\+buffer} & the buffer to send \\
\hline
{\em origin\+\_\+count} & the number of elements to get \\
\hline
{\em result\+\_\+buffer} & the buffer to receive the target data \\
\hline
{\em result\+\_\+count} & the number of elements to get \\
\hline
{\em target\+\_\+rank} & the rank to get the data from \\
\hline
{\em target\+\_\+disp} & the displacement at the target window \\
\hline
{\em target\+\_\+count} & the request handle for the send call \\
\hline
{\em operation} & the reduce operation. See @\+MPI\+\_\+\+Op \\
\hline
\end{DoxyParams}


References \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_aefdede74f361e099145647ac6b8e8de6}{get\+\_\+window()}}.

\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_aefdede74f361e099145647ac6b8e8de6}\index{gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}!get\_window@{get\_window}}
\index{get\_window@{get\_window}!gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{get\_window()}{get\_window()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1window_aefdede74f361e099145647ac6b8e8de6} 
template$<$typename Value\+Type$>$ \\
MPI\+\_\+\+Win \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window}{gko::\+experimental::\+mpi::\+window}}$<$ Value\+Type $>$::\+get\+\_\+window (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Get the underlying window object of MPI\+\_\+\+Win type. 

\begin{DoxyReturn}{Returns}
the underlying window object. 
\end{DoxyReturn}


Referenced by \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_aa8f681ccf38e74fad75017aa0bf50f81}{accumulate()}}, \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a6a63489f00fe21d3007a49b32f0618dd}{fetch\+\_\+and\+\_\+op()}}, \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a020a03ef7d6329e75732fe5bfa6f9d75}{get()}}, \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a0f103e5469537256f4dac5bf0e9c18ac}{get\+\_\+accumulate()}}, \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a151c85c9dbd58b15377edcf0702efe5d}{put()}}, \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a4fc76b03f10fe40c84c4b5d123f453b9}{r\+\_\+accumulate()}}, \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_af611adbe29e925ef5448ead49bde179e}{r\+\_\+get()}}, \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a69842676f3a38849160857138ce0b745}{r\+\_\+get\+\_\+accumulate()}}, and \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a08ddae163fc1c34b9456bab96a5f1107}{r\+\_\+put()}}.

\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_acd2dca005043cf3a0ad8088b136eb4d7}\index{gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}!lock@{lock}}
\index{lock@{lock}!gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{lock()}{lock()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1window_acd2dca005043cf3a0ad8088b136eb4d7} 
template$<$typename Value\+Type$>$ \\
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window}{gko::\+experimental::\+mpi::\+window}}$<$ Value\+Type $>$::\+lock (\begin{DoxyParamCaption}\item[{int}]{rank}{, }\item[{\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a35fce5e05e221ce18372e1f2609f9953}{lock\+\_\+type}}}]{lock\+\_\+t}{ = {\ttfamily lock\+\_\+type:\+:\+shared}, }\item[{int}]{assert}{ = {\ttfamily 0}}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Create an epoch using MPI\+\_\+\+Win\+\_\+lock for the window object. 


\begin{DoxyParams}{Parameters}
{\em rank} & the target rank. \\
\hline
{\em lock\+\_\+t} & the type of the lock:\+ shared or exclusive \\
\hline
{\em assert} & the optimization level. 0 is always valid. \\
\hline
\end{DoxyParams}
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_ab6fbd4976d277371670122a783bd6fbc}\index{gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}!lock\_all@{lock\_all}}
\index{lock\_all@{lock\_all}!gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{lock\_all()}{lock\_all()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1window_ab6fbd4976d277371670122a783bd6fbc} 
template$<$typename Value\+Type$>$ \\
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window}{gko::\+experimental::\+mpi::\+window}}$<$ Value\+Type $>$::\+lock\+\_\+all (\begin{DoxyParamCaption}\item[{int}]{assert}{ = {\ttfamily 0}}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Create the epoch on all ranks using MPI\+\_\+\+Win\+\_\+lock\+\_\+all for the window object. 


\begin{DoxyParams}{Parameters}
{\em assert} & the optimization level. 0 is always valid. \\
\hline
\end{DoxyParams}
\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_a3e1f9e30923a62c66ee08ccee3ebc39d}\index{gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}!operator=@{operator=}}
\index{operator=@{operator=}!gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{operator=()}{operator=()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1window_a3e1f9e30923a62c66ee08ccee3ebc39d} 
template$<$typename Value\+Type$>$ \\
\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a0d8b46cb4e781ef71bccbbfb4a9407fe}{window}} \& \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window}{gko::\+experimental::\+mpi::\+window}}$<$ Value\+Type $>$::\+operator= (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a0d8b46cb4e781ef71bccbbfb4a9407fe}{window}}$<$ Value\+Type $>$ \&\&}]{other}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



The move assignment operator. 

Move the other object and replace it with MPI\+\_\+\+WIN\+\_\+\+NULL


\begin{DoxyParams}{Parameters}
{\em other} & the window object to be moved. \\
\hline
\end{DoxyParams}


References \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_a0d8b46cb4e781ef71bccbbfb4a9407fe}{window()}}.

\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_a151c85c9dbd58b15377edcf0702efe5d}\index{gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}!put@{put}}
\index{put@{put}!gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{put()}{put()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1window_a151c85c9dbd58b15377edcf0702efe5d} 
template$<$typename Value\+Type$>$ \\
template$<$typename Put\+Type$>$ \\
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window}{gko::\+experimental::\+mpi::\+window}}$<$ Value\+Type $>$::\+put (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{const Put\+Type \texorpdfstring{$\ast$}{*}}]{origin\+\_\+buffer}{, }\item[{const int}]{origin\+\_\+count}{, }\item[{const int}]{target\+\_\+rank}{, }\item[{const unsigned int}]{target\+\_\+disp}{, }\item[{const int}]{target\+\_\+count}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Put data into the target window. 


\begin{DoxyParams}{Parameters}
{\em exec} & The executor, on which the message buffer is located. \\
\hline
{\em origin\+\_\+buffer} & the buffer to send \\
\hline
{\em origin\+\_\+count} & the number of elements to put \\
\hline
{\em target\+\_\+rank} & the rank to put the data to \\
\hline
{\em target\+\_\+disp} & the displacement at the target window \\
\hline
{\em target\+\_\+count} & the request handle for the send call \\
\hline
\end{DoxyParams}


References \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_aefdede74f361e099145647ac6b8e8de6}{get\+\_\+window()}}.

\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_a4fc76b03f10fe40c84c4b5d123f453b9}\index{gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}!r\_accumulate@{r\_accumulate}}
\index{r\_accumulate@{r\_accumulate}!gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{r\_accumulate()}{r\_accumulate()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1window_a4fc76b03f10fe40c84c4b5d123f453b9} 
template$<$typename Value\+Type$>$ \\
template$<$typename Put\+Type$>$ \\
\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1request}{request}} \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window}{gko::\+experimental::\+mpi::\+window}}$<$ Value\+Type $>$::\+r\+\_\+accumulate (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{const Put\+Type \texorpdfstring{$\ast$}{*}}]{origin\+\_\+buffer}{, }\item[{const int}]{origin\+\_\+count}{, }\item[{const int}]{target\+\_\+rank}{, }\item[{const unsigned int}]{target\+\_\+disp}{, }\item[{const int}]{target\+\_\+count}{, }\item[{MPI\+\_\+\+Op}]{operation}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



(Non-\/blocking) Accumulate data into the target window. 


\begin{DoxyParams}{Parameters}
{\em exec} & The executor, on which the message buffer is located. \\
\hline
{\em origin\+\_\+buffer} & the buffer to send \\
\hline
{\em origin\+\_\+count} & the number of elements to put \\
\hline
{\em target\+\_\+rank} & the rank to put the data to \\
\hline
{\em target\+\_\+disp} & the displacement at the target window \\
\hline
{\em target\+\_\+count} & the request handle for the send call \\
\hline
{\em operation} & the reduce operation. See @\+MPI\+\_\+\+Op\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the request handle for the send call 
\end{DoxyReturn}


References \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1request_a9b4b79bdb828944badb7f342511b245b}{gko::\+experimental::\+mpi::\+request::\+get()}}, and \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_aefdede74f361e099145647ac6b8e8de6}{get\+\_\+window()}}.

\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_af611adbe29e925ef5448ead49bde179e}\index{gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}!r\_get@{r\_get}}
\index{r\_get@{r\_get}!gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{r\_get()}{r\_get()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1window_af611adbe29e925ef5448ead49bde179e} 
template$<$typename Value\+Type$>$ \\
template$<$typename Get\+Type$>$ \\
\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1request}{request}} \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window}{gko::\+experimental::\+mpi::\+window}}$<$ Value\+Type $>$::\+r\+\_\+get (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{Get\+Type \texorpdfstring{$\ast$}{*}}]{origin\+\_\+buffer}{, }\item[{const int}]{origin\+\_\+count}{, }\item[{const int}]{target\+\_\+rank}{, }\item[{const unsigned int}]{target\+\_\+disp}{, }\item[{const int}]{target\+\_\+count}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Get data (with handle) from the target window. 


\begin{DoxyParams}{Parameters}
{\em exec} & The executor, on which the message buffer is located. \\
\hline
{\em origin\+\_\+buffer} & the buffer to send \\
\hline
{\em origin\+\_\+count} & the number of elements to get \\
\hline
{\em target\+\_\+rank} & the rank to get the data from \\
\hline
{\em target\+\_\+disp} & the displacement at the target window \\
\hline
{\em target\+\_\+count} & the request handle for the send call\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the request handle for the send call 
\end{DoxyReturn}


References \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1request_a9b4b79bdb828944badb7f342511b245b}{gko::\+experimental::\+mpi::\+request::\+get()}}, and \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_aefdede74f361e099145647ac6b8e8de6}{get\+\_\+window()}}.

\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_a69842676f3a38849160857138ce0b745}\index{gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}!r\_get\_accumulate@{r\_get\_accumulate}}
\index{r\_get\_accumulate@{r\_get\_accumulate}!gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{r\_get\_accumulate()}{r\_get\_accumulate()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1window_a69842676f3a38849160857138ce0b745} 
template$<$typename Value\+Type$>$ \\
template$<$typename Get\+Type$>$ \\
\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1request}{request}} \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window}{gko::\+experimental::\+mpi::\+window}}$<$ Value\+Type $>$::\+r\+\_\+get\+\_\+accumulate (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{Get\+Type \texorpdfstring{$\ast$}{*}}]{origin\+\_\+buffer}{, }\item[{const int}]{origin\+\_\+count}{, }\item[{Get\+Type \texorpdfstring{$\ast$}{*}}]{result\+\_\+buffer}{, }\item[{const int}]{result\+\_\+count}{, }\item[{const int}]{target\+\_\+rank}{, }\item[{const unsigned int}]{target\+\_\+disp}{, }\item[{const int}]{target\+\_\+count}{, }\item[{MPI\+\_\+\+Op}]{operation}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



(Non-\/blocking) Get Accumulate data (with handle) from the target window. 


\begin{DoxyParams}{Parameters}
{\em exec} & The executor, on which the message buffers are located. \\
\hline
{\em origin\+\_\+buffer} & the buffer to send \\
\hline
{\em origin\+\_\+count} & the number of elements to get \\
\hline
{\em result\+\_\+buffer} & the buffer to receive the target data \\
\hline
{\em result\+\_\+count} & the number of elements to get \\
\hline
{\em target\+\_\+rank} & the rank to get the data from \\
\hline
{\em target\+\_\+disp} & the displacement at the target window \\
\hline
{\em target\+\_\+count} & the request handle for the send call \\
\hline
{\em operation} & the reduce operation. See @\+MPI\+\_\+\+Op\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the request handle for the send call 
\end{DoxyReturn}


References \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1request_a9b4b79bdb828944badb7f342511b245b}{gko::\+experimental::\+mpi::\+request::\+get()}}, and \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_aefdede74f361e099145647ac6b8e8de6}{get\+\_\+window()}}.

\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_a08ddae163fc1c34b9456bab96a5f1107}\index{gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}!r\_put@{r\_put}}
\index{r\_put@{r\_put}!gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{r\_put()}{r\_put()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1window_a08ddae163fc1c34b9456bab96a5f1107} 
template$<$typename Value\+Type$>$ \\
template$<$typename Put\+Type$>$ \\
\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1request}{request}} \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window}{gko::\+experimental::\+mpi::\+window}}$<$ Value\+Type $>$::\+r\+\_\+put (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{const Put\+Type \texorpdfstring{$\ast$}{*}}]{origin\+\_\+buffer}{, }\item[{const int}]{origin\+\_\+count}{, }\item[{const int}]{target\+\_\+rank}{, }\item[{const unsigned int}]{target\+\_\+disp}{, }\item[{const int}]{target\+\_\+count}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Put data into the target window. 


\begin{DoxyParams}{Parameters}
{\em exec} & The executor, on which the message buffer is located. \\
\hline
{\em origin\+\_\+buffer} & the buffer to send \\
\hline
{\em origin\+\_\+count} & the number of elements to put \\
\hline
{\em target\+\_\+rank} & the rank to put the data to \\
\hline
{\em target\+\_\+disp} & the displacement at the target window \\
\hline
{\em target\+\_\+count} & the request handle for the send call\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the request handle for the send call 
\end{DoxyReturn}


References \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1request_a9b4b79bdb828944badb7f342511b245b}{gko::\+experimental::\+mpi::\+request::\+get()}}, and \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window_aefdede74f361e099145647ac6b8e8de6}{get\+\_\+window()}}.

\Hypertarget{classgko_1_1experimental_1_1mpi_1_1window_a8007809ea63aa789c2e3eae7b512e683}\index{gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}!unlock@{unlock}}
\index{unlock@{unlock}!gko::experimental::mpi::window$<$ ValueType $>$@{gko::experimental::mpi::window$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{unlock()}{unlock()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1mpi_1_1window_a8007809ea63aa789c2e3eae7b512e683} 
template$<$typename Value\+Type$>$ \\
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1window}{gko::\+experimental::\+mpi::\+window}}$<$ Value\+Type $>$::\+unlock (\begin{DoxyParamCaption}\item[{int}]{rank}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Close the epoch using MPI\+\_\+\+Win\+\_\+unlock for the window object. 


\begin{DoxyParams}{Parameters}
{\em rank} & the target rank. \\
\hline
\end{DoxyParams}


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