\doxysection{gko::\+factorization::\+Par\+Ilut\texorpdfstring{$<$}{<} Value\+Type, Index\+Type \texorpdfstring{$>$}{>}::\+parameters\+\_\+type Struct Reference}
\hypertarget{structgko_1_1factorization_1_1ParIlut_1_1parameters__type}{}\label{structgko_1_1factorization_1_1ParIlut_1_1parameters__type}\index{gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type@{gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type}}


Inheritance diagram for gko::\+factorization::\+Par\+Ilut\texorpdfstring{$<$}{<} Value\+Type, Index\+Type \texorpdfstring{$>$}{>}::\+parameters\+\_\+type:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=253pt]{structgko_1_1factorization_1_1ParIlut_1_1parameters__type__inherit__graph}
\end{center}
\end{figure}


Collaboration diagram for gko::\+factorization::\+Par\+Ilut\texorpdfstring{$<$}{<} Value\+Type, Index\+Type \texorpdfstring{$>$}{>}::\+parameters\+\_\+type:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{structgko_1_1factorization_1_1ParIlut_1_1parameters__type__coll__graph}
\end{center}
\end{figure}
\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a59f73656121a6ce4a044011eaa44ac38}\label{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a59f73656121a6ce4a044011eaa44ac38} 
{\footnotesize template$<$typename... Args$>$ }\\auto {\bfseries with\+\_\+iterations} (Args \&\&... \+\_\+value) -\/$>$ std::\+decay\+\_\+t$<$ decltype(\texorpdfstring{$\ast$}{*}(this-\/$>$self()))$>$ \&
\item 
\Hypertarget{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a109c6ea5c50a68992bca6522f52cc71a}\label{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a109c6ea5c50a68992bca6522f52cc71a} 
{\footnotesize template$<$typename... Args$>$ }\\auto {\bfseries with\+\_\+skip\+\_\+sorting} (Args \&\&... \+\_\+value) -\/$>$ std::\+decay\+\_\+t$<$ decltype(\texorpdfstring{$\ast$}{*}(this-\/$>$self()))$>$ \&
\item 
\Hypertarget{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_aed9edaa086ebd777aa073081a9414820}\label{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_aed9edaa086ebd777aa073081a9414820} 
{\footnotesize template$<$typename... Args$>$ }\\auto {\bfseries with\+\_\+approximate\+\_\+select} (Args \&\&... \+\_\+value) -\/$>$ std::\+decay\+\_\+t$<$ decltype(\texorpdfstring{$\ast$}{*}(this-\/$>$self()))$>$ \&
\item 
\Hypertarget{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a8a6fe8fd57573897e00054281ea5cd87}\label{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a8a6fe8fd57573897e00054281ea5cd87} 
{\footnotesize template$<$typename... Args$>$ }\\auto {\bfseries with\+\_\+deterministic\+\_\+sample} (Args \&\&... \+\_\+value) -\/$>$ std::\+decay\+\_\+t$<$ decltype(\texorpdfstring{$\ast$}{*}(this-\/$>$self()))$>$ \&
\item 
\Hypertarget{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a96f7632dd0eefcb75f59a08237790a29}\label{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a96f7632dd0eefcb75f59a08237790a29} 
{\footnotesize template$<$typename... Args$>$ }\\auto {\bfseries with\+\_\+fill\+\_\+in\+\_\+limit} (Args \&\&... \+\_\+value) -\/$>$ std::\+decay\+\_\+t$<$ decltype(\texorpdfstring{$\ast$}{*}(this-\/$>$self()))$>$ \&
\item 
\Hypertarget{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a0e3283cf445d6ddb7a9c581bb3d91a58}\label{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a0e3283cf445d6ddb7a9c581bb3d91a58} 
{\footnotesize template$<$typename... Args$>$ }\\auto {\bfseries with\+\_\+l\+\_\+strategy} (Args \&\&... \+\_\+value) -\/$>$ std::\+decay\+\_\+t$<$ decltype(\texorpdfstring{$\ast$}{*}(this-\/$>$self()))$>$ \&
\item 
\Hypertarget{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a25c033f8bbb849e4441533725ccb7c8f}\label{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a25c033f8bbb849e4441533725ccb7c8f} 
{\footnotesize template$<$typename... Args$>$ }\\auto {\bfseries with\+\_\+u\+\_\+strategy} (Args \&\&... \+\_\+value) -\/$>$ std::\+decay\+\_\+t$<$ decltype(\texorpdfstring{$\ast$}{*}(this-\/$>$self()))$>$ \&
\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \doxymbox{\hyperlink{classgko_1_1enable__parameters__type}{gko::\+enable\+\_\+parameters\+\_\+type$<$ parameters\+\_\+type, Factory $>$}}}
\begin{DoxyCompactItemize}
\item 
parameters\+\_\+type \& {\bfseries with\+\_\+loggers} (Args \&\&... \+\_\+value)
\begin{DoxyCompactList}\small\item\em Provides the loggers to be added to the factory and its generated objects in a fluent interface. \end{DoxyCompactList}\item 
std::\+unique\+\_\+ptr$<$ Factory $>$ \doxymbox{\hyperlink{classgko_1_1enable__parameters__type_a65a5adc4eb7078475d26e7991efae64d}{on}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$ exec) const
\begin{DoxyCompactList}\small\item\em Creates a new factory on the specified executor. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item 
\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \doxymbox{\hyperlink{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_aed39c89593c4e33f8473cc641fc4a44c}{iterations}} \{5\}
\begin{DoxyCompactList}\small\item\em The number of total iterations of Par\+ILUT that will be executed. \end{DoxyCompactList}\item 
bool \doxymbox{\hyperlink{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a9d9e9355e743fed16dba89eadd9db9cf}{skip\+\_\+sorting}} \{false\}
\begin{DoxyCompactList}\small\item\em {\ttfamily true} means it is known that the matrix given to this factory will be sorted first by row, then by column index, {\ttfamily false} means it is unknown or not sorted, so an additional sorting step will be performed during the factorization (it will not change the matrix given). \end{DoxyCompactList}\item 
bool \doxymbox{\hyperlink{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a896c2b6e30c3cb0b2e797945b92f26a3}{approximate\+\_\+select}} \{true\}
\begin{DoxyCompactList}\small\item\em {\ttfamily true} means the candidate selection will use an inexact selection algorithm. \end{DoxyCompactList}\item 
bool \doxymbox{\hyperlink{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_aa990e68efa7bb0695ff8dc587c4084fe}{deterministic\+\_\+sample}} \{false\}
\begin{DoxyCompactList}\small\item\em {\ttfamily true} means the sample used for the selection algorithm will be chosen deterministically. \end{DoxyCompactList}\item 
double \doxymbox{\hyperlink{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a03e53ddc63f7e4d2a957d171a4c1f717}{fill\+\_\+in\+\_\+limit}} \{2.\+0\}
\begin{DoxyCompactList}\small\item\em the amount of fill-\/in that is allowed in L and U compared to the ILU(0) factorization. \end{DoxyCompactList}\item 
std::\+shared\+\_\+ptr$<$ typename matrix\+\_\+type::\+strategy\+\_\+type $>$ \doxymbox{\hyperlink{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a622a71f8e11db4c3b3755116e902c1ca}{l\+\_\+strategy}} \{nullptr\}
\begin{DoxyCompactList}\small\item\em Strategy which will be used by the L matrix. \end{DoxyCompactList}\item 
std::\+shared\+\_\+ptr$<$ typename matrix\+\_\+type::\+strategy\+\_\+type $>$ \doxymbox{\hyperlink{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a67d30ba48b75f7a386383e9a5c1bbfc2}{u\+\_\+strategy}} \{nullptr\}
\begin{DoxyCompactList}\small\item\em Strategy which will be used by the U matrix. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Additional Inherited Members}
\doxysubsection*{Public Types inherited from \doxymbox{\hyperlink{classgko_1_1enable__parameters__type}{gko::\+enable\+\_\+parameters\+\_\+type$<$ parameters\+\_\+type, Factory $>$}}}
\begin{DoxyCompactItemize}
\item 
using {\bfseries factory}
\end{DoxyCompactItemize}


\label{doc-variable-members}
\Hypertarget{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_doc-variable-members}
\doxysubsection{Member Data Documentation}
\Hypertarget{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a896c2b6e30c3cb0b2e797945b92f26a3}\index{gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type@{gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type}!approximate\_select@{approximate\_select}}
\index{approximate\_select@{approximate\_select}!gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type@{gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type}}
\doxysubsubsection{\texorpdfstring{approximate\_select}{approximate\_select}}
{\footnotesize\ttfamily \label{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a896c2b6e30c3cb0b2e797945b92f26a3} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
bool \doxymbox{\hyperlink{classgko_1_1factorization_1_1ParIlut}{gko::\+factorization::\+\+Par\+Ilut}}$<$ Value\+Type, Index\+Type $>$::\+parameters\+\_\+type::\+approximate\+\_\+select \{true\}}



{\ttfamily true} means the candidate selection will use an inexact selection algorithm. 

{\ttfamily false} means an exact selection algorithm will be used.

Using the approximate selection algorithm can give a significant speed-\/up, but may in the worst case cause the algorithm to vastly exceed its {\ttfamily \doxylink{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a03e53ddc63f7e4d2a957d171a4c1f717}{fill\+\_\+in\+\_\+limit}}. The exact selection needs more time, but more closely fulfills the {\ttfamily \doxylink{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a03e53ddc63f7e4d2a957d171a4c1f717}{fill\+\_\+in\+\_\+limit}} except for pathological cases (many candidates with equal magnitude).

The default behavior is to use approximate selection. \Hypertarget{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_aa990e68efa7bb0695ff8dc587c4084fe}\index{gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type@{gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type}!deterministic\_sample@{deterministic\_sample}}
\index{deterministic\_sample@{deterministic\_sample}!gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type@{gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type}}
\doxysubsubsection{\texorpdfstring{deterministic\_sample}{deterministic\_sample}}
{\footnotesize\ttfamily \label{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_aa990e68efa7bb0695ff8dc587c4084fe} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
bool \doxymbox{\hyperlink{classgko_1_1factorization_1_1ParIlut}{gko::\+factorization::\+\+Par\+Ilut}}$<$ Value\+Type, Index\+Type $>$::\+parameters\+\_\+type::\+deterministic\+\_\+sample \{false\}}



{\ttfamily true} means the sample used for the selection algorithm will be chosen deterministically. 

This is only relevant when using {\ttfamily \doxylink{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a896c2b6e30c3cb0b2e797945b92f26a3}{approximate\+\_\+select}}. It is mostly used for testing.

The selection algorithm used for {\ttfamily \doxylink{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a896c2b6e30c3cb0b2e797945b92f26a3}{approximate\+\_\+select}} uses a small sample of the input data to determine an approximate threshold. The choice of elements can either be randomized, i.\+e., we may use different elements during each execution, or deterministic, i.\+e., the element choices are always the same.

Note that even though the threshold selection step may be made deterministic this way, the calculation of the ILU factors can still be non-\/deterministic due to its asynchronous iterations.

The default behavior is to use a random sample. \Hypertarget{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a03e53ddc63f7e4d2a957d171a4c1f717}\index{gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type@{gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type}!fill\_in\_limit@{fill\_in\_limit}}
\index{fill\_in\_limit@{fill\_in\_limit}!gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type@{gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type}}
\doxysubsubsection{\texorpdfstring{fill\_in\_limit}{fill\_in\_limit}}
{\footnotesize\ttfamily \label{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a03e53ddc63f7e4d2a957d171a4c1f717} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
double \doxymbox{\hyperlink{classgko_1_1factorization_1_1ParIlut}{gko::\+factorization::\+\+Par\+Ilut}}$<$ Value\+Type, Index\+Type $>$::\+parameters\+\_\+type::\+fill\+\_\+in\+\_\+limit \{2.\+0\}}



the amount of fill-\/in that is allowed in L and U compared to the ILU(0) factorization. 

The threshold for removing candidates from the intermediate L and U is set such that the resulting sparsity pattern has at most {\ttfamily \doxylink{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a03e53ddc63f7e4d2a957d171a4c1f717}{fill\+\_\+in\+\_\+limit}} times the number of non-\/zeros of the ILU(0) factorization. This selection is executed separately for both factors L and U.

The default value {\ttfamily 2.\+0} allows twice the number of non-\/zeros in L and U compared to ILU(0). \Hypertarget{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_aed39c89593c4e33f8473cc641fc4a44c}\index{gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type@{gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type}!iterations@{iterations}}
\index{iterations@{iterations}!gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type@{gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type}}
\doxysubsubsection{\texorpdfstring{iterations}{iterations}}
{\footnotesize\ttfamily \label{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_aed39c89593c4e33f8473cc641fc4a44c} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \doxymbox{\hyperlink{classgko_1_1factorization_1_1ParIlut}{gko::\+factorization::\+\+Par\+Ilut}}$<$ Value\+Type, Index\+Type $>$::\+parameters\+\_\+type::\+iterations \{5\}}



The number of total iterations of Par\+ILUT that will be executed. 

The default value is 5. \Hypertarget{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a622a71f8e11db4c3b3755116e902c1ca}\index{gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type@{gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type}!l\_strategy@{l\_strategy}}
\index{l\_strategy@{l\_strategy}!gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type@{gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type}}
\doxysubsubsection{\texorpdfstring{l\_strategy}{l\_strategy}}
{\footnotesize\ttfamily \label{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a622a71f8e11db4c3b3755116e902c1ca} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+shared\+\_\+ptr$<$typename matrix\+\_\+type::\+strategy\+\_\+type$>$ \doxymbox{\hyperlink{classgko_1_1factorization_1_1ParIlut}{gko::\+factorization::\+\+Par\+Ilut}}$<$ Value\+Type, Index\+Type $>$::\+parameters\+\_\+type::\+l\+\_\+strategy \{nullptr\}}



Strategy which will be used by the L matrix. 

The default value {\ttfamily nullptr} will result in the strategy {\ttfamily classical}. \Hypertarget{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a9d9e9355e743fed16dba89eadd9db9cf}\index{gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type@{gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type}!skip\_sorting@{skip\_sorting}}
\index{skip\_sorting@{skip\_sorting}!gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type@{gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type}}
\doxysubsubsection{\texorpdfstring{skip\_sorting}{skip\_sorting}}
{\footnotesize\ttfamily \label{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a9d9e9355e743fed16dba89eadd9db9cf} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
bool \doxymbox{\hyperlink{classgko_1_1factorization_1_1ParIlut}{gko::\+factorization::\+\+Par\+Ilut}}$<$ Value\+Type, Index\+Type $>$::\+parameters\+\_\+type::\+skip\+\_\+sorting \{false\}}



{\ttfamily true} means it is known that the matrix given to this factory will be sorted first by row, then by column index, {\ttfamily false} means it is unknown or not sorted, so an additional sorting step will be performed during the factorization (it will not change the matrix given). 

The matrix must be sorted for this factorization to work.

The {\ttfamily system\+\_\+matrix}, which will be given to this factory, must be sorted (first by row, then by column) in order for the algorithm to work. If it is known that the matrix will be sorted, this parameter can be set to {\ttfamily true} to skip the sorting (therefore, shortening the runtime). However, if it is unknown or if the matrix is known to be not sorted, it must remain {\ttfamily false}, otherwise, the factorization might be incorrect. \Hypertarget{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a67d30ba48b75f7a386383e9a5c1bbfc2}\index{gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type@{gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type}!u\_strategy@{u\_strategy}}
\index{u\_strategy@{u\_strategy}!gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type@{gko::factorization::ParIlut$<$ ValueType, IndexType $>$::parameters\_type}}
\doxysubsubsection{\texorpdfstring{u\_strategy}{u\_strategy}}
{\footnotesize\ttfamily \label{structgko_1_1factorization_1_1ParIlut_1_1parameters__type_a67d30ba48b75f7a386383e9a5c1bbfc2} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+shared\+\_\+ptr$<$typename matrix\+\_\+type::\+strategy\+\_\+type$>$ \doxymbox{\hyperlink{classgko_1_1factorization_1_1ParIlut}{gko::\+factorization::\+\+Par\+Ilut}}$<$ Value\+Type, Index\+Type $>$::\+parameters\+\_\+type::\+u\+\_\+strategy \{nullptr\}}



Strategy which will be used by the U matrix. 

The default value {\ttfamily nullptr} will result in the strategy {\ttfamily classical}. 

The documentation for this struct was generated from the following file:\+\begin{DoxyCompactItemize}
\item 
ginkgo/\+core/\+factorization/\+par\+\_\+ilut.\+hpp\end{DoxyCompactItemize}
