\doxysection{gko::\+experimental::\+distributed::\+Matrix\texorpdfstring{$<$}{<} Value\+Type, Local\+Index\+Type, Global\+Index\+Type \texorpdfstring{$>$}{>} Class Template Reference}
\hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix}{}\label{classgko_1_1experimental_1_1distributed_1_1Matrix}\index{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}}


The \doxylink{classgko_1_1experimental_1_1distributed_1_1Matrix}{Matrix} class defines a (MPI-\/)distributed matrix.  




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



Inheritance diagram for gko::\+experimental::\+distributed::\+Matrix\texorpdfstring{$<$}{<} Value\+Type, Local\+Index\+Type, Global\+Index\+Type \texorpdfstring{$>$}{>}:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classgko_1_1experimental_1_1distributed_1_1Matrix__inherit__graph}
\end{center}
\end{figure}


Collaboration diagram for gko::\+experimental::\+distributed::\+Matrix\texorpdfstring{$<$}{<} Value\+Type, Local\+Index\+Type, Global\+Index\+Type \texorpdfstring{$>$}{>}:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classgko_1_1experimental_1_1distributed_1_1Matrix__coll__graph}
\end{center}
\end{figure}
\doxysubsubsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_a75da9ec6dce6083f5fa22dcd750fe667}\label{classgko_1_1experimental_1_1distributed_1_1Matrix_a75da9ec6dce6083f5fa22dcd750fe667} 
using {\bfseries value\+\_\+type} = Value\+Type
\item 
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_a91b4206e3cf6aee00a0016496afafb1e}\label{classgko_1_1experimental_1_1distributed_1_1Matrix_a91b4206e3cf6aee00a0016496afafb1e} 
using {\bfseries index\+\_\+type} = Global\+Index\+Type
\item 
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_a6e339c7a05fd4aa034b8258629341b2e}\label{classgko_1_1experimental_1_1distributed_1_1Matrix_a6e339c7a05fd4aa034b8258629341b2e} 
using {\bfseries local\+\_\+index\+\_\+type} = Local\+Index\+Type
\item 
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_a18e5a4f6014ba52275cce0beb28d951b}\label{classgko_1_1experimental_1_1distributed_1_1Matrix_a18e5a4f6014ba52275cce0beb28d951b} 
using {\bfseries global\+\_\+index\+\_\+type} = Global\+Index\+Type
\item 
using \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_a2fbdcf2c0a49e5a91b4fe6daa687ab3c}{global\+\_\+vector\+\_\+type}}
\item 
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_a231b65afe63ce0b2a04225cd74007566}\label{classgko_1_1experimental_1_1distributed_1_1Matrix_a231b65afe63ce0b2a04225cd74007566} 
using {\bfseries local\+\_\+vector\+\_\+type} = typename global\+\_\+vector\+\_\+type::\+local\+\_\+vector\+\_\+type
\end{DoxyCompactItemize}
\doxysubsection*{Public Types inherited from \doxymbox{\hyperlink{classgko_1_1EnablePolymorphicAssignment}{gko::\+\+Enable\+Polymorphic\+Assignment$<$ Matrix$<$ default\+\_\+precision, int32, int64 $>$ $>$}}}
\begin{DoxyCompactItemize}
\item 
using {\bfseries result\+\_\+type}
\end{DoxyCompactItemize}
\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_a288f5e17046eb3bdf23fb3526ce87552}\label{classgko_1_1experimental_1_1distributed_1_1Matrix_a288f5e17046eb3bdf23fb3526ce87552} 
void {\bfseries convert\+\_\+to} (\doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}}$<$ \doxymbox{\hyperlink{namespacegko_aee37f85b217e5e26fe64207d41fa4bac}{next\+\_\+precision}}$<$ value\+\_\+type $>$, local\+\_\+index\+\_\+type, global\+\_\+index\+\_\+type $>$ \texorpdfstring{$\ast$}{*}result) const override
\item 
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_a29e74e672fd206bd26659d9fe1f05fec}\label{classgko_1_1experimental_1_1distributed_1_1Matrix_a29e74e672fd206bd26659d9fe1f05fec} 
void {\bfseries move\+\_\+to} (\doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}}$<$ \doxymbox{\hyperlink{namespacegko_aee37f85b217e5e26fe64207d41fa4bac}{next\+\_\+precision}}$<$ value\+\_\+type $>$, local\+\_\+index\+\_\+type, global\+\_\+index\+\_\+type $>$ \texorpdfstring{$\ast$}{*}result) override
\item 
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_aac99e854ec33cee5947041acdf0f1a19}{read\+\_\+distributed}} (const \doxymbox{\hyperlink{classgko_1_1device__matrix__data}{device\+\_\+matrix\+\_\+data}}$<$ value\+\_\+type, global\+\_\+index\+\_\+type $>$ \&data, std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Partition}{Partition}}$<$ local\+\_\+index\+\_\+type, global\+\_\+index\+\_\+type $>$ $>$ partition, \doxymbox{\hyperlink{namespacegko_1_1experimental_1_1distributed_a4b66bc2bbe95fe0a818a5f4423acbb4e}{assembly\+\_\+mode}} assembly\+\_\+type=assembly\+\_\+mode::\+local\+\_\+only)
\begin{DoxyCompactList}\small\item\em Reads a square matrix from the \doxylink{classgko_1_1device__matrix__data}{device\+\_\+matrix\+\_\+data} structure and a global partition. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_a6d923b0ccaebc489c5a52342c70f2724}{read\+\_\+distributed}} (const \doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\+\_\+data}}$<$ value\+\_\+type, global\+\_\+index\+\_\+type $>$ \&data, std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Partition}{Partition}}$<$ local\+\_\+index\+\_\+type, global\+\_\+index\+\_\+type $>$ $>$ partition, \doxymbox{\hyperlink{namespacegko_1_1experimental_1_1distributed_a4b66bc2bbe95fe0a818a5f4423acbb4e}{assembly\+\_\+mode}} assembly\+\_\+type=assembly\+\_\+mode::\+local\+\_\+only)
\begin{DoxyCompactList}\small\item\em Reads a square matrix from the \doxylink{structgko_1_1matrix__data}{matrix\+\_\+data} structure and a global partition. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_a562825d88245f1a31b27d92e1c763399}{read\+\_\+distributed}} (const \doxymbox{\hyperlink{classgko_1_1device__matrix__data}{device\+\_\+matrix\+\_\+data}}$<$ value\+\_\+type, global\+\_\+index\+\_\+type $>$ \&data, std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Partition}{Partition}}$<$ local\+\_\+index\+\_\+type, global\+\_\+index\+\_\+type $>$ $>$ row\+\_\+partition, std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Partition}{Partition}}$<$ local\+\_\+index\+\_\+type, global\+\_\+index\+\_\+type $>$ $>$ col\+\_\+partition, \doxymbox{\hyperlink{namespacegko_1_1experimental_1_1distributed_a4b66bc2bbe95fe0a818a5f4423acbb4e}{assembly\+\_\+mode}} assembly\+\_\+type=assembly\+\_\+mode::\+local\+\_\+only)
\begin{DoxyCompactList}\small\item\em Reads a matrix from the \doxylink{classgko_1_1device__matrix__data}{device\+\_\+matrix\+\_\+data} structure, a global row partition, and a global column partition. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_a37b00941e52ca19c3bbaa6c9f8f7bf3d}{read\+\_\+distributed}} (const \doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\+\_\+data}}$<$ value\+\_\+type, global\+\_\+index\+\_\+type $>$ \&data, std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Partition}{Partition}}$<$ local\+\_\+index\+\_\+type, global\+\_\+index\+\_\+type $>$ $>$ row\+\_\+partition, std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Partition}{Partition}}$<$ local\+\_\+index\+\_\+type, global\+\_\+index\+\_\+type $>$ $>$ col\+\_\+partition, \doxymbox{\hyperlink{namespacegko_1_1experimental_1_1distributed_a4b66bc2bbe95fe0a818a5f4423acbb4e}{assembly\+\_\+mode}} assembly\+\_\+type=assembly\+\_\+mode::\+local\+\_\+only)
\begin{DoxyCompactList}\small\item\em Reads a matrix from the \doxylink{structgko_1_1matrix__data}{matrix\+\_\+data} structure, a global row partition, and a global column partition. \end{DoxyCompactList}\item 
std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_a4374c5ac0f79f3a3ba4fb33381036e6a}{get\+\_\+local\+\_\+matrix}} () const
\begin{DoxyCompactList}\small\item\em Get read access to the stored local matrix. \end{DoxyCompactList}\item 
std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_a01b3972a66f0f0b3139a9473e39ff8a7}{get\+\_\+non\+\_\+local\+\_\+matrix}} () const
\begin{DoxyCompactList}\small\item\em Get read access to the stored non-\/local matrix. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} (const Matrix \&other)
\begin{DoxyCompactList}\small\item\em Copy constructs a \doxylink{classgko_1_1experimental_1_1distributed_1_1Matrix}{Matrix}. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_a0d91aaf63e48ced333e4d63f26a91f71}{Matrix}} (Matrix \&\&other) noexcept
\begin{DoxyCompactList}\small\item\em Move constructs a \doxylink{classgko_1_1experimental_1_1distributed_1_1Matrix}{Matrix}. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} \& \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ae885f80364ed6cc2997915691f0a5d74}{operator=}} (const \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} \&other)
\begin{DoxyCompactList}\small\item\em Copy assigns a \doxylink{classgko_1_1experimental_1_1distributed_1_1Matrix}{Matrix}. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} \& \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ae1c34aa1a2e26a83bbdb01a0b53ec5f4}{operator=}} (\doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} \&\&other)
\begin{DoxyCompactList}\small\item\em Move assigns a \doxylink{classgko_1_1experimental_1_1distributed_1_1Matrix}{Matrix}. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_a4054a842c6914472f6ec8af1ea2e44be}{col\+\_\+scale}} (\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const global\+\_\+vector\+\_\+type $>$ scaling\+\_\+factors)
\begin{DoxyCompactList}\small\item\em Scales the columns of the matrix by the respective entries of the vector. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_a7f9d815d3c67029267e3cb4b2b7da327}{row\+\_\+scale}} (\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const global\+\_\+vector\+\_\+type $>$ scaling\+\_\+factors)
\begin{DoxyCompactList}\small\item\em Scales the rows of the matrix by the respective entries of the vector. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \doxymbox{\hyperlink{classgko_1_1EnableLinOp}{gko::\+\+Enable\+Lin\+Op$<$ Matrix$<$ default\+\_\+precision, int32, int64 $>$ $>$}}}
\begin{DoxyCompactItemize}
\item 
const Matrix$<$ \doxymbox{\hyperlink{namespacegko_a89637c833af7ae805802226d97cebebf}{default\+\_\+precision}}, \doxymbox{\hyperlink{namespacegko_a16bd14c10900eb804d784908d8aab5ab}{int32}}, \doxymbox{\hyperlink{namespacegko_a913ec044df518649fa5a891f8dffae34}{int64}} $>$ \texorpdfstring{$\ast$}{*} {\bfseries apply} (\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ b, \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ x) const
\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \doxymbox{\hyperlink{classgko_1_1EnablePolymorphicAssignment}{gko::\+\+Enable\+Polymorphic\+Assignment$<$ Matrix$<$ default\+\_\+precision, int32, int64 $>$ $>$}}}
\begin{DoxyCompactItemize}
\item 
void {\bfseries convert\+\_\+to} (result\+\_\+type \texorpdfstring{$\ast$}{*}result) const override
\item 
void {\bfseries move\+\_\+to} (result\+\_\+type \texorpdfstring{$\ast$}{*}result) override
\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1DistributedBase}{gko::\+experimental::\+distributed::\+\+Distributed\+Base}}}
\begin{DoxyCompactItemize}
\item 
{\bfseries Distributed\+Base} (const Distributed\+Base \&other)=default
\item 
{\bfseries Distributed\+Base} (Distributed\+Base \&\&other)=default
\item 
Distributed\+Base \& \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1DistributedBase_a1a860e47a3b6baf2c2d9126281d89904}{operator=}} (const Distributed\+Base \&)
\begin{DoxyCompactList}\small\item\em Copy assignment that doesn\textquotesingle{}t change the used \doxylink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::\+communicator}. \end{DoxyCompactList}\item 
Distributed\+Base \& \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1DistributedBase_a327ee18a0d1ac45d2cc9c5fc93e7dd33}{operator=}} (Distributed\+Base \&\&) noexcept
\begin{DoxyCompactList}\small\item\em Move assignment that doesn\textquotesingle{}t change the used \doxylink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::\+communicator}. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::\+communicator}} \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1DistributedBase_ae9bcc14eeaadfcb95c29a931eb1856c4}{get\+\_\+communicator}} () const
\begin{DoxyCompactList}\small\item\em Access the used \doxylink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::\+communicator}. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_a566c407ff14952d75e25c4b4e86cb870}{create}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::\+communicator}} comm)
\begin{DoxyCompactList}\small\item\em Creates an empty distributed matrix. \end{DoxyCompactList}\item 
static std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_a93b168355a1b148c87fdbcdfd195e4ff}{create}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1RowGatherer}{Row\+Gatherer}}$<$ Local\+Index\+Type $>$ $>$ row\+\_\+gatherer\+\_\+template)
\begin{DoxyCompactList}\small\item\em Creates an empty distributed matrix with a specified implementation of the row gather operation. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename Matrix\+Type, typename = std::\+enable\+\_\+if\+\_\+t$<$gko::\+detail::\+is\+\_\+matrix\+\_\+type\+\_\+builder$<$                  Matrix\+Type, Value\+Type, Local\+Index\+Type$>$::\+value$>$$>$ }\\static std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ad9b7db16f5fa43b2a5d1e2a0e8e24c16}{create}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::\+communicator}} comm, Matrix\+Type matrix\+\_\+template)
\begin{DoxyCompactList}\small\item\em Creates an empty distributed matrix with specified type for local matrices. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename Local\+Matrix\+Type, typename Non\+Local\+Matrix\+Type, typename = std::\+enable\+\_\+if\+\_\+t$<$                  gko::\+detail::\+is\+\_\+matrix\+\_\+type\+\_\+builder$<$                      Local\+Matrix\+Type, Value\+Type, Local\+Index\+Type$>$::\+value \&\&                  gko::\+detail::\+is\+\_\+matrix\+\_\+type\+\_\+builder$<$                      Non\+Local\+Matrix\+Type, Value\+Type, Local\+Index\+Type$>$::\+value$>$$>$ }\\static std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ac721453a13127fcc78371de2215ac1d4}{create}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::\+communicator}} comm, Local\+Matrix\+Type local\+\_\+matrix\+\_\+template, Non\+Local\+Matrix\+Type non\+\_\+local\+\_\+matrix\+\_\+template)
\begin{DoxyCompactList}\small\item\em Creates an empty distributed matrix with specified types for the local matrix and the non-\/local matrix. \end{DoxyCompactList}\item 
static std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ae9a7a61467f6a08964880323ef216434}{create}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::\+communicator}} comm, \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ matrix\+\_\+template)
\begin{DoxyCompactList}\small\item\em Creates an empty distributed matrix with specified type for local matrices. \end{DoxyCompactList}\item 
static std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_a39176cd542182e7cda0ef21cb1b21deb}{create}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::\+communicator}} comm, \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ local\+\_\+matrix\+\_\+template, \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ non\+\_\+local\+\_\+matrix\+\_\+template)
\begin{DoxyCompactList}\small\item\em Creates an empty distributed matrix with specified types for the local matrix and the non-\/local matrix. \end{DoxyCompactList}\item 
static std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_a9b6f26916e92b780d54859f2284b48fd}{create}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::\+communicator}} comm, \doxymbox{\hyperlink{structgko_1_1dim}{dim}}$<$ 2 $>$ size, std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ local\+\_\+linop)
\begin{DoxyCompactList}\small\item\em Creates a local-\/only distributed matrix with existent \doxylink{classgko_1_1LinOp}{Lin\+Op}. \end{DoxyCompactList}\item 
static std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_aa0128c0f0bfded6660279d217c70cbd5}{create}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::\+communicator}} comm, \doxymbox{\hyperlink{structgko_1_1dim}{dim}}$<$ 2 $>$ size, std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ local\+\_\+linop, std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ non\+\_\+local\+\_\+linop, std::\+vector$<$ \doxymbox{\hyperlink{namespacegko_1_1experimental_1_1mpi_a13b7760affb031fee59d385754eaaffb}{comm\+\_\+index\+\_\+type}} $>$ recv\+\_\+sizes, std::\+vector$<$ \doxymbox{\hyperlink{namespacegko_1_1experimental_1_1mpi_a13b7760affb031fee59d385754eaaffb}{comm\+\_\+index\+\_\+type}} $>$ recv\+\_\+offsets, \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ local\+\_\+index\+\_\+type $>$ recv\+\_\+gather\+\_\+idxs)
\begin{DoxyCompactList}\small\item\em Creates distributed matrix with existent local and non-\/local \doxylink{classgko_1_1LinOp}{Lin\+Op} and the corresponding mapping to collect the non-\/local data from the other ranks. \end{DoxyCompactList}\item 
static std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_a14efe7ed214c9be7fa957bcdfe37f2b3}{create}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::\+communicator}} comm, \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1index__map}{index\+\_\+map}}$<$ local\+\_\+index\+\_\+type, global\+\_\+index\+\_\+type $>$ imap, std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ local\+\_\+linop, std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ non\+\_\+local\+\_\+linop)
\begin{DoxyCompactList}\small\item\em Creates distributed matrix with existent local and non-\/local \doxylink{classgko_1_1LinOp}{Lin\+Op} and the corresponding mapping to collect the non-\/local data from the other ranks. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Friends}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_a1992cc5e5c113b5a2f185bdba477424f}\label{classgko_1_1experimental_1_1distributed_1_1Matrix_a1992cc5e5c113b5a2f185bdba477424f} 
class {\bfseries Enable\+Polymorphic\+Object$<$ Matrix, Lin\+Op $>$}
\item 
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_afd44da777d931df22bed18be933d826d}\label{classgko_1_1experimental_1_1distributed_1_1Matrix_afd44da777d931df22bed18be933d826d} 
class {\bfseries Matrix$<$ previous\+\_\+precision$<$ Value\+Type $>$, Local\+Index\+Type, Global\+Index\+Type $>$}
\item 
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_aa7fbd884cea5c09e1cbab38646e93ace}\label{classgko_1_1experimental_1_1distributed_1_1Matrix_aa7fbd884cea5c09e1cbab38646e93ace} 
class {\bfseries multigrid::\+\+Pgm$<$ Value\+Type, Local\+Index\+Type $>$}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
\subsubsection*{template$<$typename Value\+Type = default\+\_\+precision, typename Local\+Index\+Type = int32, typename Global\+Index\+Type = int64$>$\newline
class gko::\+experimental::\+distributed::\+\+Matrix$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$}
The \doxylink{classgko_1_1experimental_1_1distributed_1_1Matrix}{Matrix} class defines a (MPI-\/)distributed matrix. 

The matrix is stored in a row-\/wise distributed format. Each process owns a specific set of rows, where the assignment of rows is defined by a row \doxylink{classgko_1_1experimental_1_1distributed_1_1Partition}{Partition}. The following depicts the distribution of global rows according to their assigned part-\/id (which will usually be the owning process id):\+ 
\begin{DoxyCode}{0}
\DoxyCodeLine{Part-\/Id\ \ Global\ Rows\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Part-\/Id\ \ Local\ Rows}
\DoxyCodeLine{0\ \ \ \ \ \ \ \ |\ ..\ 1\ \ 2\ \ ..\ ..\ ..\ |\ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ |\ ..\ 1\ \ 2\ \ ..\ ..\ ..\ |}
\DoxyCodeLine{1\ \ \ \ \ \ \ \ |\ 3\ \ 4\ \ ..\ ..\ ..\ ..\ |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ |\ 13\ ..\ ..\ ..\ 14\ ..\ |}
\DoxyCodeLine{2\ \ \ \ \ \ \ \ |\ ..\ 5\ \ 6\ \ ..\ \ 7\ ..\ |\ \ -\/-\/-\/-\/>\ \ 1\ \ \ \ \ \ \ \ |\ 3\ \ 4\ \ ..\ ..\ ..\ ..\ |}
\DoxyCodeLine{2\ \ \ \ \ \ \ \ |\ ..\ ..\ ..\ 8\ \ ..\ \ 9\ |\ \ -\/-\/-\/-\/>\ \ \ \ \ \ \ \ \ \ \ |\ ..\ ..\ ..\ 10\ 11\ 12\ |}
\DoxyCodeLine{1\ \ \ \ \ \ \ \ |\ ..\ ..\ ..\ 10\ 11\ 12\ |\ \ \ \ \ \ \ \ \ 2\ \ \ \ \ \ \ \ |\ ..\ 5\ \ 6\ \ ..\ \ 7\ ..\ |}
\DoxyCodeLine{0\ \ \ \ \ \ \ \ |\ 13\ ..\ ..\ ..\ 14\ ..\ |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ |\ ..\ ..\ ..\ 8\ \ ..\ \ 9\ |}

\end{DoxyCode}
 The local rows are further split into two matrices on each process. One matrix, called {\ttfamily local}, contains only entries from columns that are also owned by the process, while the other one, called {\ttfamily non\+\_\+local}, contains entries from columns that are not owned by the process. The non-\/local matrix is stored in a compressed format, where empty columns are discarded and the remaining columns are renumbered. This splitting is depicted in the following:\+ 
\begin{DoxyCode}{0}
\DoxyCodeLine{Part-\/Id\ \ Global\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Local\ \ \ \ \ \ Non-\/Local}
\DoxyCodeLine{0\ \ \ \ \ \ \ \ |\ ..\ 1\ \ !\ 2\ \ ..\ !\ ..\ ..\ |\ \ \ \ \ \ \ \ \ |\ ..\ 1\ \ |\ \ |\ 2\ \ |}
\DoxyCodeLine{0\ \ \ \ \ \ \ \ |\ 3\ \ 4\ \ !\ ..\ ..\ !\ ..\ ..\ |\ \ \ \ \ \ \ \ \ |\ 3\ \ 4\ \ |\ \ |\ ..\ |}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ |-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/|}
\DoxyCodeLine{1\ \ \ \ \ \ \ \ |\ ..\ 5\ \ !\ 6\ \ ..\ !\ 7\ \ ..\ |\ \ -\/-\/-\/-\/>\ \ |\ 6\ \ ..\ |\ \ |\ 5\ \ 7\ \ ..\ |}
\DoxyCodeLine{1\ \ \ \ \ \ \ \ |\ ..\ ..\ !\ ..\ 8\ \ !\ ..\ \ 9\ |\ \ -\/-\/-\/-\/>\ \ |\ 8\ \ ..\ |\ \ |\ ..\ ..\ 9\ \ |}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ |-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/|}
\DoxyCodeLine{2\ \ \ \ \ \ \ \ |\ ..\ ..\ !\ ..\ 10\ !\ 11\ 12\ |\ \ \ \ \ \ \ \ \ |\ 11\ 12\ |\ \ |\ ..\ 10\ |}
\DoxyCodeLine{2\ \ \ \ \ \ \ \ |\ 13\ ..\ !\ ..\ ..\ !\ 14\ ..\ |\ \ \ \ \ \ \ \ \ |\ 14\ ..\ |\ \ |\ 13\ ..\ |}

\end{DoxyCode}
 This uses the same ownership of the columns as for the rows. Additionally, the ownership of the columns may be explicitly defined with an second column partition. If that is not provided, the same row partition will be used for the columns. Using a column partition also allows to create non-\/square matrices, like the one below:\+ 
\begin{DoxyCode}{0}
\DoxyCodeLine{Part-\/Id\ \ Global\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Local\ \ \ \ \ \ Non-\/Local}
\DoxyCodeLine{P\_R/P\_C\ \ \ \ 2\ \ 2\ \ 0\ \ 1}
\DoxyCodeLine{0\ \ \ \ \ \ \ \ |\ ..\ 1\ \ 2\ \ ..\ |\ \ \ \ \ \ \ \ \ |\ 2\ \ |\ \ \ \ \ |\ 1\ \ ..\ |}
\DoxyCodeLine{0\ \ \ \ \ \ \ \ |\ 3\ \ 4\ \ ..\ ..\ |\ \ \ \ \ \ \ \ \ |\ ..\ |\ \ \ \ \ |\ 3\ \ 4\ \ |}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ |-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/|}
\DoxyCodeLine{1\ \ \ \ \ \ \ \ |\ ..\ 5\ \ 6\ \ ..\ |\ \ -\/-\/-\/-\/>\ \ |\ ..\ |\ \ \ \ \ |\ 6\ \ 5\ \ |}
\DoxyCodeLine{1\ \ \ \ \ \ \ \ |\ ..\ ..\ ..\ 8\ \ |\ \ -\/-\/-\/-\/>\ \ |\ 8\ \ |\ \ \ \ \ |\ ..\ ..\ |}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ |-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/|}
\DoxyCodeLine{2\ \ \ \ \ \ \ \ |\ ..\ ..\ ..\ 10\ |\ \ \ \ \ \ \ \ \ |\ ..\ ..\ |\ \ |\ 10\ |}
\DoxyCodeLine{2\ \ \ \ \ \ \ \ |\ 13\ ..\ ..\ ..\ |\ \ \ \ \ \ \ \ \ |\ 13\ ..\ |\ \ |\ ..\ |}

\end{DoxyCode}
 Here {\ttfamily P\+\_\+R} denotes the row partition and {\ttfamily P\+\_\+C} denotes the column partition.

The \doxylink{classgko_1_1experimental_1_1distributed_1_1Matrix}{Matrix} should be filled using the read\+\_\+distributed method, e.\+g. 
\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keyword}{auto}\ part\ =\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Partition_ad17d1164a99bca5df2d2ec0eb5d79c2f}{Partition<...>::build\_from\_mapping}}(...);}
\DoxyCodeLine{\textcolor{keyword}{auto}\ mat\ =\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_a566c407ff14952d75e25c4b4e86cb870}{Matrix<...>::create}}(exec,\ comm);}
\DoxyCodeLine{mat-\/>read\_distributed(matrix\_data,\ part);}

\end{DoxyCode}
 or if different partitions for the rows and columns are used:\+ 
\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keyword}{auto}\ row\_part\ =\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Partition_ad17d1164a99bca5df2d2ec0eb5d79c2f}{Partition<...>::build\_from\_mapping}}(...);}
\DoxyCodeLine{\textcolor{keyword}{auto}\ col\_part\ =\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Partition_ad17d1164a99bca5df2d2ec0eb5d79c2f}{Partition<...>::build\_from\_mapping}}(...);}
\DoxyCodeLine{\textcolor{keyword}{auto}\ mat\ =\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_a566c407ff14952d75e25c4b4e86cb870}{Matrix<...>::create}}(exec,\ comm);}
\DoxyCodeLine{mat-\/>read\_distributed(matrix\_data,\ row\_part,\ col\_part);}

\end{DoxyCode}
 This will set the dimensions of the global and local matrices automatically by deducing the sizes from the partitions.

By default the \doxylink{classgko_1_1experimental_1_1distributed_1_1Matrix}{Matrix} type uses Csr for both stored matrices. It is possible to explicitly change the datatype for the stored matrices, with the constraint that the new type should implement the \doxylink{classgko_1_1LinOp}{Lin\+Op} and \doxylink{classgko_1_1ReadableFromMatrixData}{Readable\+From\+Matrix\+Data} interface. The type can be set by:\+ 
\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keyword}{auto}\ mat\ =\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_a566c407ff14952d75e25c4b4e86cb870}{Matrix<ValueType,\ LocalIndexType[,\ ...]>::create}}(}
\DoxyCodeLine{\ \ exec,\ comm,}
\DoxyCodeLine{\ \ Ell<ValueType,\ LocalIndexType>::create(exec).get(),}
\DoxyCodeLine{\ \ Coo<ValueType,\ LocalIndexType>::create(exec).get());}

\end{DoxyCode}
 Alternatively, the helper function with\+\_\+matrix\+\_\+type can be used:\+ 
\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keyword}{auto}\ mat\ =\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_a566c407ff14952d75e25c4b4e86cb870}{Matrix<ValueType,\ LocalIndexType>::create}}(}
\DoxyCodeLine{\ \ exec,\ comm,}
\DoxyCodeLine{\ \ \doxymbox{\hyperlink{namespacegko_a537803d962d07cf43e1e0cbc9f6a3f8b}{with\_matrix\_type<Ell>}}(),}
\DoxyCodeLine{\ \ \doxymbox{\hyperlink{namespacegko_a537803d962d07cf43e1e0cbc9f6a3f8b}{with\_matrix\_type<Coo>}}());}

\end{DoxyCode}
 \begin{DoxySeeAlso}{See also}
\doxylink{namespacegko_a537803d962d07cf43e1e0cbc9f6a3f8b}{with\+\_\+matrix\+\_\+type}
\end{DoxySeeAlso}
The \doxylink{classgko_1_1experimental_1_1distributed_1_1Matrix}{Matrix} \doxylink{classgko_1_1LinOp}{Lin\+Op} supports the following operations:\+ 
\begin{DoxyCode}{0}
\DoxyCodeLine{experimental::distributed::Matrix\ *A;\ \ \ \ \ \ \ \textcolor{comment}{//\ distributed\ matrix}}
\DoxyCodeLine{experimental::distributed::Vector\ *b,\ *x;\ \ \ \textcolor{comment}{//\ distributed\ multi-\/vectors}}
\DoxyCodeLine{matrix::Dense\ *alpha,\ *beta;\ \ \textcolor{comment}{//\ scalars\ of\ dimension\ 1x1}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{comment}{//\ Applying\ to\ distributed\ multi-\/vectors\ computes\ an\ SpMV/SpMM\ product}}
\DoxyCodeLine{A-\/>apply(b,\ x)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ x\ =\ A*b}}
\DoxyCodeLine{A-\/>apply(alpha,\ b,\ beta,\ x)\ \textcolor{comment}{//\ x\ =\ alpha*A*b\ +\ beta*x}}

\end{DoxyCode}



\begin{DoxyTemplParams}{Template Parameters}
{\em Value\+Type} & The underlying value type. \\
\hline
{\em Local\+Index\+Type} & The index type used by the local matrices. \\
\hline
{\em Global\+Index\+Type} & The type for global indices. \\
\hline
\end{DoxyTemplParams}


\label{doc-typedef-members}
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_doc-typedef-members}
\doxysubsection{Member Typedef Documentation}
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_a2fbdcf2c0a49e5a91b4fe6daa687ab3c}\index{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}!global\_vector\_type@{global\_vector\_type}}
\index{global\_vector\_type@{global\_vector\_type}!gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}}
\doxysubsubsection{\texorpdfstring{global\_vector\_type}{global\_vector\_type}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1distributed_1_1Matrix_a2fbdcf2c0a49e5a91b4fe6daa687ab3c} 
template$<$typename Value\+Type = default\+\_\+precision, typename Local\+Index\+Type = int32, typename Global\+Index\+Type = int64$>$ \\
using \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix}{gko::\+experimental::\+distributed::\+\+Matrix}}$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$::\+global\+\_\+vector\+\_\+type}

{\bfseries Initial value:\+}
\begin{DoxyCode}{0}
\DoxyCodeLine{}
\DoxyCodeLine{\doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector}{gko::experimental::distributed::Vector<ValueType>}}}

\end{DoxyCode}


\label{doc-constructors}
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_doc-constructors}
\doxysubsection{Constructor \& Destructor Documentation}
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}\index{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}!Matrix@{Matrix}}
\index{Matrix@{Matrix}!gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}}
\doxysubsubsection{\texorpdfstring{Matrix()}{Matrix()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037} 
template$<$typename Value\+Type = default\+\_\+precision, typename Local\+Index\+Type = int32, typename Global\+Index\+Type = int64$>$ \\
\doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix}{gko::\+experimental::\+distributed::\+\+Matrix}}$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$::\+\+Matrix (\begin{DoxyParamCaption}\item[{const Matrix$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$ \&}]{other}{}\end{DoxyParamCaption})}



Copy constructs a \doxylink{classgko_1_1experimental_1_1distributed_1_1Matrix}{Matrix}. 


\begin{DoxyParams}{Parameters}
{\em other} & \doxylink{classgko_1_1experimental_1_1distributed_1_1Matrix}{Matrix} to copy from. \\
\hline
\end{DoxyParams}


References \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix()}}.



Referenced by \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix()}}, \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_a0d91aaf63e48ced333e4d63f26a91f71}{Matrix()}}, \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ae885f80364ed6cc2997915691f0a5d74}{operator=()}}, and \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ae1c34aa1a2e26a83bbdb01a0b53ec5f4}{operator=()}}.

\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_a0d91aaf63e48ced333e4d63f26a91f71}\index{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}!Matrix@{Matrix}}
\index{Matrix@{Matrix}!gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}}
\doxysubsubsection{\texorpdfstring{Matrix()}{Matrix()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1distributed_1_1Matrix_a0d91aaf63e48ced333e4d63f26a91f71} 
template$<$typename Value\+Type = default\+\_\+precision, typename Local\+Index\+Type = int32, typename Global\+Index\+Type = int64$>$ \\
\doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix}{gko::\+experimental::\+distributed::\+\+Matrix}}$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$::\+\+Matrix (\begin{DoxyParamCaption}\item[{Matrix$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$ \&\&}]{other}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [noexcept]}}



Move constructs a \doxylink{classgko_1_1experimental_1_1distributed_1_1Matrix}{Matrix}. 


\begin{DoxyParams}{Parameters}
{\em other} & \doxylink{classgko_1_1experimental_1_1distributed_1_1Matrix}{Matrix} to move from. \\
\hline
\end{DoxyParams}


References \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix()}}.



\label{doc-func-members}
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_doc-func-members}
\doxysubsection{Member Function Documentation}
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_a4054a842c6914472f6ec8af1ea2e44be}\index{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}!col\_scale@{col\_scale}}
\index{col\_scale@{col\_scale}!gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}}
\doxysubsubsection{\texorpdfstring{col\_scale()}{col\_scale()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1distributed_1_1Matrix_a4054a842c6914472f6ec8af1ea2e44be} 
template$<$typename Value\+Type = default\+\_\+precision, typename Local\+Index\+Type = int32, typename Global\+Index\+Type = int64$>$ \\
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix}{gko::\+experimental::\+distributed::\+\+Matrix}}$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$::\+col\+\_\+scale (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const global\+\_\+vector\+\_\+type $>$}]{scaling\+\_\+factors}{}\end{DoxyParamCaption})}



Scales the columns of the matrix by the respective entries of the vector. 

The vector\textquotesingle{}s row partition has to be the same as the matrix\textquotesingle{}s column partition. The scaling is done in-\/place.


\begin{DoxyParams}{Parameters}
{\em scaling\+\_\+factors} & The vector containing the scaling factors. \\
\hline
\end{DoxyParams}
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_a566c407ff14952d75e25c4b4e86cb870}\index{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}!create@{create}}
\index{create@{create}!gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}}
\doxysubsubsection{\texorpdfstring{create()}{create()}\hspace{0.1cm}{\footnotesize\ttfamily [1/9]}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1distributed_1_1Matrix_a566c407ff14952d75e25c4b4e86cb870} 
template$<$typename Value\+Type = default\+\_\+precision, typename Local\+Index\+Type = int32, typename Global\+Index\+Type = int64$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix}{gko::\+experimental::\+distributed::\+\+Matrix}}$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$::\+create (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::\+communicator}}}]{comm}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Creates an empty distributed matrix. 


\begin{DoxyParams}{Parameters}
{\em exec} & \doxylink{classgko_1_1Executor}{Executor} associated with this matrix. \\
\hline
{\em comm} & Communicator associated with this matrix. The default is the MPI\+\_\+\+COMM\+\_\+\+WORLD.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A smart pointer to the newly created matrix. 
\end{DoxyReturn}


Referenced by \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ac721453a13127fcc78371de2215ac1d4}{create()}}, and \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ad9b7db16f5fa43b2a5d1e2a0e8e24c16}{create()}}.

\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_a9b6f26916e92b780d54859f2284b48fd}\index{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}!create@{create}}
\index{create@{create}!gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}}
\doxysubsubsection{\texorpdfstring{create()}{create()}\hspace{0.1cm}{\footnotesize\ttfamily [2/9]}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1distributed_1_1Matrix_a9b6f26916e92b780d54859f2284b48fd} 
template$<$typename Value\+Type = default\+\_\+precision, typename Local\+Index\+Type = int32, typename Global\+Index\+Type = int64$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix}{gko::\+experimental::\+distributed::\+\+Matrix}}$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$::\+create (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::\+communicator}}}]{comm}{, }\item[{\doxymbox{\hyperlink{structgko_1_1dim}{dim}}$<$ 2 $>$}]{size}{, }\item[{std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$}]{local\+\_\+linop}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Creates a local-\/only distributed matrix with existent \doxylink{classgko_1_1LinOp}{Lin\+Op}. 

\begin{DoxyNote}{Note}
It use the input to build up the distributed matrix
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em exec} & \doxylink{classgko_1_1Executor}{Executor} associated with this matrix. \\
\hline
{\em comm} & Communicator associated with this matrix. \\
\hline
{\em size} & the global size \\
\hline
{\em local\+\_\+linop} & the local linop\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A smart pointer to the newly created matrix. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_aa0128c0f0bfded6660279d217c70cbd5}\index{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}!create@{create}}
\index{create@{create}!gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}}
\doxysubsubsection{\texorpdfstring{create()}{create()}\hspace{0.1cm}{\footnotesize\ttfamily [3/9]}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1distributed_1_1Matrix_aa0128c0f0bfded6660279d217c70cbd5} 
template$<$typename Value\+Type = default\+\_\+precision, typename Local\+Index\+Type = int32, typename Global\+Index\+Type = int64$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix}{gko::\+experimental::\+distributed::\+\+Matrix}}$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$::\+create (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::\+communicator}}}]{comm}{, }\item[{\doxymbox{\hyperlink{structgko_1_1dim}{dim}}$<$ 2 $>$}]{size}{, }\item[{std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$}]{local\+\_\+linop}{, }\item[{std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$}]{non\+\_\+local\+\_\+linop}{, }\item[{std::\+vector$<$ \doxymbox{\hyperlink{namespacegko_1_1experimental_1_1mpi_a13b7760affb031fee59d385754eaaffb}{comm\+\_\+index\+\_\+type}} $>$}]{recv\+\_\+sizes}{, }\item[{std::\+vector$<$ \doxymbox{\hyperlink{namespacegko_1_1experimental_1_1mpi_a13b7760affb031fee59d385754eaaffb}{comm\+\_\+index\+\_\+type}} $>$}]{recv\+\_\+offsets}{, }\item[{\doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ local\+\_\+index\+\_\+type $>$}]{recv\+\_\+gather\+\_\+idxs}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Creates distributed matrix with existent local and non-\/local \doxylink{classgko_1_1LinOp}{Lin\+Op} and the corresponding mapping to collect the non-\/local data from the other ranks. 

\begin{DoxyNote}{Note}
It use the input to build up the distributed matrix
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em exec} & \doxylink{classgko_1_1Executor}{Executor} associated with this matrix. \\
\hline
{\em comm} & Communicator associated with this matrix. \\
\hline
{\em size} & the global size \\
\hline
{\em local\+\_\+linop} & the local linop \\
\hline
{\em non\+\_\+local\+\_\+linop} & the non-\/local linop \\
\hline
{\em recv\+\_\+sizes} & the size of non-\/local receiver \\
\hline
{\em recv\+\_\+offsets} & the offset of non-\/local receiver \\
\hline
{\em recv\+\_\+gather\+\_\+idxs} & the gathering index of non-\/local receiver\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A smart pointer to the newly created matrix. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_a14efe7ed214c9be7fa957bcdfe37f2b3}\index{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}!create@{create}}
\index{create@{create}!gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}}
\doxysubsubsection{\texorpdfstring{create()}{create()}\hspace{0.1cm}{\footnotesize\ttfamily [4/9]}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1distributed_1_1Matrix_a14efe7ed214c9be7fa957bcdfe37f2b3} 
template$<$typename Value\+Type = default\+\_\+precision, typename Local\+Index\+Type = int32, typename Global\+Index\+Type = int64$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix}{gko::\+experimental::\+distributed::\+\+Matrix}}$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$::\+create (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::\+communicator}}}]{comm}{, }\item[{\doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1index__map}{index\+\_\+map}}$<$ local\+\_\+index\+\_\+type, global\+\_\+index\+\_\+type $>$}]{imap}{, }\item[{std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$}]{local\+\_\+linop}{, }\item[{std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$}]{non\+\_\+local\+\_\+linop}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Creates distributed matrix with existent local and non-\/local \doxylink{classgko_1_1LinOp}{Lin\+Op} and the corresponding mapping to collect the non-\/local data from the other ranks. 


\begin{DoxyParams}{Parameters}
{\em exec} & \doxylink{classgko_1_1Executor}{Executor} associated with this matrix. \\
\hline
{\em comm} & Communicator associated with this matrix. \\
\hline
{\em imap} & The index map to define the communication pattern \\
\hline
{\em local\+\_\+linop} & the local linop \\
\hline
{\em non\+\_\+local\+\_\+linop} & the non-\/local linop\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A smart pointer to the newly created matrix. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_ac721453a13127fcc78371de2215ac1d4}\index{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}!create@{create}}
\index{create@{create}!gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}}
\doxysubsubsection{\texorpdfstring{create()}{create()}\hspace{0.1cm}{\footnotesize\ttfamily [5/9]}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1distributed_1_1Matrix_ac721453a13127fcc78371de2215ac1d4} 
template$<$typename Value\+Type = default\+\_\+precision, typename Local\+Index\+Type = int32, typename Global\+Index\+Type = int64$>$ \\
template$<$typename Local\+Matrix\+Type, typename Non\+Local\+Matrix\+Type, typename = std::\+enable\+\_\+if\+\_\+t$<$                  gko::\+detail::\+is\+\_\+matrix\+\_\+type\+\_\+builder$<$                      Local\+Matrix\+Type, Value\+Type, Local\+Index\+Type$>$::\+value \&\&                  gko::\+detail::\+is\+\_\+matrix\+\_\+type\+\_\+builder$<$                      Non\+Local\+Matrix\+Type, Value\+Type, Local\+Index\+Type$>$::\+value$>$$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix}{gko::\+experimental::\+distributed::\+\+Matrix}}$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$::\+create (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::\+communicator}}}]{comm}{, }\item[{Local\+Matrix\+Type}]{local\+\_\+matrix\+\_\+template}{, }\item[{Non\+Local\+Matrix\+Type}]{non\+\_\+local\+\_\+matrix\+\_\+template}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Creates an empty distributed matrix with specified types for the local matrix and the non-\/local matrix. 

\begin{DoxyNote}{Note}
This is mainly a convenience wrapper for Matrix(std::\+shared\+\_\+ptr$<$const Executor$>$, mpi::\+communicator,       const Lin\+Op\texorpdfstring{$\ast$}{*}, const Lin\+Op\texorpdfstring{$\ast$}{*})
\end{DoxyNote}

\begin{DoxyTemplParams}{Template Parameters}
{\em Local\+Matrix\+Type} & A type that has a {\ttfamily \doxylink{classgko_1_1experimental_1_1distributed_1_1Matrix_a566c407ff14952d75e25c4b4e86cb870}{create}\texorpdfstring{$<$}{<}Value\+Type, Index\+Type\texorpdfstring{$>$}{>}(exec)} function to create a smart pointer of a type derived from \doxylink{classgko_1_1LinOp}{Lin\+Op} and \doxylink{classgko_1_1ReadableFromMatrixData}{Readable\+From\+Matrix\+Data}. \\
\hline
\end{DoxyTemplParams}
\begin{DoxySeeAlso}{See also}
\doxylink{namespacegko_a537803d962d07cf43e1e0cbc9f6a3f8b}{with\+\_\+matrix\+\_\+type} 
\end{DoxySeeAlso}

\begin{DoxyTemplParams}{Template Parameters}
{\em Non\+Local\+Matrix\+Type} & A (possible different) type with the same constraints as Local\+Matrix\+Type.\\
\hline
\end{DoxyTemplParams}

\begin{DoxyParams}{Parameters}
{\em exec} & \doxylink{classgko_1_1Executor}{Executor} associated with this matrix. \\
\hline
{\em comm} & Communicator associated with this matrix. \\
\hline
{\em local\+\_\+matrix\+\_\+template} & the local matrix will be constructed with the same type as {\ttfamily \doxylink{classgko_1_1experimental_1_1distributed_1_1Matrix_a566c407ff14952d75e25c4b4e86cb870}{create}} returns. It should be the return value of make\+\_\+matrix\+\_\+template. \\
\hline
{\em non\+\_\+local\+\_\+matrix\+\_\+template} & the non-\/local matrix will be constructed with the same type as {\ttfamily \doxylink{classgko_1_1experimental_1_1distributed_1_1Matrix_a566c407ff14952d75e25c4b4e86cb870}{create}} returns. It should be the return value of make\+\_\+matrix\+\_\+template.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A smart pointer to the newly created matrix. 
\end{DoxyReturn}


References \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_a566c407ff14952d75e25c4b4e86cb870}{create()}}.

\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_ad9b7db16f5fa43b2a5d1e2a0e8e24c16}\index{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}!create@{create}}
\index{create@{create}!gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}}
\doxysubsubsection{\texorpdfstring{create()}{create()}\hspace{0.1cm}{\footnotesize\ttfamily [6/9]}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1distributed_1_1Matrix_ad9b7db16f5fa43b2a5d1e2a0e8e24c16} 
template$<$typename Value\+Type = default\+\_\+precision, typename Local\+Index\+Type = int32, typename Global\+Index\+Type = int64$>$ \\
template$<$typename Matrix\+Type, typename = std::\+enable\+\_\+if\+\_\+t$<$gko::\+detail::\+is\+\_\+matrix\+\_\+type\+\_\+builder$<$                  Matrix\+Type, Value\+Type, Local\+Index\+Type$>$::\+value$>$$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix}{gko::\+experimental::\+distributed::\+\+Matrix}}$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$::\+create (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::\+communicator}}}]{comm}{, }\item[{Matrix\+Type}]{matrix\+\_\+template}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Creates an empty distributed matrix with specified type for local matrices. 

\begin{DoxyNote}{Note}
This is mainly a convenience wrapper for Matrix(std::\+shared\+\_\+ptr$<$const Executor$>$, mpi::\+communicator, const       Lin\+Op\texorpdfstring{$\ast$}{*})
\end{DoxyNote}

\begin{DoxyTemplParams}{Template Parameters}
{\em Matrix\+Type} & A type that has a {\ttfamily \doxylink{classgko_1_1experimental_1_1distributed_1_1Matrix_a566c407ff14952d75e25c4b4e86cb870}{create}\texorpdfstring{$<$}{<}Value\+Type, Index\+Type\texorpdfstring{$>$}{>}(exec)} function to create a smart pointer of a type derived from \doxylink{classgko_1_1LinOp}{Lin\+Op} and \doxylink{classgko_1_1ReadableFromMatrixData}{Readable\+From\+Matrix\+Data}. \\
\hline
\end{DoxyTemplParams}
\begin{DoxySeeAlso}{See also}
\doxylink{namespacegko_a537803d962d07cf43e1e0cbc9f6a3f8b}{with\+\_\+matrix\+\_\+type} 
\end{DoxySeeAlso}

\begin{DoxyParams}{Parameters}
{\em exec} & \doxylink{classgko_1_1Executor}{Executor} associated with this matrix. \\
\hline
{\em comm} & Communicator associated with this matrix. \\
\hline
{\em matrix\+\_\+template} & the local matrices will be constructed with the same type as {\ttfamily \doxylink{classgko_1_1experimental_1_1distributed_1_1Matrix_a566c407ff14952d75e25c4b4e86cb870}{create}} returns. It should be the return value of make\+\_\+matrix\+\_\+template.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A smart pointer to the newly created matrix. 
\end{DoxyReturn}


References \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_a566c407ff14952d75e25c4b4e86cb870}{create()}}.

\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_a39176cd542182e7cda0ef21cb1b21deb}\index{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}!create@{create}}
\index{create@{create}!gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}}
\doxysubsubsection{\texorpdfstring{create()}{create()}\hspace{0.1cm}{\footnotesize\ttfamily [7/9]}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1distributed_1_1Matrix_a39176cd542182e7cda0ef21cb1b21deb} 
template$<$typename Value\+Type = default\+\_\+precision, typename Local\+Index\+Type = int32, typename Global\+Index\+Type = int64$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix}{gko::\+experimental::\+distributed::\+\+Matrix}}$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$::\+create (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::\+communicator}}}]{comm}{, }\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$}]{local\+\_\+matrix\+\_\+template}{, }\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$}]{non\+\_\+local\+\_\+matrix\+\_\+template}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Creates an empty distributed matrix with specified types for the local matrix and the non-\/local matrix. 

\begin{DoxyNote}{Note}
It internally clones the passed in local\+\_\+matrix\+\_\+template and non\+\_\+local\+\_\+matrix\+\_\+template. Therefore, those Lin\+Ops should be empty.
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em exec} & \doxylink{classgko_1_1Executor}{Executor} associated with this matrix. \\
\hline
{\em comm} & Communicator associated with this matrix. \\
\hline
{\em local\+\_\+matrix\+\_\+template} & the local matrix will be constructed with the same runtime type. \\
\hline
{\em non\+\_\+local\+\_\+matrix\+\_\+template} & the non-\/local matrix will be constructed with the same runtime type.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A smart pointer to the newly created matrix. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_ae9a7a61467f6a08964880323ef216434}\index{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}!create@{create}}
\index{create@{create}!gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}}
\doxysubsubsection{\texorpdfstring{create()}{create()}\hspace{0.1cm}{\footnotesize\ttfamily [8/9]}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1distributed_1_1Matrix_ae9a7a61467f6a08964880323ef216434} 
template$<$typename Value\+Type = default\+\_\+precision, typename Local\+Index\+Type = int32, typename Global\+Index\+Type = int64$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix}{gko::\+experimental::\+distributed::\+\+Matrix}}$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$::\+create (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{\doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::\+communicator}}}]{comm}{, }\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$}]{matrix\+\_\+template}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Creates an empty distributed matrix with specified type for local matrices. 

\begin{DoxyNote}{Note}
It internally clones the passed in matrix\+\_\+template. Therefore, the \doxylink{classgko_1_1LinOp}{Lin\+Op} should be empty.
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em exec} & \doxylink{classgko_1_1Executor}{Executor} associated with this matrix. \\
\hline
{\em comm} & Communicator associated with this matrix. \\
\hline
{\em matrix\+\_\+template} & the local matrices will be constructed with the same runtime type.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A smart pointer to the newly created matrix. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_a93b168355a1b148c87fdbcdfd195e4ff}\index{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}!create@{create}}
\index{create@{create}!gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}}
\doxysubsubsection{\texorpdfstring{create()}{create()}\hspace{0.1cm}{\footnotesize\ttfamily [9/9]}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1distributed_1_1Matrix_a93b168355a1b148c87fdbcdfd195e4ff} 
template$<$typename Value\+Type = default\+\_\+precision, typename Local\+Index\+Type = int32, typename Global\+Index\+Type = int64$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix}{gko::\+experimental::\+distributed::\+\+Matrix}}$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$::\+create (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1RowGatherer}{Row\+Gatherer}}$<$ Local\+Index\+Type $>$ $>$}]{row\+\_\+gatherer\+\_\+template}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Creates an empty distributed matrix with a specified implementation of the row gather operation. 


\begin{DoxyParams}{Parameters}
{\em exec} & \doxylink{classgko_1_1Executor}{Executor} associated with this matrix. \\
\hline
{\em row\+\_\+gatherer\+\_\+template} & A template for the used row gather operation. This is only used to create a new row gatherer during the read\+\_\+distributed.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A smart pointer to the newly created matrix. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_a4374c5ac0f79f3a3ba4fb33381036e6a}\index{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}!get\_local\_matrix@{get\_local\_matrix}}
\index{get\_local\_matrix@{get\_local\_matrix}!gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_local\_matrix()}{get\_local\_matrix()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1distributed_1_1Matrix_a4374c5ac0f79f3a3ba4fb33381036e6a} 
template$<$typename Value\+Type = default\+\_\+precision, typename Local\+Index\+Type = int32, typename Global\+Index\+Type = int64$>$ \\
std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix}{gko::\+experimental::\+distributed::\+\+Matrix}}$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$::\+get\+\_\+local\+\_\+matrix (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Get read access to the stored local matrix. 

\begin{DoxyReturn}{Returns}
Shared pointer to the stored local matrix 
\end{DoxyReturn}
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_a01b3972a66f0f0b3139a9473e39ff8a7}\index{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}!get\_non\_local\_matrix@{get\_non\_local\_matrix}}
\index{get\_non\_local\_matrix@{get\_non\_local\_matrix}!gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_non\_local\_matrix()}{get\_non\_local\_matrix()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1distributed_1_1Matrix_a01b3972a66f0f0b3139a9473e39ff8a7} 
template$<$typename Value\+Type = default\+\_\+precision, typename Local\+Index\+Type = int32, typename Global\+Index\+Type = int64$>$ \\
std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix}{gko::\+experimental::\+distributed::\+\+Matrix}}$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$::\+get\+\_\+non\+\_\+local\+\_\+matrix (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Get read access to the stored non-\/local matrix. 

\begin{DoxyReturn}{Returns}
Shared pointer to the stored non-\/local matrix 
\end{DoxyReturn}
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_ae885f80364ed6cc2997915691f0a5d74}\index{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}!operator=@{operator=}}
\index{operator=@{operator=}!gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}}
\doxysubsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1distributed_1_1Matrix_ae885f80364ed6cc2997915691f0a5d74} 
template$<$typename Value\+Type = default\+\_\+precision, typename Local\+Index\+Type = int32, typename Global\+Index\+Type = int64$>$ \\
\doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} \& \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix}{gko::\+experimental::\+distributed::\+\+Matrix}}$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$::\+operator= (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}}$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$ \&}]{other}{}\end{DoxyParamCaption})}



Copy assigns a \doxylink{classgko_1_1experimental_1_1distributed_1_1Matrix}{Matrix}. 


\begin{DoxyParams}{Parameters}
{\em other} & \doxylink{classgko_1_1experimental_1_1distributed_1_1Matrix}{Matrix} to copy from, has to have a communicator of the same size as this.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
this. 
\end{DoxyReturn}


References \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix()}}.

\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_ae1c34aa1a2e26a83bbdb01a0b53ec5f4}\index{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}!operator=@{operator=}}
\index{operator=@{operator=}!gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}}
\doxysubsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1distributed_1_1Matrix_ae1c34aa1a2e26a83bbdb01a0b53ec5f4} 
template$<$typename Value\+Type = default\+\_\+precision, typename Local\+Index\+Type = int32, typename Global\+Index\+Type = int64$>$ \\
\doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}} \& \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix}{gko::\+experimental::\+distributed::\+\+Matrix}}$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$::\+operator= (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix}}$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$ \&\&}]{other}{}\end{DoxyParamCaption})}



Move assigns a \doxylink{classgko_1_1experimental_1_1distributed_1_1Matrix}{Matrix}. 


\begin{DoxyParams}{Parameters}
{\em other} & \doxylink{classgko_1_1experimental_1_1distributed_1_1Matrix}{Matrix} to move from, has to have a communicator of the same size as this.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
this. 
\end{DoxyReturn}


References \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix_ab6c64195b6d62cab3ac641668884e037}{Matrix()}}.

\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_aac99e854ec33cee5947041acdf0f1a19}\index{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}!read\_distributed@{read\_distributed}}
\index{read\_distributed@{read\_distributed}!gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}}
\doxysubsubsection{\texorpdfstring{read\_distributed()}{read\_distributed()}\hspace{0.1cm}{\footnotesize\ttfamily [1/4]}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1distributed_1_1Matrix_aac99e854ec33cee5947041acdf0f1a19} 
template$<$typename Value\+Type = default\+\_\+precision, typename Local\+Index\+Type = int32, typename Global\+Index\+Type = int64$>$ \\
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix}{gko::\+experimental::\+distributed::\+\+Matrix}}$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$::\+read\+\_\+distributed (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1device__matrix__data}{device\+\_\+matrix\+\_\+data}}$<$ value\+\_\+type, global\+\_\+index\+\_\+type $>$ \&}]{data}{, }\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Partition}{Partition}}$<$ local\+\_\+index\+\_\+type, global\+\_\+index\+\_\+type $>$ $>$}]{partition}{, }\item[{\doxymbox{\hyperlink{namespacegko_1_1experimental_1_1distributed_a4b66bc2bbe95fe0a818a5f4423acbb4e}{assembly\+\_\+mode}}}]{assembly\+\_\+type}{ = {\ttfamily assembly\+\_\+mode:\+:\+local\+\_\+only}}\end{DoxyParamCaption})}



Reads a square matrix from the \doxylink{classgko_1_1device__matrix__data}{device\+\_\+matrix\+\_\+data} structure and a global partition. 

The global size of the final matrix is inferred from the size of the partition. Both the number of rows and columns of the \doxylink{classgko_1_1device__matrix__data}{device\+\_\+matrix\+\_\+data} are ignored.

\begin{DoxyNote}{Note}
The matrix data can contain entries for rows other than those owned by the process. Entries for those rows are discarded.
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em data} & The \doxylink{classgko_1_1device__matrix__data}{device\+\_\+matrix\+\_\+data} structure. \\
\hline
{\em partition} & The global row and column partition. \\
\hline
{\em x} & The mode of assembly.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the \doxylink{classgko_1_1experimental_1_1distributed_1_1index__map}{index\+\_\+map} induced by the partitions and the matrix structure 
\end{DoxyReturn}
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_a562825d88245f1a31b27d92e1c763399}\index{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}!read\_distributed@{read\_distributed}}
\index{read\_distributed@{read\_distributed}!gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}}
\doxysubsubsection{\texorpdfstring{read\_distributed()}{read\_distributed()}\hspace{0.1cm}{\footnotesize\ttfamily [2/4]}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1distributed_1_1Matrix_a562825d88245f1a31b27d92e1c763399} 
template$<$typename Value\+Type = default\+\_\+precision, typename Local\+Index\+Type = int32, typename Global\+Index\+Type = int64$>$ \\
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix}{gko::\+experimental::\+distributed::\+\+Matrix}}$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$::\+read\+\_\+distributed (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1device__matrix__data}{device\+\_\+matrix\+\_\+data}}$<$ value\+\_\+type, global\+\_\+index\+\_\+type $>$ \&}]{data}{, }\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Partition}{Partition}}$<$ local\+\_\+index\+\_\+type, global\+\_\+index\+\_\+type $>$ $>$}]{row\+\_\+partition}{, }\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Partition}{Partition}}$<$ local\+\_\+index\+\_\+type, global\+\_\+index\+\_\+type $>$ $>$}]{col\+\_\+partition}{, }\item[{\doxymbox{\hyperlink{namespacegko_1_1experimental_1_1distributed_a4b66bc2bbe95fe0a818a5f4423acbb4e}{assembly\+\_\+mode}}}]{assembly\+\_\+type}{ = {\ttfamily assembly\+\_\+mode:\+:\+local\+\_\+only}}\end{DoxyParamCaption})}



Reads a matrix from the \doxylink{classgko_1_1device__matrix__data}{device\+\_\+matrix\+\_\+data} structure, a global row partition, and a global column partition. 

The global size of the final matrix is inferred from the size of the row partition and the size of the column partition. Both the number of rows and columns of the \doxylink{classgko_1_1device__matrix__data}{device\+\_\+matrix\+\_\+data} are ignored.

\begin{DoxyNote}{Note}
The matrix data can contain entries for rows other than those owned by the process. Entries for those rows are discarded.
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em data} & The \doxylink{classgko_1_1device__matrix__data}{device\+\_\+matrix\+\_\+data} structure. \\
\hline
{\em row\+\_\+partition} & The global row partition. \\
\hline
{\em col\+\_\+partition} & The global col partition. \\
\hline
{\em assembly\+\_\+type} & The mode of assembly.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the \doxylink{classgko_1_1experimental_1_1distributed_1_1index__map}{index\+\_\+map} induced by the partitions and the matrix structure 
\end{DoxyReturn}
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_a6d923b0ccaebc489c5a52342c70f2724}\index{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}!read\_distributed@{read\_distributed}}
\index{read\_distributed@{read\_distributed}!gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}}
\doxysubsubsection{\texorpdfstring{read\_distributed()}{read\_distributed()}\hspace{0.1cm}{\footnotesize\ttfamily [3/4]}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1distributed_1_1Matrix_a6d923b0ccaebc489c5a52342c70f2724} 
template$<$typename Value\+Type = default\+\_\+precision, typename Local\+Index\+Type = int32, typename Global\+Index\+Type = int64$>$ \\
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix}{gko::\+experimental::\+distributed::\+\+Matrix}}$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$::\+read\+\_\+distributed (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\+\_\+data}}$<$ value\+\_\+type, global\+\_\+index\+\_\+type $>$ \&}]{data}{, }\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Partition}{Partition}}$<$ local\+\_\+index\+\_\+type, global\+\_\+index\+\_\+type $>$ $>$}]{partition}{, }\item[{\doxymbox{\hyperlink{namespacegko_1_1experimental_1_1distributed_a4b66bc2bbe95fe0a818a5f4423acbb4e}{assembly\+\_\+mode}}}]{assembly\+\_\+type}{ = {\ttfamily assembly\+\_\+mode:\+:\+local\+\_\+only}}\end{DoxyParamCaption})}



Reads a square matrix from the \doxylink{structgko_1_1matrix__data}{matrix\+\_\+data} structure and a global partition. 

\begin{DoxySeeAlso}{See also}
\doxylink{classgko_1_1experimental_1_1distributed_1_1Matrix_aac99e854ec33cee5947041acdf0f1a19}{read\+\_\+distributed}
\end{DoxySeeAlso}
\begin{DoxyNote}{Note}
For efficiency it is advised to use the \doxylink{classgko_1_1device__matrix__data}{device\+\_\+matrix\+\_\+data} overload. 
\end{DoxyNote}
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_a37b00941e52ca19c3bbaa6c9f8f7bf3d}\index{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}!read\_distributed@{read\_distributed}}
\index{read\_distributed@{read\_distributed}!gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}}
\doxysubsubsection{\texorpdfstring{read\_distributed()}{read\_distributed()}\hspace{0.1cm}{\footnotesize\ttfamily [4/4]}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1distributed_1_1Matrix_a37b00941e52ca19c3bbaa6c9f8f7bf3d} 
template$<$typename Value\+Type = default\+\_\+precision, typename Local\+Index\+Type = int32, typename Global\+Index\+Type = int64$>$ \\
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix}{gko::\+experimental::\+distributed::\+\+Matrix}}$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$::\+read\+\_\+distributed (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\+\_\+data}}$<$ value\+\_\+type, global\+\_\+index\+\_\+type $>$ \&}]{data}{, }\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Partition}{Partition}}$<$ local\+\_\+index\+\_\+type, global\+\_\+index\+\_\+type $>$ $>$}]{row\+\_\+partition}{, }\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Partition}{Partition}}$<$ local\+\_\+index\+\_\+type, global\+\_\+index\+\_\+type $>$ $>$}]{col\+\_\+partition}{, }\item[{\doxymbox{\hyperlink{namespacegko_1_1experimental_1_1distributed_a4b66bc2bbe95fe0a818a5f4423acbb4e}{assembly\+\_\+mode}}}]{assembly\+\_\+type}{ = {\ttfamily assembly\+\_\+mode:\+:\+local\+\_\+only}}\end{DoxyParamCaption})}



Reads a matrix from the \doxylink{structgko_1_1matrix__data}{matrix\+\_\+data} structure, a global row partition, and a global column partition. 

\begin{DoxySeeAlso}{See also}
\doxylink{classgko_1_1experimental_1_1distributed_1_1Matrix_aac99e854ec33cee5947041acdf0f1a19}{read\+\_\+distributed}
\end{DoxySeeAlso}
\begin{DoxyNote}{Note}
For efficiency it is advised to use the \doxylink{classgko_1_1device__matrix__data}{device\+\_\+matrix\+\_\+data} overload. 
\end{DoxyNote}
\Hypertarget{classgko_1_1experimental_1_1distributed_1_1Matrix_a7f9d815d3c67029267e3cb4b2b7da327}\index{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}!row\_scale@{row\_scale}}
\index{row\_scale@{row\_scale}!gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$@{gko::experimental::distributed::Matrix$<$ ValueType, LocalIndexType, GlobalIndexType $>$}}
\doxysubsubsection{\texorpdfstring{row\_scale()}{row\_scale()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1distributed_1_1Matrix_a7f9d815d3c67029267e3cb4b2b7da327} 
template$<$typename Value\+Type = default\+\_\+precision, typename Local\+Index\+Type = int32, typename Global\+Index\+Type = int64$>$ \\
void \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Matrix}{gko::\+experimental::\+distributed::\+\+Matrix}}$<$ Value\+Type, Local\+Index\+Type, Global\+Index\+Type $>$::\+row\+\_\+scale (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const global\+\_\+vector\+\_\+type $>$}]{scaling\+\_\+factors}{}\end{DoxyParamCaption})}



Scales the rows of the matrix by the respective entries of the vector. 

The vector and the matrix have to have the same row partition. The scaling is done in-\/place.


\begin{DoxyParams}{Parameters}
{\em scaling\+\_\+factors} & The vector containing the scaling factors. \\
\hline
\end{DoxyParams}


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