\doxysection{gko::\+matrix::\+Csr\texorpdfstring{$<$}{<} Value\+Type, Index\+Type \texorpdfstring{$>$}{>} Class Template Reference}
\hypertarget{classgko_1_1matrix_1_1Csr}{}\label{classgko_1_1matrix_1_1Csr}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}


CSR is a matrix format which stores only the nonzero coefficients by compressing each row of the matrix (compressed sparse row format).  




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



Inheritance diagram for gko::\+matrix::\+Csr\texorpdfstring{$<$}{<} Value\+Type, Index\+Type \texorpdfstring{$>$}{>}:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classgko_1_1matrix_1_1Csr__inherit__graph}
\end{center}
\end{figure}


Collaboration diagram for gko::\+matrix::\+Csr\texorpdfstring{$<$}{<} Value\+Type, Index\+Type \texorpdfstring{$>$}{>}:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classgko_1_1matrix_1_1Csr__coll__graph}
\end{center}
\end{figure}
\doxysubsubsection*{Classes}
\begin{DoxyCompactItemize}
\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1strategy__type}{strategy\+\_\+type}}
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1matrix_1_1Csr_1_1strategy__type}{strategy\+\_\+type} is to decide how to set the csr algorithm. \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1classical}{classical}}
\begin{DoxyCompactList}\small\item\em classical is a \doxylink{classgko_1_1matrix_1_1Csr_1_1strategy__type}{strategy\+\_\+type} which uses the same number of threads on each row. \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1merge__path}{merge\+\_\+path}}
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1matrix_1_1Csr_1_1merge__path}{merge\+\_\+path} is a \doxylink{classgko_1_1matrix_1_1Csr_1_1strategy__type}{strategy\+\_\+type} which uses the \doxylink{classgko_1_1matrix_1_1Csr_1_1merge__path}{merge\+\_\+path} algorithm. \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1cusparse}{cusparse}}
\begin{DoxyCompactList}\small\item\em cusparse is a \doxylink{classgko_1_1matrix_1_1Csr_1_1strategy__type}{strategy\+\_\+type} which uses the sparselib csr. \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1sparselib}{sparselib}}
\begin{DoxyCompactList}\small\item\em sparselib is a \doxylink{classgko_1_1matrix_1_1Csr_1_1strategy__type}{strategy\+\_\+type} which uses the sparselib csr. \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1load__balance}{load\+\_\+balance}}
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1matrix_1_1Csr_1_1load__balance}{load\+\_\+balance} is a \doxylink{classgko_1_1matrix_1_1Csr_1_1strategy__type}{strategy\+\_\+type} which uses the load balance algorithm. \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1automatical}{automatical}}
\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1multiply__reuse__info}{multiply\+\_\+reuse\+\_\+info}}
\begin{DoxyCompactList}\small\item\em Class describing the internal lookup structures created by multiply\+\_\+reuse(const Csr\texorpdfstring{$\ast$}{*}) to recompute a sparse matrix-\/matrix product with updated values. \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1multiply__add__reuse__info}{multiply\+\_\+add\+\_\+reuse\+\_\+info}}
\begin{DoxyCompactList}\small\item\em Class describing the internal lookup structures created by multiply\+\_\+add\+\_\+reuse to recompute a sparse matrix-\/matrix product with updated values. \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1scale__add__reuse__info}{scale\+\_\+add\+\_\+reuse\+\_\+info}}
\begin{DoxyCompactList}\small\item\em Class describing the internal lookup structures created by scale\+\_\+add\+\_\+reuse to recompute a sparse matrix-\/matrix sum with updated values. \end{DoxyCompactList}\item 
struct \doxymbox{\hyperlink{structgko_1_1matrix_1_1Csr_1_1permuting__reuse__info}{permuting\+\_\+reuse\+\_\+info}}
\begin{DoxyCompactList}\small\item\em A struct describing a transformation of the matrix that reorders the values of the matrix into the transformed matrix. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_ae9e0b5332427a9a5a782aab4b6e2b60e}\label{classgko_1_1matrix_1_1Csr_ae9e0b5332427a9a5a782aab4b6e2b60e} 
using {\bfseries value\+\_\+type} = Value\+Type
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a47f9c8f2945fc5d50e1eac99a9511174}\label{classgko_1_1matrix_1_1Csr_a47f9c8f2945fc5d50e1eac99a9511174} 
using {\bfseries index\+\_\+type} = Index\+Type
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_add0fa016ce0df75c27fab7b0eec424fc}\label{classgko_1_1matrix_1_1Csr_add0fa016ce0df75c27fab7b0eec424fc} 
using {\bfseries transposed\+\_\+type} = \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}}$<$Value\+Type, Index\+Type$>$
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a4aeffed616fb42844161bd176f588785}\label{classgko_1_1matrix_1_1Csr_a4aeffed616fb42844161bd176f588785} 
using {\bfseries mat\+\_\+data} = \doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\+\_\+data}}$<$Value\+Type, Index\+Type$>$
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a7ce33427fefa7abdc8bb7ae05e08a68a}\label{classgko_1_1matrix_1_1Csr_a7ce33427fefa7abdc8bb7ae05e08a68a} 
using {\bfseries device\+\_\+mat\+\_\+data} = \doxymbox{\hyperlink{classgko_1_1device__matrix__data}{device\+\_\+matrix\+\_\+data}}$<$Value\+Type, Index\+Type$>$
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a6e535707a953fc66bbc22e52f044682a}\label{classgko_1_1matrix_1_1Csr_a6e535707a953fc66bbc22e52f044682a} 
using {\bfseries absolute\+\_\+type} = \doxymbox{\hyperlink{namespacegko_a107302a750bfa82a2107c77293f791c9}{remove\+\_\+complex}}$<$\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}}$>$
\end{DoxyCompactItemize}
\doxysubsection*{Public Types inherited from \doxymbox{\hyperlink{classgko_1_1EnablePolymorphicAssignment}{gko::\+\+Enable\+Polymorphic\+Assignment$<$ Csr$<$ default\+\_\+precision, int32 $>$ $>$}}}
\begin{DoxyCompactItemize}
\item 
using {\bfseries result\+\_\+type}
\end{DoxyCompactItemize}
\doxysubsection*{Public Types inherited from \doxymbox{\hyperlink{classgko_1_1DiagonalExtractable}{gko::\+\+Diagonal\+Extractable$<$ default\+\_\+precision $>$}}}
\begin{DoxyCompactItemize}
\item 
using {\bfseries value\+\_\+type}
\end{DoxyCompactItemize}
\doxysubsection*{Public Types inherited from \doxymbox{\hyperlink{classgko_1_1ReadableFromMatrixData}{gko::\+\+Readable\+From\+Matrix\+Data$<$ default\+\_\+precision, int32 $>$}}}
\begin{DoxyCompactItemize}
\item 
using {\bfseries value\+\_\+type}
\item 
using {\bfseries index\+\_\+type}
\end{DoxyCompactItemize}
\doxysubsection*{Public Types inherited from \doxymbox{\hyperlink{classgko_1_1WritableToMatrixData}{gko::\+\+Writable\+To\+Matrix\+Data$<$ default\+\_\+precision, int32 $>$}}}
\begin{DoxyCompactItemize}
\item 
using {\bfseries value\+\_\+type}
\item 
using {\bfseries index\+\_\+type}
\end{DoxyCompactItemize}
\doxysubsection*{Public Types inherited from \doxymbox{\hyperlink{classgko_1_1EnableAbsoluteComputation}{gko::\+\+Enable\+Absolute\+Computation$<$ remove\+\_\+complex$<$ Csr$<$ default\+\_\+precision, int32 $>$ $>$ $>$}}}
\begin{DoxyCompactItemize}
\item 
using {\bfseries absolute\+\_\+type}
\end{DoxyCompactItemize}
\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a4aeeff85e9228109fca34a397141a6f6}\label{classgko_1_1matrix_1_1Csr_a4aeeff85e9228109fca34a397141a6f6} 
void {\bfseries convert\+\_\+to} (\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}}$<$ \doxymbox{\hyperlink{namespacegko_aee37f85b217e5e26fe64207d41fa4bac}{next\+\_\+precision}}$<$ Value\+Type $>$, Index\+Type $>$ \texorpdfstring{$\ast$}{*}result) const override
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a3325e2d3e18a149f729690cce4f12454}\label{classgko_1_1matrix_1_1Csr_a3325e2d3e18a149f729690cce4f12454} 
void {\bfseries move\+\_\+to} (\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}}$<$ \doxymbox{\hyperlink{namespacegko_aee37f85b217e5e26fe64207d41fa4bac}{next\+\_\+precision}}$<$ Value\+Type $>$, Index\+Type $>$ \texorpdfstring{$\ast$}{*}result) override
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a610dfb71907ee0e79ca6470571cb1d10}\label{classgko_1_1matrix_1_1Csr_a610dfb71907ee0e79ca6470571cb1d10} 
void {\bfseries convert\+\_\+to} (\doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}}$<$ Value\+Type $>$ \texorpdfstring{$\ast$}{*}other) const override
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a794189da6f4443a991b7f68ed59c2f49}\label{classgko_1_1matrix_1_1Csr_a794189da6f4443a991b7f68ed59c2f49} 
void {\bfseries move\+\_\+to} (\doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}}$<$ Value\+Type $>$ \texorpdfstring{$\ast$}{*}other) override
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_ab0927bd9d5f77008d95891f266b9eb1d}\label{classgko_1_1matrix_1_1Csr_ab0927bd9d5f77008d95891f266b9eb1d} 
void {\bfseries convert\+\_\+to} (\doxymbox{\hyperlink{classgko_1_1matrix_1_1Coo}{Coo}}$<$ Value\+Type, Index\+Type $>$ \texorpdfstring{$\ast$}{*}result) const override
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a79c4a2730c1ef576d75fb8f2d98aecf2}\label{classgko_1_1matrix_1_1Csr_a79c4a2730c1ef576d75fb8f2d98aecf2} 
void {\bfseries move\+\_\+to} (\doxymbox{\hyperlink{classgko_1_1matrix_1_1Coo}{Coo}}$<$ Value\+Type, Index\+Type $>$ \texorpdfstring{$\ast$}{*}result) override
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a4c351ea53f42a6fd5792b38d786e2082}\label{classgko_1_1matrix_1_1Csr_a4c351ea53f42a6fd5792b38d786e2082} 
void {\bfseries convert\+\_\+to} (\doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell}{Ell}}$<$ Value\+Type, Index\+Type $>$ \texorpdfstring{$\ast$}{*}result) const override
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a44c064ee29e926fe36c8298b7f435242}\label{classgko_1_1matrix_1_1Csr_a44c064ee29e926fe36c8298b7f435242} 
void {\bfseries move\+\_\+to} (\doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell}{Ell}}$<$ Value\+Type, Index\+Type $>$ \texorpdfstring{$\ast$}{*}result) override
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_ac3380d10399fa92b219b7fd5d1666ed6}\label{classgko_1_1matrix_1_1Csr_ac3380d10399fa92b219b7fd5d1666ed6} 
void {\bfseries convert\+\_\+to} (\doxymbox{\hyperlink{classgko_1_1matrix_1_1Fbcsr}{Fbcsr}}$<$ Value\+Type, Index\+Type $>$ \texorpdfstring{$\ast$}{*}result) const override
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_ad2d1e3218fd1fffaf179cce6c364cef7}\label{classgko_1_1matrix_1_1Csr_ad2d1e3218fd1fffaf179cce6c364cef7} 
void {\bfseries move\+\_\+to} (\doxymbox{\hyperlink{classgko_1_1matrix_1_1Fbcsr}{Fbcsr}}$<$ Value\+Type, Index\+Type $>$ \texorpdfstring{$\ast$}{*}result) override
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a28bc89a11d683822fa1f0a20e1d54499}\label{classgko_1_1matrix_1_1Csr_a28bc89a11d683822fa1f0a20e1d54499} 
void {\bfseries convert\+\_\+to} (\doxymbox{\hyperlink{classgko_1_1matrix_1_1Hybrid}{Hybrid}}$<$ Value\+Type, Index\+Type $>$ \texorpdfstring{$\ast$}{*}result) const override
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a9c703e8d02140609f4a4c5b4a9f342ec}\label{classgko_1_1matrix_1_1Csr_a9c703e8d02140609f4a4c5b4a9f342ec} 
void {\bfseries move\+\_\+to} (\doxymbox{\hyperlink{classgko_1_1matrix_1_1Hybrid}{Hybrid}}$<$ Value\+Type, Index\+Type $>$ \texorpdfstring{$\ast$}{*}result) override
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_aa7c16cb04e391ef7635e9b597ada39a3}\label{classgko_1_1matrix_1_1Csr_aa7c16cb04e391ef7635e9b597ada39a3} 
void {\bfseries convert\+\_\+to} (\doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp}{Sellp}}$<$ Value\+Type, Index\+Type $>$ \texorpdfstring{$\ast$}{*}result) const override
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_ab5e533173f10bb8b0269ddf8374bfcff}\label{classgko_1_1matrix_1_1Csr_ab5e533173f10bb8b0269ddf8374bfcff} 
void {\bfseries move\+\_\+to} (\doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp}{Sellp}}$<$ Value\+Type, Index\+Type $>$ \texorpdfstring{$\ast$}{*}result) override
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_aafef8f608dac1dbcee61f010cb612e23}\label{classgko_1_1matrix_1_1Csr_aafef8f608dac1dbcee61f010cb612e23} 
void {\bfseries convert\+\_\+to} (\doxymbox{\hyperlink{classgko_1_1matrix_1_1SparsityCsr}{Sparsity\+Csr}}$<$ Value\+Type, Index\+Type $>$ \texorpdfstring{$\ast$}{*}result) const override
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a5cc9ee296e55973438efed46468c9a55}\label{classgko_1_1matrix_1_1Csr_a5cc9ee296e55973438efed46468c9a55} 
void {\bfseries move\+\_\+to} (\doxymbox{\hyperlink{classgko_1_1matrix_1_1SparsityCsr}{Sparsity\+Csr}}$<$ Value\+Type, Index\+Type $>$ \texorpdfstring{$\ast$}{*}result) override
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_ac4db41146ed3c3a8653b03d6b2c6c675}\label{classgko_1_1matrix_1_1Csr_ac4db41146ed3c3a8653b03d6b2c6c675} 
void {\bfseries read} (const mat\+\_\+data \&data) override
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a446d7ff64347297601c8e65e82d19b80}\label{classgko_1_1matrix_1_1Csr_a446d7ff64347297601c8e65e82d19b80} 
void {\bfseries read} (const device\+\_\+mat\+\_\+data \&data) override
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a37d01d26641fd7df068a4baaa8240225}\label{classgko_1_1matrix_1_1Csr_a37d01d26641fd7df068a4baaa8240225} 
void {\bfseries read} (device\+\_\+mat\+\_\+data \&\&data) override
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a205fc391f4cf4f7718a55b0a61f62bc9}\label{classgko_1_1matrix_1_1Csr_a205fc391f4cf4f7718a55b0a61f62bc9} 
void {\bfseries write} (mat\+\_\+data \&data) const override
\item 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_aaa850dcdfabfc020918fa870e50c0b11}{transpose}} () const override
\begin{DoxyCompactList}\small\item\em Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the transpose of the \doxylink{classgko_1_1Transposable}{Transposable} object. \end{DoxyCompactList}\item 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_af57eb59b5acb36cae0b3a16ffff9cf4f}{conj\+\_\+transpose}} () const override
\begin{DoxyCompactList}\small\item\em Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the conjugate transpose of the \doxylink{classgko_1_1Transposable}{Transposable} object. \end{DoxyCompactList}\item 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_aab232ee1dfd8b84881e66260cf850cd5}{multiply}} (\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ other) const
\begin{DoxyCompactList}\small\item\em Computes the sparse matrix product {\ttfamily this \texorpdfstring{$\ast$}{*} other} on the executor of this matrix. \end{DoxyCompactList}\item 
std::\+pair$<$ std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1multiply__reuse__info}{multiply\+\_\+reuse\+\_\+info}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a091a0013a0ef9a17d2cbf5ac5f09e06b}{multiply\+\_\+reuse}} (\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ other) const
\begin{DoxyCompactList}\small\item\em Computes the sparse matrix product {\ttfamily this \texorpdfstring{$\ast$}{*} other} on the executor of this matrix, and necessary data for value updates:\+ \end{DoxyCompactList}\item 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a3cc824322b23f2256718c761841ece8e}{multiply\+\_\+add}} (\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}}$<$ value\+\_\+type $>$ $>$ scale\+\_\+mult, \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ mtx\+\_\+mult, \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}}$<$ value\+\_\+type $>$ $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a4a9bcad293b828a49dac453195abd212}{scale\+\_\+add}}, \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ mtx\+\_\+add) const
\begin{DoxyCompactList}\small\item\em Computes the sparse matrix product {\ttfamily scale\+\_\+mult \texorpdfstring{$\ast$}{*} this \texorpdfstring{$\ast$}{*} mtx\+\_\+mult + \doxylink{classgko_1_1matrix_1_1Csr_a4a9bcad293b828a49dac453195abd212}{scale\+\_\+add} \texorpdfstring{$\ast$}{*} mtx\+\_\+add} on the executor of this matrix. \end{DoxyCompactList}\item 
std::\+pair$<$ std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1multiply__add__reuse__info}{multiply\+\_\+add\+\_\+reuse\+\_\+info}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a058af579839922bae27da8bb42f94b66}{multiply\+\_\+add\+\_\+reuse}} (\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}}$<$ value\+\_\+type $>$ $>$ scale\+\_\+mult, \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ mtx\+\_\+mult, \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}}$<$ value\+\_\+type $>$ $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a4a9bcad293b828a49dac453195abd212}{scale\+\_\+add}}, \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ mtx\+\_\+add) const
\begin{DoxyCompactList}\small\item\em Computes the sparse matrix product {\ttfamily scale\+\_\+mult \texorpdfstring{$\ast$}{*} this \texorpdfstring{$\ast$}{*} mtx\+\_\+mult + \doxylink{classgko_1_1matrix_1_1Csr_a4a9bcad293b828a49dac453195abd212}{scale\+\_\+add} \texorpdfstring{$\ast$}{*} mtx\+\_\+add} on the executor of this matrix, and necessary data for value updates:\+ \end{DoxyCompactList}\item 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a4a9bcad293b828a49dac453195abd212}{scale\+\_\+add}} (\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}}$<$ value\+\_\+type $>$ $>$ scale\+\_\+this, \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}}$<$ value\+\_\+type $>$ $>$ scale\+\_\+other, \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ mtx\+\_\+other) const
\begin{DoxyCompactList}\small\item\em Computes the sparse matrix sum {\ttfamily scale\+\_\+this \texorpdfstring{$\ast$}{*} this + scale\+\_\+other \texorpdfstring{$\ast$}{*} mtx\+\_\+add} on the executor of this matrix. \end{DoxyCompactList}\item 
std::\+pair$<$ std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1scale__add__reuse__info}{scale\+\_\+add\+\_\+reuse\+\_\+info}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_acdc158c60660d50703c2bc3cf97f4fb1}{add\+\_\+scale\+\_\+reuse}} (\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}}$<$ value\+\_\+type $>$ $>$ scale\+\_\+this, \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}}$<$ value\+\_\+type $>$ $>$ scale\+\_\+other, \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ mtx\+\_\+other) const
\begin{DoxyCompactList}\small\item\em Computes the sparse matrix sum {\ttfamily scale\+\_\+this \texorpdfstring{$\ast$}{*} this + scale\+\_\+other \texorpdfstring{$\ast$}{*} mtx\+\_\+add} on the executor of this matrix, and necessary data for value updates:\+ \end{DoxyCompactList}\item 
std::\+pair$<$ std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$, \doxymbox{\hyperlink{structgko_1_1matrix_1_1Csr_1_1permuting__reuse__info}{permuting\+\_\+reuse\+\_\+info}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_accf30d10cf9b83da853b72c138fb192f}{transpose\+\_\+reuse}} () const
\begin{DoxyCompactList}\small\item\em Computes the necessary data to update a transposed matrix from its original matrix. \end{DoxyCompactList}\item 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a898b9b458ff9e26c87c277fba3a9bdae}{permute}} (\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation}{Permutation}}$<$ index\+\_\+type $>$ $>$ permutation, \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\+\_\+mode}} mode=\doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972afeca3c730601be7fd57f1f0b668b4637}{permute\+\_\+mode::\+symmetric}}) const
\begin{DoxyCompactList}\small\item\em Creates a permuted copy $A\textnormal{\textquotesingle}$ of this matrix $A$ with the given permutation $P$. \end{DoxyCompactList}\item 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_af0538658a2fad819129927dbd39de0ae}{permute}} (\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation}{Permutation}}$<$ index\+\_\+type $>$ $>$ row\+\_\+permutation, \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation}{Permutation}}$<$ index\+\_\+type $>$ $>$ column\+\_\+permutation, bool invert=false) const
\begin{DoxyCompactList}\small\item\em Creates a non-\/symmetrically permuted copy $A\textnormal{\textquotesingle}$ of this matrix $A$ with the given row and column permutations $P$ and $Q$. \end{DoxyCompactList}\item 
std::\+pair$<$ std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$, \doxymbox{\hyperlink{structgko_1_1matrix_1_1Csr_1_1permuting__reuse__info}{permuting\+\_\+reuse\+\_\+info}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a05d792d40944735476606320d91290f4}{permute\+\_\+reuse}} (\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation}{Permutation}}$<$ index\+\_\+type $>$ $>$ permutation, \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\+\_\+mode}} mode=\doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972afeca3c730601be7fd57f1f0b668b4637}{permute\+\_\+mode::\+symmetric}}) const
\begin{DoxyCompactList}\small\item\em Computes the operations necessary to propagate changed values from a matrix A to a permuted matrix. \end{DoxyCompactList}\item 
std::\+pair$<$ std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$, \doxymbox{\hyperlink{structgko_1_1matrix_1_1Csr_1_1permuting__reuse__info}{permuting\+\_\+reuse\+\_\+info}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a6059f7474424460e1e0c25f5bf2c7c37}{permute\+\_\+reuse}} (\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation}{Permutation}}$<$ index\+\_\+type $>$ $>$ row\+\_\+permutation, \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation}{Permutation}}$<$ index\+\_\+type $>$ $>$ column\+\_\+permutation, bool invert=false) const
\begin{DoxyCompactList}\small\item\em Computes the operations necessary to propagate changed values from a matrix A to a permuted matrix. \end{DoxyCompactList}\item 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a1c3c66d3baf3b05e52992b6f3f7611f7}{scale\+\_\+permute}} (\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1ScaledPermutation}{Scaled\+Permutation}}$<$ value\+\_\+type, index\+\_\+type $>$ $>$ permutation, \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\+\_\+mode}}=\doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972afeca3c730601be7fd57f1f0b668b4637}{permute\+\_\+mode::\+symmetric}}) const
\begin{DoxyCompactList}\small\item\em Creates a scaled and permuted copy of this matrix. \end{DoxyCompactList}\item 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_acf9d804a766061d117e78a3534b2e80d}{scale\+\_\+permute}} (\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1ScaledPermutation}{Scaled\+Permutation}}$<$ value\+\_\+type, index\+\_\+type $>$ $>$ row\+\_\+permutation, \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1ScaledPermutation}{Scaled\+Permutation}}$<$ value\+\_\+type, index\+\_\+type $>$ $>$ column\+\_\+permutation, bool invert=false) const
\begin{DoxyCompactList}\small\item\em Creates a scaled and permuted copy of this matrix. \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_abeb0646f992474d96fcd21998c581ff9}\label{classgko_1_1matrix_1_1Csr_abeb0646f992474d96fcd21998c581ff9} 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ {\bfseries permute} (const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ Index\+Type $>$ \texorpdfstring{$\ast$}{*}permutation\+\_\+indices) const override
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a5dcd9b2dbaf0104df96002da0a17370f}\label{classgko_1_1matrix_1_1Csr_a5dcd9b2dbaf0104df96002da0a17370f} 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ {\bfseries inverse\+\_\+permute} (const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ Index\+Type $>$ \texorpdfstring{$\ast$}{*}inverse\+\_\+permutation\+\_\+indices) const override
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a6d39e3f9593784c66b5e049039d2325b}\label{classgko_1_1matrix_1_1Csr_a6d39e3f9593784c66b5e049039d2325b} 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ {\bfseries row\+\_\+permute} (const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ Index\+Type $>$ \texorpdfstring{$\ast$}{*}permutation\+\_\+indices) const override
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a046570e71195e19332e4ab4e96ddf26f}\label{classgko_1_1matrix_1_1Csr_a046570e71195e19332e4ab4e96ddf26f} 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ {\bfseries column\+\_\+permute} (const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ Index\+Type $>$ \texorpdfstring{$\ast$}{*}permutation\+\_\+indices) const override
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_ab427a2d43bac78a9d2f0a875eaac7e6d}\label{classgko_1_1matrix_1_1Csr_ab427a2d43bac78a9d2f0a875eaac7e6d} 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ {\bfseries inverse\+\_\+row\+\_\+permute} (const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ Index\+Type $>$ \texorpdfstring{$\ast$}{*}inverse\+\_\+permutation\+\_\+indices) const override
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_ab022ee7c78acd77fbbf54836bce5b3e8}\label{classgko_1_1matrix_1_1Csr_ab022ee7c78acd77fbbf54836bce5b3e8} 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ {\bfseries inverse\+\_\+column\+\_\+permute} (const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ Index\+Type $>$ \texorpdfstring{$\ast$}{*}inverse\+\_\+permutation\+\_\+indices) const override
\item 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Diagonal}{Diagonal}}$<$ Value\+Type $>$ $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a75ddc647a3998ca75e15ac8cd29c24ce}{extract\+\_\+diagonal}} () const override
\begin{DoxyCompactList}\small\item\em Extracts the diagonal entries of the matrix into a vector. \end{DoxyCompactList}\item 
std::\+unique\+\_\+ptr$<$ absolute\+\_\+type $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a2435b1ff883ca33fa3874bc81aada57b}{compute\+\_\+absolute}} () const override
\begin{DoxyCompactList}\small\item\em Gets the Absolute\+Lin\+Op. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_ab4cc1ed324551291d385d317e75ad256}{compute\+\_\+absolute\+\_\+inplace}} () override
\begin{DoxyCompactList}\small\item\em Compute absolute inplace on each element. \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_ac817665ebedfc099180a785d813db8ef}\label{classgko_1_1matrix_1_1Csr_ac817665ebedfc099180a785d813db8ef} 
void {\bfseries sort\+\_\+by\+\_\+column\+\_\+index} ()
\begin{DoxyCompactList}\small\item\em Sorts all (value, col\+\_\+idx) pairs in each row by column index. \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_adf7499e248badc9faed07c84e3a2449c}\label{classgko_1_1matrix_1_1Csr_adf7499e248badc9faed07c84e3a2449c} 
bool {\bfseries is\+\_\+sorted\+\_\+by\+\_\+column\+\_\+index} () const
\item 
value\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_ade22bdc09b0ef6d9740feeaa702fdd51}{get\+\_\+values}} () noexcept
\begin{DoxyCompactList}\small\item\em Returns the values of the matrix. \end{DoxyCompactList}\item 
const value\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_aad85907f0b9717618ed5dabcd56e4e39}{get\+\_\+const\+\_\+values}} () const noexcept
\begin{DoxyCompactList}\small\item\em Returns the values of the matrix.    \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_ad0f3a8d348dc828dd32da8c6b4bf93f7}\label{classgko_1_1matrix_1_1Csr_ad0f3a8d348dc828dd32da8c6b4bf93f7} 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}}$<$ Value\+Type $>$ $>$ {\bfseries create\+\_\+value\+\_\+view} ()
\begin{DoxyCompactList}\small\item\em Creates a \doxylink{classgko_1_1matrix_1_1Dense}{Dense} view of the value array of this matrix as a column vector of dimensions nnz x 1. \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a8c1115150d40666b4df0eacbacfd474e}\label{classgko_1_1matrix_1_1Csr_a8c1115150d40666b4df0eacbacfd474e} 
std::\+unique\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}}$<$ Value\+Type $>$ $>$ {\bfseries create\+\_\+const\+\_\+value\+\_\+view} () const
\begin{DoxyCompactList}\small\item\em Creates a const \doxylink{classgko_1_1matrix_1_1Dense}{Dense} view of the value array of this matrix as a column vector of dimensions nnz x 1. \end{DoxyCompactList}\item 
index\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_ae701fb37da0c745c314fb3472cef5df4}{get\+\_\+col\+\_\+idxs}} () noexcept
\begin{DoxyCompactList}\small\item\em Returns the column indexes of the matrix. \end{DoxyCompactList}\item 
const index\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_ac3a1ef745f900fd534999a69eae3ff32}{get\+\_\+const\+\_\+col\+\_\+idxs}} () const noexcept
\begin{DoxyCompactList}\small\item\em Returns the column indexes of the matrix.    \end{DoxyCompactList}\item 
index\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a83f2a63175bbffa39808543a3d4b3f3b}{get\+\_\+row\+\_\+ptrs}} () noexcept
\begin{DoxyCompactList}\small\item\em Returns the row pointers of the matrix. \end{DoxyCompactList}\item 
const index\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a29e603a026ca798346e74ee8408b2f51}{get\+\_\+const\+\_\+row\+\_\+ptrs}} () const noexcept
\begin{DoxyCompactList}\small\item\em Returns the row pointers of the matrix.    \end{DoxyCompactList}\item 
index\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a4a8d2975871fdd779e447a8ef9e991d1}{get\+\_\+srow}} () noexcept
\begin{DoxyCompactList}\small\item\em Returns the starting rows. \end{DoxyCompactList}\item 
const index\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a396e0e99ce4fefca9dcbe45e4fccc838}{get\+\_\+const\+\_\+srow}} () const noexcept
\begin{DoxyCompactList}\small\item\em Returns the starting rows.    \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a5b8c25c2fb1bbea62a3afdec8f8340c5}{get\+\_\+num\+\_\+srow\+\_\+elements}} () const noexcept
\begin{DoxyCompactList}\small\item\em Returns the number of the srow stored elements (involved warps). \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_ab70c085fc3df11a4ed9fe74b40844c5c}{get\+\_\+num\+\_\+stored\+\_\+elements}} () const noexcept
\begin{DoxyCompactList}\small\item\em Returns the number of elements explicitly stored in the matrix. \end{DoxyCompactList}\item 
std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1strategy__type}{strategy\+\_\+type}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_abb20626b04360436259fdc13b00e59b0}{get\+\_\+strategy}} () const noexcept
\begin{DoxyCompactList}\small\item\em Returns the strategy. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a3e0f6f2a9d773de0551068d514bf9703}{set\+\_\+strategy}} (std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1strategy__type}{strategy\+\_\+type}} $>$ strategy)
\begin{DoxyCompactList}\small\item\em Set the strategy. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_ad1db62aaad519a9774dde49ff411edde}{scale}} (\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ alpha)
\begin{DoxyCompactList}\small\item\em Scales the matrix with a scalar. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a3ed41ecd59dcfe1b805ed910fada56a9}{inv\+\_\+scale}} (\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ alpha)
\begin{DoxyCompactList}\small\item\em Scales the matrix with the inverse of a scalar. \end{DoxyCompactList}\item 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}}$<$ Value\+Type, Index\+Type $>$ $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a714b3534b309ecb2bb05958dbbf4885e}{create\+\_\+submatrix}} (const \doxymbox{\hyperlink{classgko_1_1index__set}{index\+\_\+set}}$<$ Index\+Type $>$ \&row\+\_\+index\+\_\+set, const \doxymbox{\hyperlink{classgko_1_1index__set}{index\+\_\+set}}$<$ Index\+Type $>$ \&column\+\_\+index\+\_\+set) const
\begin{DoxyCompactList}\small\item\em Creates a submatrix from this \doxylink{classgko_1_1matrix_1_1Csr}{Csr} matrix given row and column \doxylink{classgko_1_1index__set}{index\+\_\+set} objects. \end{DoxyCompactList}\item 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}}$<$ Value\+Type, Index\+Type $>$ $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a2d1d5b4b310ed444ccbb178e241a9822}{create\+\_\+submatrix}} (const \doxymbox{\hyperlink{structgko_1_1span}{span}} \&row\+\_\+span, const \doxymbox{\hyperlink{structgko_1_1span}{span}} \&column\+\_\+span) const
\begin{DoxyCompactList}\small\item\em Creates a submatrix from this \doxylink{classgko_1_1matrix_1_1Csr}{Csr} matrix given row and column spans. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} \& \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a0f8038628e96f1995e4942863415ad63}{operator=}} (const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} \&)
\begin{DoxyCompactList}\small\item\em Copy-\/assigns a \doxylink{classgko_1_1matrix_1_1Csr}{Csr} matrix. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} \& \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a96d132e8d22d7565f93540eb50bcc32c}{operator=}} (\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} \&\&)
\begin{DoxyCompactList}\small\item\em Move-\/assigns a \doxylink{classgko_1_1matrix_1_1Csr}{Csr} matrix. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} (const Csr \&)
\begin{DoxyCompactList}\small\item\em Copy-\/constructs a \doxylink{classgko_1_1matrix_1_1Csr}{Csr} matrix. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_aee53e78f8b1f8e3d2a6c407baac456d9}{Csr}} (Csr \&\&)
\begin{DoxyCompactList}\small\item\em Move-\/constructs a \doxylink{classgko_1_1matrix_1_1Csr}{Csr} matrix. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \doxymbox{\hyperlink{classgko_1_1EnableLinOp}{gko::\+\+Enable\+Lin\+Op$<$ Csr$<$ default\+\_\+precision, int32 $>$ $>$}}}
\begin{DoxyCompactItemize}
\item 
const Csr$<$ \doxymbox{\hyperlink{namespacegko_a89637c833af7ae805802226d97cebebf}{default\+\_\+precision}}, \doxymbox{\hyperlink{namespacegko_a16bd14c10900eb804d784908d8aab5ab}{int32}} $>$ \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$<$ Csr$<$ default\+\_\+precision, int32 $>$ $>$}}}
\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_1DiagonalExtractable}{gko::\+\+Diagonal\+Extractable$<$ default\+\_\+precision $>$}}}
\begin{DoxyCompactItemize}
\item 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1DiagonalExtractable_a7d41c0cb7b317402ea61bc145b82a9db}{extract\+\_\+diagonal\+\_\+linop}} () const override
\begin{DoxyCompactList}\small\item\em Extracts the diagonal entries of the matrix into a vector. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \doxymbox{\hyperlink{classgko_1_1ReadableFromMatrixData}{gko::\+\+Readable\+From\+Matrix\+Data$<$ default\+\_\+precision, int32 $>$}}}
\begin{DoxyCompactItemize}
\item 
virtual void \doxymbox{\hyperlink{classgko_1_1ReadableFromMatrixData_add5c12e23b3ac3c8fbd607fa5a9656bb}{read}} (const \doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\+\_\+data}}$<$ \doxymbox{\hyperlink{namespacegko_a89637c833af7ae805802226d97cebebf}{default\+\_\+precision}}, \doxymbox{\hyperlink{namespacegko_a16bd14c10900eb804d784908d8aab5ab}{int32}} $>$ \&data)=0
\begin{DoxyCompactList}\small\item\em Reads a matrix from a \doxylink{structgko_1_1matrix__data}{matrix\+\_\+data} structure. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \doxymbox{\hyperlink{classgko_1_1WritableToMatrixData}{gko::\+\+Writable\+To\+Matrix\+Data$<$ default\+\_\+precision, int32 $>$}}}
\begin{DoxyCompactItemize}
\item 
virtual void \doxymbox{\hyperlink{classgko_1_1WritableToMatrixData_a96036c3a4bf4c67fa93002808b8b14e2}{write}} (\doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\+\_\+data}}$<$ \doxymbox{\hyperlink{namespacegko_a89637c833af7ae805802226d97cebebf}{default\+\_\+precision}}, \doxymbox{\hyperlink{namespacegko_a16bd14c10900eb804d784908d8aab5ab}{int32}} $>$ \&data) const=0
\begin{DoxyCompactList}\small\item\em Writes a matrix to a \doxylink{structgko_1_1matrix__data}{matrix\+\_\+data} structure. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \doxymbox{\hyperlink{classgko_1_1Permutable}{gko::\+\+Permutable$<$ int32 $>$}}}
\begin{DoxyCompactItemize}
\item 
virtual std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1Permutable_ae4fb8d127c4942e648eef400117039de}{permute}} (const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ \doxymbox{\hyperlink{namespacegko_a16bd14c10900eb804d784908d8aab5ab}{int32}} $>$ \texorpdfstring{$\ast$}{*}permutation\+\_\+indices) const
\begin{DoxyCompactList}\small\item\em Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the symmetric row and column permutation of the \doxylink{classgko_1_1Permutable}{Permutable} object. \end{DoxyCompactList}\item 
virtual std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1Permutable_aab402585e8e7850744d1b3b0baec60a3}{inverse\+\_\+permute}} (const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ \doxymbox{\hyperlink{namespacegko_a16bd14c10900eb804d784908d8aab5ab}{int32}} $>$ \texorpdfstring{$\ast$}{*}permutation\+\_\+indices) const
\begin{DoxyCompactList}\small\item\em Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the symmetric inverse row and column permutation of the \doxylink{classgko_1_1Permutable}{Permutable} object. \end{DoxyCompactList}\item 
virtual std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1Permutable_a842f85a61b0b8f20083eb597978e0ffb}{row\+\_\+permute}} (const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ \doxymbox{\hyperlink{namespacegko_a16bd14c10900eb804d784908d8aab5ab}{int32}} $>$ \texorpdfstring{$\ast$}{*}permutation\+\_\+indices) const=0
\begin{DoxyCompactList}\small\item\em Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the row permutation of the \doxylink{classgko_1_1Permutable}{Permutable} object. \end{DoxyCompactList}\item 
virtual std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1Permutable_acf1570421c3c5c9e057ee325a80efd65}{column\+\_\+permute}} (const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ \doxymbox{\hyperlink{namespacegko_a16bd14c10900eb804d784908d8aab5ab}{int32}} $>$ \texorpdfstring{$\ast$}{*}permutation\+\_\+indices) const=0
\begin{DoxyCompactList}\small\item\em Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the column permutation of the \doxylink{classgko_1_1Permutable}{Permutable} object. \end{DoxyCompactList}\item 
virtual std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1Permutable_a9d901d0384ef13d240430a2baaba22d0}{inverse\+\_\+row\+\_\+permute}} (const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ \doxymbox{\hyperlink{namespacegko_a16bd14c10900eb804d784908d8aab5ab}{int32}} $>$ \texorpdfstring{$\ast$}{*}permutation\+\_\+indices) const=0
\begin{DoxyCompactList}\small\item\em Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the row permutation of the inverse permuted object. \end{DoxyCompactList}\item 
virtual std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1Permutable_a7eb82db489bbf87091373c58d3325844}{inverse\+\_\+column\+\_\+permute}} (const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ \doxymbox{\hyperlink{namespacegko_a16bd14c10900eb804d784908d8aab5ab}{int32}} $>$ \texorpdfstring{$\ast$}{*}permutation\+\_\+indices) const=0
\begin{DoxyCompactList}\small\item\em Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the row permutation of the inverse permuted object. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \doxymbox{\hyperlink{classgko_1_1EnableAbsoluteComputation}{gko::\+\+Enable\+Absolute\+Computation$<$ remove\+\_\+complex$<$ Csr$<$ default\+\_\+precision, int32 $>$ $>$ $>$}}}
\begin{DoxyCompactItemize}
\item 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1EnableAbsoluteComputation_a4cf4eedb2090f486bdef0a8717142b7c}{compute\+\_\+absolute\+\_\+linop}} () const override
\begin{DoxyCompactList}\small\item\em Gets the absolute \doxylink{classgko_1_1LinOp}{Lin\+Op}. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \doxymbox{\hyperlink{classgko_1_1ScaledIdentityAddable}{gko::\+\+Scaled\+Identity\+Addable}}}
\begin{DoxyCompactItemize}
\item 
void \doxymbox{\hyperlink{classgko_1_1ScaledIdentityAddable_a43d679d3a9857780f9566bbc61c6b847}{add\+\_\+scaled\+\_\+identity}} (\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ const a, \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ const b)
\begin{DoxyCompactList}\small\item\em Scales this and adds another scalar times the identity to it. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a5261906eecda7da087638981d011a9b2}{create}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1strategy__type}{strategy\+\_\+type}} $>$ strategy)
\begin{DoxyCompactList}\small\item\em Creates an uninitialized CSR matrix of the specified size. \end{DoxyCompactList}\item 
static std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a2f5e75fa7d4b58fa59b1d9dbead788d2}{create}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, const \doxymbox{\hyperlink{structgko_1_1dim}{dim}}$<$ 2 $>$ \&size=\{\}, \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} num\+\_\+nonzeros=\{\}, std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1strategy__type}{strategy\+\_\+type}} $>$ strategy=nullptr)
\begin{DoxyCompactList}\small\item\em Creates an uninitialized CSR matrix of the specified size. \end{DoxyCompactList}\item 
static std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a7f84d6372882412d22518bdd655813ff}{create}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, const \doxymbox{\hyperlink{structgko_1_1dim}{dim}}$<$ 2 $>$ \&size, \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ value\+\_\+type $>$ values, \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ index\+\_\+type $>$ col\+\_\+idxs, \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ index\+\_\+type $>$ row\+\_\+ptrs, std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1strategy__type}{strategy\+\_\+type}} $>$ strategy=nullptr)
\begin{DoxyCompactList}\small\item\em Creates a CSR matrix from already allocated (and initialized) row pointer, column index and value arrays. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename Input\+Value\+Type, typename Input\+Column\+Index\+Type, typename Input\+Row\+Ptr\+Type$>$ }\\static std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_ade389c774daaffba807343bd3f148af7}{create}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, const \doxymbox{\hyperlink{structgko_1_1dim}{dim}}$<$ 2 $>$ \&size, std::\+initializer\+\_\+list$<$ Input\+Value\+Type $>$ values, std::\+initializer\+\_\+list$<$ Input\+Column\+Index\+Type $>$ col\+\_\+idxs, std::\+initializer\+\_\+list$<$ Input\+Row\+Ptr\+Type $>$ row\+\_\+ptrs)
\begin{DoxyCompactList}\small\item\em create(std::\+shared\+\_\+ptr$<$const Executor$>$,const dim$<$2$>$\&, array$<$value\+\_\+type$>$, array$<$index\+\_\+type$>$, array$<$index\+\_\+type$>$) \end{DoxyCompactList}\item 
static std::\+unique\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a8e17829add94a2a443105cceca3a5808}{create\+\_\+const}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec, const \doxymbox{\hyperlink{structgko_1_1dim}{dim}}$<$ 2 $>$ \&size, gko::\+detail::\+const\+\_\+array\+\_\+view$<$ Value\+Type $>$ \&\&values, gko::\+detail::\+const\+\_\+array\+\_\+view$<$ Index\+Type $>$ \&\&col\+\_\+idxs, gko::\+detail::\+const\+\_\+array\+\_\+view$<$ Index\+Type $>$ \&\&row\+\_\+ptrs, std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1strategy__type}{strategy\+\_\+type}} $>$ strategy=nullptr)
\begin{DoxyCompactList}\small\item\em Creates a constant (immutable) \doxylink{classgko_1_1matrix_1_1Csr}{Csr} matrix from a set of constant arrays. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Friends}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a6fa2ee2c326608dac42afed82be6713c}\label{classgko_1_1matrix_1_1Csr_a6fa2ee2c326608dac42afed82be6713c} 
class {\bfseries Enable\+Polymorphic\+Object$<$ Csr, Lin\+Op $>$}
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_ad2572ffab980b4728254b155909b3119}\label{classgko_1_1matrix_1_1Csr_ad2572ffab980b4728254b155909b3119} 
class {\bfseries Coo$<$ Value\+Type, Index\+Type $>$}
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a22a84c8f67f946aa60a2fa8bf5835a32}\label{classgko_1_1matrix_1_1Csr_a22a84c8f67f946aa60a2fa8bf5835a32} 
class {\bfseries Dense$<$ Value\+Type $>$}
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_aa3cced41417aad9c348562f415f02a59}\label{classgko_1_1matrix_1_1Csr_aa3cced41417aad9c348562f415f02a59} 
class {\bfseries Diagonal$<$ Value\+Type $>$}
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_aed957ed9db4269e50fc8aa3d0263e618}\label{classgko_1_1matrix_1_1Csr_aed957ed9db4269e50fc8aa3d0263e618} 
class {\bfseries Ell$<$ Value\+Type, Index\+Type $>$}
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a86254b0ae570c27f5ba169d64b74e94b}\label{classgko_1_1matrix_1_1Csr_a86254b0ae570c27f5ba169d64b74e94b} 
class {\bfseries Hybrid$<$ Value\+Type, Index\+Type $>$}
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a400cb6dae6e6294b9f7d0249d63d538c}\label{classgko_1_1matrix_1_1Csr_a400cb6dae6e6294b9f7d0249d63d538c} 
class {\bfseries Sellp$<$ Value\+Type, Index\+Type $>$}
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_af3670b1e6b4be191b76955732bbc46c1}\label{classgko_1_1matrix_1_1Csr_af3670b1e6b4be191b76955732bbc46c1} 
class {\bfseries Sparsity\+Csr$<$ Value\+Type, Index\+Type $>$}
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_aff71cbd8155c9a4999db4e90b43367f5}\label{classgko_1_1matrix_1_1Csr_aff71cbd8155c9a4999db4e90b43367f5} 
class {\bfseries Fbcsr$<$ Value\+Type, Index\+Type $>$}
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a2525e707ed335481ff58d5917213de8e}\label{classgko_1_1matrix_1_1Csr_a2525e707ed335481ff58d5917213de8e} 
class {\bfseries Csr\+Builder$<$ Value\+Type, Index\+Type $>$}
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_aac51cfd57c6d3d565c558531f39f3943}\label{classgko_1_1matrix_1_1Csr_aac51cfd57c6d3d565c558531f39f3943} 
class {\bfseries Csr$<$ to\+\_\+complex$<$ Value\+Type $>$, Index\+Type $>$}
\item 
\Hypertarget{classgko_1_1matrix_1_1Csr_a4b1942447c3f2e07a76e2f5614d6f5f1}\label{classgko_1_1matrix_1_1Csr_a4b1942447c3f2e07a76e2f5614d6f5f1} 
class {\bfseries Csr$<$ previous\+\_\+precision$<$ Value\+Type $>$, Index\+Type $>$}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
\subsubsection*{template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$\newline
class gko::\+matrix::\+\+Csr$<$ Value\+Type, Index\+Type $>$}
CSR is a matrix format which stores only the nonzero coefficients by compressing each row of the matrix (compressed sparse row format). 

The nonzero elements are stored in a 1D array row-\/wise, and accompanied with a row pointer array which stores the starting index of each row. An additional column index array is used to identify the column of each nonzero element.

The \doxylink{classgko_1_1matrix_1_1Csr}{Csr} \doxylink{classgko_1_1LinOp}{Lin\+Op} supports different operations:\+


\begin{DoxyCode}{0}
\DoxyCodeLine{matrix::Csr\ *A,\ *B,\ *C;\ \ \ \ \ \ \textcolor{comment}{//\ matrices}}
\DoxyCodeLine{matrix::Dense\ *b,\ *x;\ \ \ \ \ \ \ \ \textcolor{comment}{//\ vectors\ tall-\/and-\/skinny\ matrices}}
\DoxyCodeLine{matrix::Dense\ *alpha,\ *beta;\ \textcolor{comment}{//\ scalars\ of\ dimension\ 1x1}}
\DoxyCodeLine{matrix::Identity\ *I;\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ identity\ matrix}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{comment}{//\ Applying\ to\ Dense\ matrices\ 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}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{comment}{//\ Applying\ to\ Csr\ matrices\ computes\ a\ SpGEMM\ product\ of\ two\ sparse\ matrices}}
\DoxyCodeLine{A-\/>apply(B,\ C)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ C\ =\ A*B}}
\DoxyCodeLine{A-\/>apply(alpha,\ B,\ beta,\ C)\ \textcolor{comment}{//\ C\ =\ alpha*A*B\ +\ beta*C}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{comment}{//\ Applying\ to\ an\ Identity\ matrix\ computes\ a\ SpGEAM\ sparse\ matrix\ addition}}
\DoxyCodeLine{A-\/>apply(alpha,\ I,\ beta,\ B)\ \textcolor{comment}{//\ B\ =\ alpha*A\ +\ beta*B}}

\end{DoxyCode}
 Both the Sp\+GEMM and Sp\+GEAM operation require the input matrices to be sorted by column index, otherwise the algorithms will produce incorrect results.


\begin{DoxyTemplParams}{Template Parameters}
{\em Value\+Type} & precision of matrix elements \\
\hline
{\em Index\+Type} & precision of matrix indexes \\
\hline
\end{DoxyTemplParams}


\label{doc-constructors}
\Hypertarget{classgko_1_1matrix_1_1Csr_doc-constructors}
\doxysubsection{Constructor \& Destructor Documentation}
\Hypertarget{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!Csr@{Csr}}
\index{Csr@{Csr}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{Csr()}{Csr()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+\+Csr (\begin{DoxyParamCaption}\item[{const Csr$<$ Value\+Type, Index\+Type $>$ \&}]{}{}\end{DoxyParamCaption})}



Copy-\/constructs a \doxylink{classgko_1_1matrix_1_1Csr}{Csr} matrix. 

Inherits executor, strategy and data. \Hypertarget{classgko_1_1matrix_1_1Csr_aee53e78f8b1f8e3d2a6c407baac456d9}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!Csr@{Csr}}
\index{Csr@{Csr}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{Csr()}{Csr()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_aee53e78f8b1f8e3d2a6c407baac456d9} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+\+Csr (\begin{DoxyParamCaption}\item[{Csr$<$ Value\+Type, Index\+Type $>$ \&\&}]{}{}\end{DoxyParamCaption})}



Move-\/constructs a \doxylink{classgko_1_1matrix_1_1Csr}{Csr} matrix. 

Inherits executor and strategy, moves the data and leaves the moved-\/from object in an empty state (0x0 \doxylink{classgko_1_1LinOp}{Lin\+Op} with unchanged executor and strategy, no nonzeros and valid row pointers). 

\label{doc-func-members}
\Hypertarget{classgko_1_1matrix_1_1Csr_doc-func-members}
\doxysubsection{Member Function Documentation}
\Hypertarget{classgko_1_1matrix_1_1Csr_acdc158c60660d50703c2bc3cf97f4fb1}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!add\_scale\_reuse@{add\_scale\_reuse}}
\index{add\_scale\_reuse@{add\_scale\_reuse}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{add\_scale\_reuse()}{add\_scale\_reuse()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_acdc158c60660d50703c2bc3cf97f4fb1} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+pair$<$ std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1scale__add__reuse__info}{scale\+\_\+add\+\_\+reuse\+\_\+info}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+add\+\_\+scale\+\_\+reuse (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}}$<$ value\+\_\+type $>$ $>$}]{scale\+\_\+this}{, }\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}}$<$ value\+\_\+type $>$ $>$}]{scale\+\_\+other}{, }\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}}$<$ Value\+Type, Index\+Type $>$ $>$}]{mtx\+\_\+other}{}\end{DoxyParamCaption}) const}



Computes the sparse matrix sum {\ttfamily scale\+\_\+this \texorpdfstring{$\ast$}{*} this + scale\+\_\+other \texorpdfstring{$\ast$}{*} mtx\+\_\+add} on the executor of this matrix, and necessary data for value updates:\+ 


\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keyword}{auto}\ [result,\ reuse]\ =\ mtx-\/>add\_scale\_reuse(alpha,\ beta,\ mtx2);}
\DoxyCodeLine{change\_values(alpha,\ mtx,\ beta,\ mtx2);}
\DoxyCodeLine{reuse-\/>update\_values(alpha,\ mtx,\ beta,\ mtx2,\ result);}

\end{DoxyCode}
 This matrix needs to be sorted by column index, otherwise the result will be incorrect.


\begin{DoxyParams}{Parameters}
{\em scale\+\_\+this} & the scalar by which this matrix will be scaled. \\
\hline
{\em scale\+\_\+other} & the scalar by which this matrix will be scaled. \\
\hline
{\em mtx\+\_\+other} & the matrix which will be added to this, scaled by scale\+\_\+other. It needs to be sorted by column index, otherwise the result will be incorrect. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
std::\+pair containing the result of the computation, stored on the same executor as this matrix, and a \doxylink{classgko_1_1matrix_1_1Csr_1_1scale__add__reuse__info}{scale\+\_\+add\+\_\+reuse\+\_\+info} object allowing value updates to the output matrix. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1matrix_1_1Csr_a2435b1ff883ca33fa3874bc81aada57b}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!compute\_absolute@{compute\_absolute}}
\index{compute\_absolute@{compute\_absolute}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{compute\_absolute()}{compute\_absolute()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a2435b1ff883ca33fa3874bc81aada57b} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+unique\+\_\+ptr$<$ absolute\+\_\+type $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+compute\+\_\+absolute (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



Gets the Absolute\+Lin\+Op. 

\begin{DoxyReturn}{Returns}
a pointer to the new absolute object 
\end{DoxyReturn}


Implements \doxymbox{\hyperlink{classgko_1_1EnableAbsoluteComputation_a4c042054915430f60124de37545eab65}{gko::\+\+Enable\+Absolute\+Computation$<$ remove\+\_\+complex$<$ Csr$<$ default\+\_\+precision, int32 $>$ $>$ $>$}}.

\Hypertarget{classgko_1_1matrix_1_1Csr_ab4cc1ed324551291d385d317e75ad256}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!compute\_absolute\_inplace@{compute\_absolute\_inplace}}
\index{compute\_absolute\_inplace@{compute\_absolute\_inplace}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{compute\_absolute\_inplace()}{compute\_absolute\_inplace()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_ab4cc1ed324551291d385d317e75ad256} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
void \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+compute\+\_\+absolute\+\_\+inplace (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



Compute absolute inplace on each element. 



Implements \doxymbox{\hyperlink{classgko_1_1AbsoluteComputable_a09c6acf477a3457b2b2dc0618b406da2}{gko::\+\+Absolute\+Computable}}.

\Hypertarget{classgko_1_1matrix_1_1Csr_af57eb59b5acb36cae0b3a16ffff9cf4f}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!conj\_transpose@{conj\_transpose}}
\index{conj\_transpose@{conj\_transpose}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{conj\_transpose()}{conj\_transpose()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_af57eb59b5acb36cae0b3a16ffff9cf4f} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+conj\+\_\+transpose (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the conjugate transpose of the \doxylink{classgko_1_1Transposable}{Transposable} object. 

\begin{DoxyReturn}{Returns}
a pointer to the new conjugate transposed object 
\end{DoxyReturn}


Implements \doxymbox{\hyperlink{classgko_1_1Transposable_a7c230aacdb222f09ba49baf0bd9e82eb}{gko::\+\+Transposable}}.

\Hypertarget{classgko_1_1matrix_1_1Csr_a7f84d6372882412d22518bdd655813ff}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!create@{create}}
\index{create@{create}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{create()}{create()}\hspace{0.1cm}{\footnotesize\ttfamily [1/4]}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a7f84d6372882412d22518bdd655813ff} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+create (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{const \doxymbox{\hyperlink{structgko_1_1dim}{dim}}$<$ 2 $>$ \&}]{size}{, }\item[{\doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ value\+\_\+type $>$}]{values}{, }\item[{\doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ index\+\_\+type $>$}]{col\+\_\+idxs}{, }\item[{\doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ index\+\_\+type $>$}]{row\+\_\+ptrs}{, }\item[{std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1strategy__type}{strategy\+\_\+type}} $>$}]{strategy}{ = {\ttfamily nullptr}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Creates a CSR matrix from already allocated (and initialized) row pointer, column index and value arrays. 


\begin{DoxyParams}{Parameters}
{\em exec} & \doxylink{classgko_1_1Executor}{Executor} associated to the matrix \\
\hline
{\em size} & size of the matrix \\
\hline
{\em values} & array of matrix values \\
\hline
{\em col\+\_\+idxs} & array of column indexes \\
\hline
{\em row\+\_\+ptrs} & array of row pointers \\
\hline
{\em strategy} & the strategy the matrix uses for Sp\+MV operations\\
\hline
\end{DoxyParams}
\begin{DoxyNote}{Note}
If one of {\ttfamily row\+\_\+ptrs}, {\ttfamily col\+\_\+idxs} or {\ttfamily values} is not an rvalue, not an array of Index\+Type, Index\+Type and Value\+Type, respectively, or is on the wrong executor, an internal copy of that array will be created, and the original array data will not be used in the matrix.
\end{DoxyNote}
\begin{DoxyReturn}{Returns}
A smart pointer to the newly created matrix. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1matrix_1_1Csr_ade389c774daaffba807343bd3f148af7}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!create@{create}}
\index{create@{create}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{create()}{create()}\hspace{0.1cm}{\footnotesize\ttfamily [2/4]}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_ade389c774daaffba807343bd3f148af7} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
template$<$typename Input\+Value\+Type, typename Input\+Column\+Index\+Type, typename Input\+Row\+Ptr\+Type$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+create (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{const \doxymbox{\hyperlink{structgko_1_1dim}{dim}}$<$ 2 $>$ \&}]{size}{, }\item[{std::\+initializer\+\_\+list$<$ Input\+Value\+Type $>$}]{values}{, }\item[{std::\+initializer\+\_\+list$<$ Input\+Column\+Index\+Type $>$}]{col\+\_\+idxs}{, }\item[{std::\+initializer\+\_\+list$<$ Input\+Row\+Ptr\+Type $>$}]{row\+\_\+ptrs}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



create(std::\+shared\+\_\+ptr$<$const Executor$>$,const dim$<$2$>$\&, array$<$value\+\_\+type$>$, array$<$index\+\_\+type$>$, array$<$index\+\_\+type$>$) 

create(std::\+shared\+\_\+ptr$<$const Executor$>$,const dim$<$2$>$\&, array$<$value\+\_\+type$>$, array$<$index\+\_\+type$>$, array$<$index\+\_\+type$>$) \Hypertarget{classgko_1_1matrix_1_1Csr_a2f5e75fa7d4b58fa59b1d9dbead788d2}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!create@{create}}
\index{create@{create}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{create()}{create()}\hspace{0.1cm}{\footnotesize\ttfamily [3/4]}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a2f5e75fa7d4b58fa59b1d9dbead788d2} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+create (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{const \doxymbox{\hyperlink{structgko_1_1dim}{dim}}$<$ 2 $>$ \&}]{size}{ = {\ttfamily \{\}}, }\item[{\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}}}]{num\+\_\+nonzeros}{ = {\ttfamily \{\}}, }\item[{std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1strategy__type}{strategy\+\_\+type}} $>$}]{strategy}{ = {\ttfamily nullptr}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Creates an uninitialized CSR matrix of the specified size. 


\begin{DoxyParams}{Parameters}
{\em exec} & \doxylink{classgko_1_1Executor}{Executor} associated to the matrix \\
\hline
{\em size} & size of the matrix \\
\hline
{\em num\+\_\+nonzeros} & number of nonzeros \\
\hline
{\em strategy} & the strategy of CSR, or the default strategy if set to nullptr\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A smart pointer to the newly created matrix. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1matrix_1_1Csr_a5261906eecda7da087638981d011a9b2}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!create@{create}}
\index{create@{create}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{create()}{create()}\hspace{0.1cm}{\footnotesize\ttfamily [4/4]}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a5261906eecda7da087638981d011a9b2} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+create (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1strategy__type}{strategy\+\_\+type}} $>$}]{strategy}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Creates an uninitialized CSR matrix of the specified size. 


\begin{DoxyParams}{Parameters}
{\em exec} & \doxylink{classgko_1_1Executor}{Executor} associated to the matrix \\
\hline
{\em strategy} & the strategy of CSR\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A smart pointer to the newly created matrix. 
\end{DoxyReturn}


Referenced by \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1automatical_a4ba9ec73abf4ac52d00811065d50b6d9}{gko::\+matrix::\+\+Csr$<$ Value\+Type, Index\+Type $>$::\+automatical::\+automatical()}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_ade389c774daaffba807343bd3f148af7}{gko::\+matrix::\+\+Csr$<$ value\+\_\+type, index\+\_\+type $>$::\+create()}}, and \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1load__balance_ab1862c520e88fb4e801a8fec8ab44328}{gko::\+matrix::\+\+Csr$<$ Value\+Type, Index\+Type $>$::\+load\+\_\+balance::\+load\+\_\+balance()}}.

\Hypertarget{classgko_1_1matrix_1_1Csr_a8e17829add94a2a443105cceca3a5808}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!create\_const@{create\_const}}
\index{create\_const@{create\_const}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{create\_const()}{create\_const()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a8e17829add94a2a443105cceca3a5808} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+unique\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+create\+\_\+const (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{exec}{, }\item[{const \doxymbox{\hyperlink{structgko_1_1dim}{dim}}$<$ 2 $>$ \&}]{size}{, }\item[{gko::\+detail::\+const\+\_\+array\+\_\+view$<$ Value\+Type $>$ \&\&}]{values}{, }\item[{gko::\+detail::\+const\+\_\+array\+\_\+view$<$ Index\+Type $>$ \&\&}]{col\+\_\+idxs}{, }\item[{gko::\+detail::\+const\+\_\+array\+\_\+view$<$ Index\+Type $>$ \&\&}]{row\+\_\+ptrs}{, }\item[{std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1strategy__type}{strategy\+\_\+type}} $>$}]{strategy}{ = {\ttfamily nullptr}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Creates a constant (immutable) \doxylink{classgko_1_1matrix_1_1Csr}{Csr} matrix from a set of constant arrays. 


\begin{DoxyParams}{Parameters}
{\em exec} & the executor to create the matrix on \\
\hline
{\em size} & the dimensions of the matrix \\
\hline
{\em values} & the value array of the matrix \\
\hline
{\em col\+\_\+idxs} & the column index array of the matrix \\
\hline
{\em row\+\_\+ptrs} & the row pointer array of the matrix \\
\hline
{\em strategy} & the strategy the matrix uses for Sp\+MV operations \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A smart pointer to the constant matrix wrapping the input arrays (if they reside on the same executor as the matrix) or a copy of these arrays on the correct executor.

A smart pointer to the newly created matrix. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1matrix_1_1Csr_a714b3534b309ecb2bb05958dbbf4885e}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!create\_submatrix@{create\_submatrix}}
\index{create\_submatrix@{create\_submatrix}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{create\_submatrix()}{create\_submatrix()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a714b3534b309ecb2bb05958dbbf4885e} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}}$<$ Value\+Type, Index\+Type $>$ $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+create\+\_\+submatrix (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1index__set}{index\+\_\+set}}$<$ Index\+Type $>$ \&}]{row\+\_\+index\+\_\+set}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1index__set}{index\+\_\+set}}$<$ Index\+Type $>$ \&}]{column\+\_\+index\+\_\+set}{}\end{DoxyParamCaption}) const}



Creates a submatrix from this \doxylink{classgko_1_1matrix_1_1Csr}{Csr} matrix given row and column \doxylink{classgko_1_1index__set}{index\+\_\+set} objects. 


\begin{DoxyParams}{Parameters}
{\em row\+\_\+index\+\_\+set} & the row index set containing the set of rows to be in the submatrix. \\
\hline
{\em column\+\_\+index\+\_\+set} & the col index set containing the set of columns to be in the submatrix. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A new CSR matrix with the elements that belong to the row and columns of this matrix as specified by the index sets. 
\end{DoxyReturn}
\begin{DoxyNote}{Note}
This is not a view but creates a new, separate CSR matrix. 
\end{DoxyNote}
\Hypertarget{classgko_1_1matrix_1_1Csr_a2d1d5b4b310ed444ccbb178e241a9822}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!create\_submatrix@{create\_submatrix}}
\index{create\_submatrix@{create\_submatrix}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{create\_submatrix()}{create\_submatrix()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a2d1d5b4b310ed444ccbb178e241a9822} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}}$<$ Value\+Type, Index\+Type $>$ $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+create\+\_\+submatrix (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{structgko_1_1span}{span}} \&}]{row\+\_\+span}{, }\item[{const \doxymbox{\hyperlink{structgko_1_1span}{span}} \&}]{column\+\_\+span}{}\end{DoxyParamCaption}) const}



Creates a submatrix from this \doxylink{classgko_1_1matrix_1_1Csr}{Csr} matrix given row and column spans. 


\begin{DoxyParams}{Parameters}
{\em row\+\_\+span} & the row span containing the contiguous set of rows to be in the submatrix. \\
\hline
{\em column\+\_\+span} & the column span containing the contiguous set of columns to be in the submatrix. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A new CSR matrix with the elements that belong to the row and columns of this matrix as specified by the index sets. 
\end{DoxyReturn}
\begin{DoxyNote}{Note}
This is not a view but creates a new, separate CSR matrix. 
\end{DoxyNote}
\Hypertarget{classgko_1_1matrix_1_1Csr_a75ddc647a3998ca75e15ac8cd29c24ce}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!extract\_diagonal@{extract\_diagonal}}
\index{extract\_diagonal@{extract\_diagonal}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{extract\_diagonal()}{extract\_diagonal()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a75ddc647a3998ca75e15ac8cd29c24ce} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Diagonal}{Diagonal}}$<$ Value\+Type $>$ $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+extract\+\_\+diagonal (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



Extracts the diagonal entries of the matrix into a vector. 


\begin{DoxyParams}{Parameters}
{\em diag} & the vector into which the diagonal will be written \\
\hline
\end{DoxyParams}


Implements \doxymbox{\hyperlink{classgko_1_1DiagonalExtractable_aad6b7e3977359d5a3beab6b27bbb64c4}{gko::\+\+Diagonal\+Extractable$<$ default\+\_\+precision $>$}}.

\Hypertarget{classgko_1_1matrix_1_1Csr_ae701fb37da0c745c314fb3472cef5df4}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!get\_col\_idxs@{get\_col\_idxs}}
\index{get\_col\_idxs@{get\_col\_idxs}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_col\_idxs()}{get\_col\_idxs()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_ae701fb37da0c745c314fb3472cef5df4} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
index\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+get\+\_\+col\+\_\+idxs (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the column indexes of the matrix. 

\begin{DoxyReturn}{Returns}
the column indexes of the matrix. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1matrix_1_1Csr_ac3a1ef745f900fd534999a69eae3ff32}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!get\_const\_col\_idxs@{get\_const\_col\_idxs}}
\index{get\_const\_col\_idxs@{get\_const\_col\_idxs}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_const\_col\_idxs()}{get\_const\_col\_idxs()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_ac3a1ef745f900fd534999a69eae3ff32} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
const index\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+get\+\_\+const\+\_\+col\+\_\+idxs (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the column indexes of the matrix.    

\begin{DoxyReturn}{Returns}
the column indexes of the matrix.   
\end{DoxyReturn}
\begin{DoxyNote}{Note}
This is the constant version of the function, which can be significantly more memory efficient than the non-\/constant version, so always prefer this version. 
\end{DoxyNote}
\Hypertarget{classgko_1_1matrix_1_1Csr_a29e603a026ca798346e74ee8408b2f51}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!get\_const\_row\_ptrs@{get\_const\_row\_ptrs}}
\index{get\_const\_row\_ptrs@{get\_const\_row\_ptrs}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_const\_row\_ptrs()}{get\_const\_row\_ptrs()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a29e603a026ca798346e74ee8408b2f51} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
const index\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+get\+\_\+const\+\_\+row\+\_\+ptrs (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the row pointers of the matrix.    

\begin{DoxyReturn}{Returns}
the row pointers of the matrix.   
\end{DoxyReturn}
\begin{DoxyNote}{Note}
This is the constant version of the function, which can be significantly more memory efficient than the non-\/constant version, so always prefer this version. 
\end{DoxyNote}
\Hypertarget{classgko_1_1matrix_1_1Csr_a396e0e99ce4fefca9dcbe45e4fccc838}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!get\_const\_srow@{get\_const\_srow}}
\index{get\_const\_srow@{get\_const\_srow}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_const\_srow()}{get\_const\_srow()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a396e0e99ce4fefca9dcbe45e4fccc838} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
const index\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+get\+\_\+const\+\_\+srow (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the starting rows.    

\begin{DoxyReturn}{Returns}
the starting rows.   
\end{DoxyReturn}
\begin{DoxyNote}{Note}
This is the constant version of the function, which can be significantly more memory efficient than the non-\/constant version, so always prefer this version. 
\end{DoxyNote}
\Hypertarget{classgko_1_1matrix_1_1Csr_aad85907f0b9717618ed5dabcd56e4e39}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!get\_const\_values@{get\_const\_values}}
\index{get\_const\_values@{get\_const\_values}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_const\_values()}{get\_const\_values()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_aad85907f0b9717618ed5dabcd56e4e39} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
const value\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+get\+\_\+const\+\_\+values (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the values of the matrix.    

\begin{DoxyReturn}{Returns}
the values of the matrix.   
\end{DoxyReturn}
\begin{DoxyNote}{Note}
This is the constant version of the function, which can be significantly more memory efficient than the non-\/constant version, so always prefer this version. 
\end{DoxyNote}
\Hypertarget{classgko_1_1matrix_1_1Csr_a5b8c25c2fb1bbea62a3afdec8f8340c5}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!get\_num\_srow\_elements@{get\_num\_srow\_elements}}
\index{get\_num\_srow\_elements@{get\_num\_srow\_elements}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_num\_srow\_elements()}{get\_num\_srow\_elements()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a5b8c25c2fb1bbea62a3afdec8f8340c5} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+get\+\_\+num\+\_\+srow\+\_\+elements (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the number of the srow stored elements (involved warps). 

\begin{DoxyReturn}{Returns}
the number of the srow stored elements (involved warps) 
\end{DoxyReturn}
\Hypertarget{classgko_1_1matrix_1_1Csr_ab70c085fc3df11a4ed9fe74b40844c5c}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!get\_num\_stored\_elements@{get\_num\_stored\_elements}}
\index{get\_num\_stored\_elements@{get\_num\_stored\_elements}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_num\_stored\_elements()}{get\_num\_stored\_elements()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_ab70c085fc3df11a4ed9fe74b40844c5c} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+get\+\_\+num\+\_\+stored\+\_\+elements (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the number of elements explicitly stored in the matrix. 

\begin{DoxyReturn}{Returns}
the number of elements explicitly stored in the matrix 
\end{DoxyReturn}
\Hypertarget{classgko_1_1matrix_1_1Csr_a83f2a63175bbffa39808543a3d4b3f3b}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!get\_row\_ptrs@{get\_row\_ptrs}}
\index{get\_row\_ptrs@{get\_row\_ptrs}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_row\_ptrs()}{get\_row\_ptrs()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a83f2a63175bbffa39808543a3d4b3f3b} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
index\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+get\+\_\+row\+\_\+ptrs (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the row pointers of the matrix. 

\begin{DoxyReturn}{Returns}
the row pointers of the matrix. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1matrix_1_1Csr_a4a8d2975871fdd779e447a8ef9e991d1}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!get\_srow@{get\_srow}}
\index{get\_srow@{get\_srow}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_srow()}{get\_srow()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a4a8d2975871fdd779e447a8ef9e991d1} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
index\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+get\+\_\+srow (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the starting rows. 

\begin{DoxyReturn}{Returns}
the starting rows. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1matrix_1_1Csr_abb20626b04360436259fdc13b00e59b0}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!get\_strategy@{get\_strategy}}
\index{get\_strategy@{get\_strategy}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_strategy()}{get\_strategy()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_abb20626b04360436259fdc13b00e59b0} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1strategy__type}{strategy\+\_\+type}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+get\+\_\+strategy (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the strategy. 

\begin{DoxyReturn}{Returns}
the strategy 
\end{DoxyReturn}
\Hypertarget{classgko_1_1matrix_1_1Csr_ade22bdc09b0ef6d9740feeaa702fdd51}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!get\_values@{get\_values}}
\index{get\_values@{get\_values}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_values()}{get\_values()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_ade22bdc09b0ef6d9740feeaa702fdd51} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
value\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+get\+\_\+values (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the values of the matrix. 

\begin{DoxyReturn}{Returns}
the values of the matrix. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1matrix_1_1Csr_a3ed41ecd59dcfe1b805ed910fada56a9}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!inv\_scale@{inv\_scale}}
\index{inv\_scale@{inv\_scale}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{inv\_scale()}{inv\_scale()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a3ed41ecd59dcfe1b805ed910fada56a9} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
void \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+inv\+\_\+scale (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$}]{alpha}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Scales the matrix with the inverse of a scalar. 


\begin{DoxyParams}{Parameters}
{\em alpha} & The entire matrix is scaled by 1 /\+ alpha. alpha has to be a 1x1 \doxylink{classgko_1_1matrix_1_1Dense}{Dense} matrix. \\
\hline
\end{DoxyParams}
\Hypertarget{classgko_1_1matrix_1_1Csr_aab232ee1dfd8b84881e66260cf850cd5}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!multiply@{multiply}}
\index{multiply@{multiply}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{multiply()}{multiply()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_aab232ee1dfd8b84881e66260cf850cd5} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+multiply (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}}$<$ Value\+Type, Index\+Type $>$ $>$}]{other}{}\end{DoxyParamCaption}) const}



Computes the sparse matrix product {\ttfamily this \texorpdfstring{$\ast$}{*} other} on the executor of this matrix. 


\begin{DoxyParams}{Parameters}
{\em other} & the matrix with which the product will be computed. It needs to be sorted by column indices when using \doxylink{classgko_1_1OmpExecutor}{Omp\+Executor} or \doxylink{classgko_1_1DpcppExecutor}{Dpcpp\+Executor} for {\ttfamily this}. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the product of the two matrices, stored on the same executor as this matrix. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1matrix_1_1Csr_a3cc824322b23f2256718c761841ece8e}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!multiply\_add@{multiply\_add}}
\index{multiply\_add@{multiply\_add}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{multiply\_add()}{multiply\_add()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a3cc824322b23f2256718c761841ece8e} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+multiply\+\_\+add (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}}$<$ value\+\_\+type $>$ $>$}]{scale\+\_\+mult}{, }\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}}$<$ Value\+Type, Index\+Type $>$ $>$}]{mtx\+\_\+mult}{, }\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}}$<$ value\+\_\+type $>$ $>$}]{scale\+\_\+add}{, }\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}}$<$ Value\+Type, Index\+Type $>$ $>$}]{mtx\+\_\+add}{}\end{DoxyParamCaption}) const}



Computes the sparse matrix product {\ttfamily scale\+\_\+mult \texorpdfstring{$\ast$}{*} this \texorpdfstring{$\ast$}{*} mtx\+\_\+mult + \doxylink{classgko_1_1matrix_1_1Csr_a4a9bcad293b828a49dac453195abd212}{scale\+\_\+add} \texorpdfstring{$\ast$}{*} mtx\+\_\+add} on the executor of this matrix. 


\begin{DoxyParams}{Parameters}
{\em scale\+\_\+mult} & the scalar by which the matrix product will be scaled. \\
\hline
{\em mtx\+\_\+mult} & the matrix with which the product will be computed. It needs to be sorted by column indices when using \doxylink{classgko_1_1OmpExecutor}{Omp\+Executor} or \doxylink{classgko_1_1DpcppExecutor}{Dpcpp\+Executor} for {\ttfamily this}. \\
\hline
{\em \doxylink{classgko_1_1matrix_1_1Csr_a4a9bcad293b828a49dac453195abd212}{scale\+\_\+add}} & the scalar by which the matrix mtx\+\_\+add will be scaled. \\
\hline
{\em mtx\+\_\+add} & the matrix which will be added to the product, scaled by scale\+\_\+add. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the result of the computation, stored on the same executor as this matrix. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1matrix_1_1Csr_a058af579839922bae27da8bb42f94b66}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!multiply\_add\_reuse@{multiply\_add\_reuse}}
\index{multiply\_add\_reuse@{multiply\_add\_reuse}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{multiply\_add\_reuse()}{multiply\_add\_reuse()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a058af579839922bae27da8bb42f94b66} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+pair$<$ std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1multiply__add__reuse__info}{multiply\+\_\+add\+\_\+reuse\+\_\+info}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+multiply\+\_\+add\+\_\+reuse (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}}$<$ value\+\_\+type $>$ $>$}]{scale\+\_\+mult}{, }\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}}$<$ Value\+Type, Index\+Type $>$ $>$}]{mtx\+\_\+mult}{, }\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}}$<$ value\+\_\+type $>$ $>$}]{scale\+\_\+add}{, }\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}}$<$ Value\+Type, Index\+Type $>$ $>$}]{mtx\+\_\+add}{}\end{DoxyParamCaption}) const}



Computes the sparse matrix product {\ttfamily scale\+\_\+mult \texorpdfstring{$\ast$}{*} this \texorpdfstring{$\ast$}{*} mtx\+\_\+mult + \doxylink{classgko_1_1matrix_1_1Csr_a4a9bcad293b828a49dac453195abd212}{scale\+\_\+add} \texorpdfstring{$\ast$}{*} mtx\+\_\+add} on the executor of this matrix, and necessary data for value updates:\+ 


\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keyword}{auto}\ [result,\ reuse]\ =\ mtx-\/>multiply\_add\_reuse(sm,\ mm,\ sa,\ ma);}
\DoxyCodeLine{change\_values(mtx,\ sm,\ mm,\ sa,\ ma);}
\DoxyCodeLine{reuse-\/>update\_values(mtx,\ sm,\ mm,\ sa,\ ma,\ result);}

\end{DoxyCode}



\begin{DoxyParams}{Parameters}
{\em scale\+\_\+mult} & the scalar by which the matrix product will be scaled. \\
\hline
{\em mtx\+\_\+mult} & the matrix with which the product will be computed. It needs to be sorted by column indices when using \doxylink{classgko_1_1OmpExecutor}{Omp\+Executor} or \doxylink{classgko_1_1DpcppExecutor}{Dpcpp\+Executor} for {\ttfamily this}. \\
\hline
{\em \doxylink{classgko_1_1matrix_1_1Csr_a4a9bcad293b828a49dac453195abd212}{scale\+\_\+add}} & the scalar by which the matrix mtx\+\_\+add will be scaled. \\
\hline
{\em mtx\+\_\+add} & the matrix which will be added to the product, scaled by scale\+\_\+add. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
std::\+pair containing the result of the computation, stored on the same executor as this matrix, and a \doxylink{classgko_1_1matrix_1_1Csr_1_1multiply__add__reuse__info}{multiply\+\_\+add\+\_\+reuse\+\_\+info} object allowing value updates to the output matrix. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1matrix_1_1Csr_a091a0013a0ef9a17d2cbf5ac5f09e06b}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!multiply\_reuse@{multiply\_reuse}}
\index{multiply\_reuse@{multiply\_reuse}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{multiply\_reuse()}{multiply\_reuse()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a091a0013a0ef9a17d2cbf5ac5f09e06b} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+pair$<$ std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1multiply__reuse__info}{multiply\+\_\+reuse\+\_\+info}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+multiply\+\_\+reuse (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}}$<$ Value\+Type, Index\+Type $>$ $>$}]{other}{}\end{DoxyParamCaption}) const}



Computes the sparse matrix product {\ttfamily this \texorpdfstring{$\ast$}{*} other} on the executor of this matrix, and necessary data for value updates:\+ 


\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keyword}{auto}\ [C,\ reuse]\ =\ A-\/>multiply\_reuse(B);}
\DoxyCodeLine{change\_values(A,\ B);}
\DoxyCodeLine{reuse-\/>update\_values(A,\ B,\ C);}

\end{DoxyCode}



\begin{DoxyParams}{Parameters}
{\em other} & the matrix with which the product will be computed. It needs to be sorted by column indices when using \doxylink{classgko_1_1OmpExecutor}{Omp\+Executor} or \doxylink{classgko_1_1DpcppExecutor}{Dpcpp\+Executor} for {\ttfamily this}. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
std::\+pair containing the product of the two matrices, stored on the same executor as this matrix, and a \doxylink{classgko_1_1matrix_1_1Csr_1_1multiply__reuse__info}{multiply\+\_\+reuse\+\_\+info} object allowing value updates to the output matrix. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1matrix_1_1Csr_a0f8038628e96f1995e4942863415ad63}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!operator=@{operator=}}
\index{operator=@{operator=}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a0f8038628e96f1995e4942863415ad63} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} \& \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+operator= (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}}$<$ Value\+Type, Index\+Type $>$ \&}]{}{}\end{DoxyParamCaption})}



Copy-\/assigns a \doxylink{classgko_1_1matrix_1_1Csr}{Csr} matrix. 

Preserves executor, copies everything else. \Hypertarget{classgko_1_1matrix_1_1Csr_a96d132e8d22d7565f93540eb50bcc32c}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!operator=@{operator=}}
\index{operator=@{operator=}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a96d132e8d22d7565f93540eb50bcc32c} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} \& \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+operator= (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}}$<$ Value\+Type, Index\+Type $>$ \&\&}]{}{}\end{DoxyParamCaption})}



Move-\/assigns a \doxylink{classgko_1_1matrix_1_1Csr}{Csr} matrix. 

Preserves executor, moves the data and leaves the moved-\/from object in an empty state (0x0 \doxylink{classgko_1_1LinOp}{Lin\+Op} with unchanged executor and strategy, no nonzeros and valid row pointers). \Hypertarget{classgko_1_1matrix_1_1Csr_a898b9b458ff9e26c87c277fba3a9bdae}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!permute@{permute}}
\index{permute@{permute}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{permute()}{permute()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a898b9b458ff9e26c87c277fba3a9bdae} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+permute (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation}{Permutation}}$<$ index\+\_\+type $>$ $>$}]{permutation}{, }\item[{\doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\+\_\+mode}}}]{mode}{ = {\ttfamily \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972afeca3c730601be7fd57f1f0b668b4637}{permute\+\_\+mode::\+symmetric}}}}\end{DoxyParamCaption}) const}



Creates a permuted copy $A\textnormal{\textquotesingle}$ of this matrix $A$ with the given permutation $P$. 

By default, this computes a symmetric permutation (\doxylink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972afeca3c730601be7fd57f1f0b668b4637}{permute\+\_\+mode::\+symmetric}). For the effect of the different permutation modes, see \doxylink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\+\_\+mode}


\begin{DoxyParams}{Parameters}
{\em permutation} & The input permutation. \\
\hline
{\em mode} & The permutation mode. If \doxylink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972aa91c78e040f7b9d158f381e197f8beb4}{permute\+\_\+mode::\+inverse} is set, we use the inverse permutation $P^{-1}$ instead of $P$. If \doxylink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972adf347a373b8f92aa0ae3dd920a5ec2f6}{permute\+\_\+mode::\+rows} is set, the rows will be permuted. If \doxylink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972a54ca84a794888fe8d92834787dfa935a}{permute\+\_\+mode::\+columns} is set, the columns will be permuted. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The permuted matrix. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1matrix_1_1Csr_af0538658a2fad819129927dbd39de0ae}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!permute@{permute}}
\index{permute@{permute}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{permute()}{permute()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_af0538658a2fad819129927dbd39de0ae} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+permute (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation}{Permutation}}$<$ index\+\_\+type $>$ $>$}]{row\+\_\+permutation}{, }\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation}{Permutation}}$<$ index\+\_\+type $>$ $>$}]{column\+\_\+permutation}{, }\item[{bool}]{invert}{ = {\ttfamily false}}\end{DoxyParamCaption}) const}



Creates a non-\/symmetrically permuted copy $A\textnormal{\textquotesingle}$ of this matrix $A$ with the given row and column permutations $P$ and $Q$. 

The operation will compute $A\textnormal{\textquotesingle}(i, j) = A(p[i], q[j])$, or $A\textnormal{\textquotesingle} = P A Q^T$ if {\ttfamily invert} is {\ttfamily false}, and $A\textnormal{\textquotesingle}(p[i], q[j]) = A(i,j)$, or $A\textnormal{\textquotesingle} = P^{-1} A Q^{-T}$ if {\ttfamily invert} is {\ttfamily true}.


\begin{DoxyParams}{Parameters}
{\em row\+\_\+permutation} & The permutation $P$ to apply to the rows \\
\hline
{\em column\+\_\+permutation} & The permutation $Q$ to apply to the columns \\
\hline
{\em invert} & If set to {\ttfamily false}, uses the input permutations, otherwise uses their inverses $P^{-1}, Q^{-1}$ \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The permuted matrix. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1matrix_1_1Csr_a05d792d40944735476606320d91290f4}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!permute\_reuse@{permute\_reuse}}
\index{permute\_reuse@{permute\_reuse}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{permute\_reuse()}{permute\_reuse()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a05d792d40944735476606320d91290f4} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+pair$<$ std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$, \doxymbox{\hyperlink{structgko_1_1matrix_1_1Csr_1_1permuting__reuse__info}{permuting\+\_\+reuse\+\_\+info}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+permute\+\_\+reuse (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation}{Permutation}}$<$ index\+\_\+type $>$ $>$}]{permutation}{, }\item[{\doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\+\_\+mode}}}]{mode}{ = {\ttfamily \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972afeca3c730601be7fd57f1f0b668b4637}{permute\+\_\+mode::\+symmetric}}}}\end{DoxyParamCaption}) const}



Computes the operations necessary to propagate changed values from a matrix A to a permuted matrix. 

The semantics of this function match those of permute(ptr\+\_\+param$<$const Permutation$<$index\+\_\+type$>$$>$, permute\+\_\+mode). Updating values works as follows:\+ 
\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keyword}{auto}\ [permuted,\ reuse]\ =\ matrix-\/>permute\_reuse(permutation,\ mode);}
\DoxyCodeLine{change\_values(matrix);}
\DoxyCodeLine{reuse-\/>update\_values(matrix,\ permuted);}

\end{DoxyCode}
 
\begin{DoxyParams}{Parameters}
{\em permutation} & The input permutation. \\
\hline
{\em mode} & The permutation mode. If \doxylink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972aa91c78e040f7b9d158f381e197f8beb4}{permute\+\_\+mode::\+inverse} is set, we use the inverse permutation $P^{-1}$ instead of $P$. If \doxylink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972adf347a373b8f92aa0ae3dd920a5ec2f6}{permute\+\_\+mode::\+rows} is set, the rows will be permuted. If \doxylink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972a54ca84a794888fe8d92834787dfa935a}{permute\+\_\+mode::\+columns} is set, the columns will be permuted. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
an std::\+pair consisting of the permuted matrix and the reuse info that can be used to update values in the permuted matrix. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1matrix_1_1Csr_a6059f7474424460e1e0c25f5bf2c7c37}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!permute\_reuse@{permute\_reuse}}
\index{permute\_reuse@{permute\_reuse}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{permute\_reuse()}{permute\_reuse()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a6059f7474424460e1e0c25f5bf2c7c37} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+pair$<$ std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$, \doxymbox{\hyperlink{structgko_1_1matrix_1_1Csr_1_1permuting__reuse__info}{permuting\+\_\+reuse\+\_\+info}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+permute\+\_\+reuse (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation}{Permutation}}$<$ index\+\_\+type $>$ $>$}]{row\+\_\+permutation}{, }\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation}{Permutation}}$<$ index\+\_\+type $>$ $>$}]{column\+\_\+permutation}{, }\item[{bool}]{invert}{ = {\ttfamily false}}\end{DoxyParamCaption}) const}



Computes the operations necessary to propagate changed values from a matrix A to a permuted matrix. 

The semantics of this function match those of permute(ptr\+\_\+param$<$const Permutation$<$index\+\_\+type$>$$>$, ptr\+\_\+param$<$const        Permutation$<$index\+\_\+type$>$$>$, bool). Updating values works as follows:\+ 
\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keyword}{auto}\ [permuted,\ reuse]\ =\ matrix-\/>permute\_reuse(row\_perm,\ col\_perm,\ inv);}
\DoxyCodeLine{change\_values(matrix);}
\DoxyCodeLine{reuse-\/>update\_values(matrix,\ permuted);}

\end{DoxyCode}
 
\begin{DoxyParams}{Parameters}
{\em row\+\_\+permutation} & The permutation $P$ to apply to the rows \\
\hline
{\em column\+\_\+permutation} & The permutation $Q$ to apply to the columns \\
\hline
{\em invert} & If set to {\ttfamily false}, uses the input permutations, otherwise uses their inverses $P^{-1}, Q^{-1}$ \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
an std::\+pair consisting of the permuted matrix and the reuse info that can be used to update values in the permuted matrix. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1matrix_1_1Csr_ad1db62aaad519a9774dde49ff411edde}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!scale@{scale}}
\index{scale@{scale}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{scale()}{scale()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_ad1db62aaad519a9774dde49ff411edde} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
void \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+scale (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$}]{alpha}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Scales the matrix with a scalar. 


\begin{DoxyParams}{Parameters}
{\em alpha} & The entire matrix is scaled by alpha. alpha has to be a 1x1 \doxylink{classgko_1_1matrix_1_1Dense}{Dense} matrix. \\
\hline
\end{DoxyParams}
\Hypertarget{classgko_1_1matrix_1_1Csr_a4a9bcad293b828a49dac453195abd212}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!scale\_add@{scale\_add}}
\index{scale\_add@{scale\_add}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{scale\_add()}{scale\_add()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a4a9bcad293b828a49dac453195abd212} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+scale\+\_\+add (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}}$<$ value\+\_\+type $>$ $>$}]{scale\+\_\+this}{, }\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}}$<$ value\+\_\+type $>$ $>$}]{scale\+\_\+other}{, }\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}}$<$ Value\+Type, Index\+Type $>$ $>$}]{mtx\+\_\+other}{}\end{DoxyParamCaption}) const}



Computes the sparse matrix sum {\ttfamily scale\+\_\+this \texorpdfstring{$\ast$}{*} this + scale\+\_\+other \texorpdfstring{$\ast$}{*} mtx\+\_\+add} on the executor of this matrix. 

This matrix needs to be sorted by column index, otherwise the result will be incorrect.


\begin{DoxyParams}{Parameters}
{\em scale\+\_\+this} & the scalar by which this matrix will be scaled. \\
\hline
{\em scale\+\_\+other} & the scalar by which this matrix will be scaled. \\
\hline
{\em mtx\+\_\+other} & the matrix which will be added to this, scaled by scale\+\_\+other. It needs to be sorted by column index, otherwise the result will be incorrect. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the result of the computation, stored on the same executor as this matrix. 
\end{DoxyReturn}


Referenced by \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1multiply__add__reuse__info_a97921c3b4c3005a51e5a3fc91978f6c2}{gko::\+matrix::\+\+Csr$<$ Value\+Type, Index\+Type $>$::\+multiply\+\_\+add\+\_\+reuse\+\_\+info::\+update\+\_\+values()}}.

\Hypertarget{classgko_1_1matrix_1_1Csr_a1c3c66d3baf3b05e52992b6f3f7611f7}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!scale\_permute@{scale\_permute}}
\index{scale\_permute@{scale\_permute}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{scale\_permute()}{scale\_permute()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a1c3c66d3baf3b05e52992b6f3f7611f7} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+scale\+\_\+permute (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1ScaledPermutation}{Scaled\+Permutation}}$<$ value\+\_\+type, index\+\_\+type $>$ $>$}]{permutation}{, }\item[{\doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\+\_\+mode}}}]{}{ = {\ttfamily \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972afeca3c730601be7fd57f1f0b668b4637}{permute\+\_\+mode::\+symmetric}}}}\end{DoxyParamCaption}) const}



Creates a scaled and permuted copy of this matrix. 

For an explanation of the permutation modes, see permute(ptr\+\_\+param$<$const Permutation$<$index\+\_\+type$>$$>$, permute\+\_\+mode)


\begin{DoxyParams}{Parameters}
{\em permutation} & The scaled permutation. \\
\hline
{\em mode} & The permutation mode. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The permuted matrix. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1matrix_1_1Csr_acf9d804a766061d117e78a3534b2e80d}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!scale\_permute@{scale\_permute}}
\index{scale\_permute@{scale\_permute}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{scale\_permute()}{scale\_permute()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_acf9d804a766061d117e78a3534b2e80d} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+scale\+\_\+permute (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1ScaledPermutation}{Scaled\+Permutation}}$<$ value\+\_\+type, index\+\_\+type $>$ $>$}]{row\+\_\+permutation}{, }\item[{\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1matrix_1_1ScaledPermutation}{Scaled\+Permutation}}$<$ value\+\_\+type, index\+\_\+type $>$ $>$}]{column\+\_\+permutation}{, }\item[{bool}]{invert}{ = {\ttfamily false}}\end{DoxyParamCaption}) const}



Creates a scaled and permuted copy of this matrix. 

For an explanation of the parameters, see permute(ptr\+\_\+param$<$const Permutation$<$index\+\_\+type$>$$>$, ptr\+\_\+param$<$const \+Permutation$<$index\+\_\+type$>$$>$, permute\+\_\+mode)


\begin{DoxyParams}{Parameters}
{\em row\+\_\+permutation} & The scaled row permutation. \\
\hline
{\em column\+\_\+permutation} & The scaled column permutation. \\
\hline
{\em invert} & If set to {\ttfamily false}, uses the input permutations, otherwise uses their inverses $P^{-1}, Q^{-1}$ \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The permuted matrix. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1matrix_1_1Csr_a3e0f6f2a9d773de0551068d514bf9703}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!set\_strategy@{set\_strategy}}
\index{set\_strategy@{set\_strategy}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{set\_strategy()}{set\_strategy()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_a3e0f6f2a9d773de0551068d514bf9703} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
void \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+set\+\_\+strategy (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_1_1strategy__type}{strategy\+\_\+type}} $>$}]{strategy}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Set the strategy. 


\begin{DoxyParams}{Parameters}
{\em strategy} & the csr strategy \\
\hline
\end{DoxyParams}
\Hypertarget{classgko_1_1matrix_1_1Csr_aaa850dcdfabfc020918fa870e50c0b11}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!transpose@{transpose}}
\index{transpose@{transpose}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{transpose()}{transpose()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_aaa850dcdfabfc020918fa870e50c0b11} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+transpose (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the transpose of the \doxylink{classgko_1_1Transposable}{Transposable} object. 

\begin{DoxyReturn}{Returns}
a pointer to the new transposed object 
\end{DoxyReturn}


Implements \doxymbox{\hyperlink{classgko_1_1Transposable_adf04fdf2ed79b117edbef42520bfe8fa}{gko::\+\+Transposable}}.

\Hypertarget{classgko_1_1matrix_1_1Csr_accf30d10cf9b83da853b72c138fb192f}\index{gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}!transpose\_reuse@{transpose\_reuse}}
\index{transpose\_reuse@{transpose\_reuse}!gko::matrix::Csr$<$ ValueType, IndexType $>$@{gko::matrix::Csr$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{transpose\_reuse()}{transpose\_reuse()}}
{\footnotesize\ttfamily \label{classgko_1_1matrix_1_1Csr_accf30d10cf9b83da853b72c138fb192f} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+pair$<$ std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a9094bdf34a8c56f115252f0fe5a7f5ae}{Csr}} $>$, \doxymbox{\hyperlink{structgko_1_1matrix_1_1Csr_1_1permuting__reuse__info}{permuting\+\_\+reuse\+\_\+info}} $>$ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{gko::\+matrix::\+\+Csr}}$<$ Value\+Type, Index\+Type $>$::\+transpose\+\_\+reuse (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const}



Computes the necessary data to update a transposed matrix from its original matrix. 


\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keyword}{auto}\ [transposed,\ reuse]\ =\ matrix-\/>transpose\_reuse();}
\DoxyCodeLine{change\_values(matrix);}
\DoxyCodeLine{reuse-\/>update\_values(matrix,\ transposed);}

\end{DoxyCode}
 \begin{DoxyReturn}{Returns}
an std::\+pair consisting of the transposed matrix and a reuse info struct that can be used to update values in the transposed matrix. 
\end{DoxyReturn}


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