\doxysection{gko::\+batch::\+preconditioner::\+Jacobi\texorpdfstring{$<$}{<} Value\+Type, Index\+Type \texorpdfstring{$>$}{>} Class Template Reference}
\hypertarget{classgko_1_1batch_1_1preconditioner_1_1Jacobi}{}\label{classgko_1_1batch_1_1preconditioner_1_1Jacobi}\index{gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$}}


A block-\/\+Jacobi preconditioner is a block-\/diagonal linear operator, obtained by inverting the diagonal blocks (stored in a dense row major fashion) of the source operator.  




{\ttfamily \+\#include $<$ginkgo/\+core/\+preconditioner/\+batch\+\_\+jacobi.\+hpp$>$}



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


Collaboration diagram for gko::\+batch::\+preconditioner::\+Jacobi\texorpdfstring{$<$}{<} Value\+Type, Index\+Type \texorpdfstring{$>$}{>}:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classgko_1_1batch_1_1preconditioner_1_1Jacobi__coll__graph}
\end{center}
\end{figure}
\doxysubsubsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \doxymbox{\hyperlink{structgko_1_1batch_1_1preconditioner_1_1Jacobi_1_1parameters__type}{parameters\+\_\+type}}
\item 
class \doxymbox{\hyperlink{classgko_1_1batch_1_1preconditioner_1_1Jacobi_1_1Factory}{Factory}}
\end{DoxyCompactItemize}
\doxysubsubsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a3330d2501feeaf59c3cefec2fbf1d73d}\label{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a3330d2501feeaf59c3cefec2fbf1d73d} 
using {\bfseries value\+\_\+type} = Value\+Type
\item 
\Hypertarget{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a27efe69c9a44bff1c1f41532760791fe}\label{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a27efe69c9a44bff1c1f41532760791fe} 
using {\bfseries index\+\_\+type} = Index\+Type
\item 
\Hypertarget{classgko_1_1batch_1_1preconditioner_1_1Jacobi_af9486bd7772da385e4cab27b2e85983d}\label{classgko_1_1batch_1_1preconditioner_1_1Jacobi_af9486bd7772da385e4cab27b2e85983d} 
using {\bfseries matrix\+\_\+type} = \doxymbox{\hyperlink{classgko_1_1batch_1_1matrix_1_1Csr}{batch::\+matrix::\+\+Csr}}$<$Value\+Type, Index\+Type$>$
\end{DoxyCompactItemize}
\doxysubsection*{Public Types inherited from \doxymbox{\hyperlink{classgko_1_1EnablePolymorphicAssignment}{gko::\+\+Enable\+Polymorphic\+Assignment$<$ Jacobi$<$ default\+\_\+precision, int32 $>$ $>$}}}
\begin{DoxyCompactItemize}
\item 
using {\bfseries result\+\_\+type}
\end{DoxyCompactItemize}
\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
const index\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a03b50e8ba9be39ff8e984872d1f37f6b}{get\+\_\+const\+\_\+block\+\_\+pointers}} () const noexcept
\begin{DoxyCompactList}\small\item\em Returns the block pointers. \end{DoxyCompactList}\item 
const index\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a3f1387813dd7fb1c38019d38e59b9a1a}{get\+\_\+const\+\_\+map\+\_\+block\+\_\+to\+\_\+row}} () const noexcept
\begin{DoxyCompactList}\small\item\em Returns the mapping between the blocks and the row id. \end{DoxyCompactList}\item 
const index\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a42b58d3f29f00352c24c789f1aeefadb}{get\+\_\+const\+\_\+blocks\+\_\+cumulative\+\_\+offsets}} () const noexcept
\begin{DoxyCompactList}\small\item\em Returns the cumulative blocks storage array. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{namespacegko_a7cf056fa904140b50658e0637fba428c}{uint32}} \doxymbox{\hyperlink{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a33328b011a3a2125774e4471da563181}{get\+\_\+max\+\_\+block\+\_\+size}} () const noexcept
\begin{DoxyCompactList}\small\item\em Returns the max block size. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \doxymbox{\hyperlink{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a4d5fe04bfd88e13bbfcac393595707c7}{get\+\_\+num\+\_\+blocks}} () const noexcept
\begin{DoxyCompactList}\small\item\em Returns the number of blocks in an individual batch entry. \end{DoxyCompactList}\item 
const value\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1batch_1_1preconditioner_1_1Jacobi_aaaf8c476b2182bca3fbe3abd26ebc285}{get\+\_\+const\+\_\+blocks}} () const noexcept
\begin{DoxyCompactList}\small\item\em Returns the pointer to the memory used for storing the block data. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \doxymbox{\hyperlink{classgko_1_1batch_1_1preconditioner_1_1Jacobi_af97a949dceeedd5d38a1e6cc7fe2b327}{get\+\_\+num\+\_\+stored\+\_\+elements}} () const noexcept
\begin{DoxyCompactList}\small\item\em Returns the number of elements explicitly stored in the dense blocks. \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a1a1f7f284abc350b6d8efed994eb863c}\label{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a1a1f7f284abc350b6d8efed994eb863c} 
const \doxymbox{\hyperlink{structgko_1_1batch_1_1preconditioner_1_1Jacobi_1_1parameters__type}{parameters\+\_\+type}} \& {\bfseries get\+\_\+parameters} () const
\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \doxymbox{\hyperlink{classgko_1_1EnablePolymorphicAssignment}{gko::\+\+Enable\+Polymorphic\+Assignment$<$ Jacobi$<$ 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}
\doxysubsubsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a020db6fe76d61b27c8fc7567a37f759f}\label{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a020db6fe76d61b27c8fc7567a37f759f} 
static auto {\bfseries build} () -\/$>$ decltype(\doxymbox{\hyperlink{classgko_1_1EnableDefaultFactory_a1d077101d9e788e6c65f088612d14cc3}{Factory::\+create}}())
\end{DoxyCompactItemize}
\doxysubsubsection*{Friends}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a11577e208abe49ddc79377dbca0d5e5a}\label{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a11577e208abe49ddc79377dbca0d5e5a} 
class {\bfseries Enable\+Batch\+Lin\+Op$<$ Jacobi $>$}
\item 
\Hypertarget{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a37a3316c7da0c32663ff102caf34765a}\label{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a37a3316c7da0c32663ff102caf34765a} 
class {\bfseries Enable\+Polymorphic\+Object$<$ Jacobi, Batch\+Lin\+Op $>$}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
\subsubsection*{template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$\newline
class gko::\+batch::\+preconditioner::\+\+Jacobi$<$ Value\+Type, Index\+Type $>$}
A block-\/\+Jacobi preconditioner is a block-\/diagonal linear operator, obtained by inverting the diagonal blocks (stored in a dense row major fashion) of the source operator. 

With the batched preconditioners, it is required that all items in the batch have the same sparsity pattern. The detection of the blocks and the block pointers require that the sparsity pattern of all the items be the same. Other cases is undefined behaviour. The input batch matrix must be in batch::\+\+Csr matrix format or must be convertible to batch::\+\+Csr matrix format. The block detection algorithm and the conversion to dense blocks kernels require this assumption.

\begin{DoxyNote}{Note}
In a fashion similar to the non-\/batched \doxylink{classgko_1_1batch_1_1preconditioner_1_1Jacobi}{Jacobi} preconditioner, the maximum possible size of the diagonal blocks is equal to the maximum warp size on the device (32 for NVIDIA GPUs, 64 for AMD GPUs).
\end{DoxyNote}

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


\label{doc-func-members}
\Hypertarget{classgko_1_1batch_1_1preconditioner_1_1Jacobi_doc-func-members}
\doxysubsection{Member Function Documentation}
\Hypertarget{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a03b50e8ba9be39ff8e984872d1f37f6b}\index{gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$}!get\_const\_block\_pointers@{get\_const\_block\_pointers}}
\index{get\_const\_block\_pointers@{get\_const\_block\_pointers}!gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_const\_block\_pointers()}{get\_const\_block\_pointers()}}
{\footnotesize\ttfamily \label{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a03b50e8ba9be39ff8e984872d1f37f6b} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
const index\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1batch_1_1preconditioner_1_1Jacobi}{gko::\+batch::\+preconditioner::\+\+Jacobi}}$<$ Value\+Type, Index\+Type $>$::\+get\+\_\+const\+\_\+block\+\_\+pointers (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the block pointers. 

\begin{DoxyNote}{Note}
Returns nullptr in case of a scalar jacobi preconditioner (max\+\_\+block\+\_\+size = 1). 
\end{DoxyNote}
\begin{DoxyReturn}{Returns}
the block pointers 
\end{DoxyReturn}
\Hypertarget{classgko_1_1batch_1_1preconditioner_1_1Jacobi_aaaf8c476b2182bca3fbe3abd26ebc285}\index{gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$}!get\_const\_blocks@{get\_const\_blocks}}
\index{get\_const\_blocks@{get\_const\_blocks}!gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_const\_blocks()}{get\_const\_blocks()}}
{\footnotesize\ttfamily \label{classgko_1_1batch_1_1preconditioner_1_1Jacobi_aaaf8c476b2182bca3fbe3abd26ebc285} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
const value\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1batch_1_1preconditioner_1_1Jacobi}{gko::\+batch::\+preconditioner::\+\+Jacobi}}$<$ Value\+Type, Index\+Type $>$::\+get\+\_\+const\+\_\+blocks (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the pointer to the memory used for storing the block data. 

Element ({\ttfamily i}, {\ttfamily j}) of the block, which belongs to the batch entry with index = "{}batch\+\_\+id"{} and has local id = "{}block\+\_\+id"{} within its batch entry is stored at the address = \doxylink{classgko_1_1batch_1_1preconditioner_1_1Jacobi_aaaf8c476b2182bca3fbe3abd26ebc285}{get\+\_\+const\+\_\+blocks()} + detail::\+get\+\_\+global\+\_\+block\+\_\+offset(batch\+\_\+id, num\+\_\+blocks, block\+\_\+id, cumulative\+\_\+blocks\+\_\+storage) + i \texorpdfstring{$\ast$}{*} detail::\+get\+\_\+stride(block\+\_\+id, block\+\_\+pointers) + j

\begin{DoxyNote}{Note}
Returns nullptr in case of a scalar jacobi preconditioner (max\+\_\+block\+\_\+size = 1). The blocks array is empty in case of scalar jacobi preconditioner as the preconditioner is generated inside the batched solver kernel.
\end{DoxyNote}
\begin{DoxyReturn}{Returns}
the pointer to the memory used for storing the block data 
\end{DoxyReturn}
\Hypertarget{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a42b58d3f29f00352c24c789f1aeefadb}\index{gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$}!get\_const\_blocks\_cumulative\_offsets@{get\_const\_blocks\_cumulative\_offsets}}
\index{get\_const\_blocks\_cumulative\_offsets@{get\_const\_blocks\_cumulative\_offsets}!gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_const\_blocks\_cumulative\_offsets()}{get\_const\_blocks\_cumulative\_offsets()}}
{\footnotesize\ttfamily \label{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a42b58d3f29f00352c24c789f1aeefadb} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
const index\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1batch_1_1preconditioner_1_1Jacobi}{gko::\+batch::\+preconditioner::\+\+Jacobi}}$<$ Value\+Type, Index\+Type $>$::\+get\+\_\+const\+\_\+blocks\+\_\+cumulative\+\_\+offsets (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the cumulative blocks storage array. 

\begin{DoxyNote}{Note}
Returns nullptr in case of a scalar jacobi preconditioner (max\+\_\+block\+\_\+size = 1). 
\end{DoxyNote}
\Hypertarget{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a3f1387813dd7fb1c38019d38e59b9a1a}\index{gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$}!get\_const\_map\_block\_to\_row@{get\_const\_map\_block\_to\_row}}
\index{get\_const\_map\_block\_to\_row@{get\_const\_map\_block\_to\_row}!gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_const\_map\_block\_to\_row()}{get\_const\_map\_block\_to\_row()}}
{\footnotesize\ttfamily \label{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a3f1387813dd7fb1c38019d38e59b9a1a} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
const index\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1batch_1_1preconditioner_1_1Jacobi}{gko::\+batch::\+preconditioner::\+\+Jacobi}}$<$ Value\+Type, Index\+Type $>$::\+get\+\_\+const\+\_\+map\+\_\+block\+\_\+to\+\_\+row (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the mapping between the blocks and the row id. 

\begin{DoxyNote}{Note}
Returns nullptr in case of a scalar jacobi preconditioner (max\+\_\+block\+\_\+size = 1). 
\end{DoxyNote}
\Hypertarget{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a33328b011a3a2125774e4471da563181}\index{gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$}!get\_max\_block\_size@{get\_max\_block\_size}}
\index{get\_max\_block\_size@{get\_max\_block\_size}!gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_max\_block\_size()}{get\_max\_block\_size()}}
{\footnotesize\ttfamily \label{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a33328b011a3a2125774e4471da563181} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
\doxymbox{\hyperlink{namespacegko_a7cf056fa904140b50658e0637fba428c}{uint32}} \doxymbox{\hyperlink{classgko_1_1batch_1_1preconditioner_1_1Jacobi}{gko::\+batch::\+preconditioner::\+\+Jacobi}}$<$ Value\+Type, Index\+Type $>$::\+get\+\_\+max\+\_\+block\+\_\+size (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the max block size. 

\begin{DoxyReturn}{Returns}
the max block size 
\end{DoxyReturn}
\Hypertarget{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a4d5fe04bfd88e13bbfcac393595707c7}\index{gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$}!get\_num\_blocks@{get\_num\_blocks}}
\index{get\_num\_blocks@{get\_num\_blocks}!gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_num\_blocks()}{get\_num\_blocks()}}
{\footnotesize\ttfamily \label{classgko_1_1batch_1_1preconditioner_1_1Jacobi_a4d5fe04bfd88e13bbfcac393595707c7} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \doxymbox{\hyperlink{classgko_1_1batch_1_1preconditioner_1_1Jacobi}{gko::\+batch::\+preconditioner::\+\+Jacobi}}$<$ Value\+Type, Index\+Type $>$::\+get\+\_\+num\+\_\+blocks (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the number of blocks in an individual batch entry. 

\begin{DoxyReturn}{Returns}
the number of blocks in an individual batch entry. 
\end{DoxyReturn}
\Hypertarget{classgko_1_1batch_1_1preconditioner_1_1Jacobi_af97a949dceeedd5d38a1e6cc7fe2b327}\index{gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$}!get\_num\_stored\_elements@{get\_num\_stored\_elements}}
\index{get\_num\_stored\_elements@{get\_num\_stored\_elements}!gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::batch::preconditioner::Jacobi$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_num\_stored\_elements()}{get\_num\_stored\_elements()}}
{\footnotesize\ttfamily \label{classgko_1_1batch_1_1preconditioner_1_1Jacobi_af97a949dceeedd5d38a1e6cc7fe2b327} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \doxymbox{\hyperlink{classgko_1_1batch_1_1preconditioner_1_1Jacobi}{gko::\+batch::\+preconditioner::\+\+Jacobi}}$<$ 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 dense blocks. 

\begin{DoxyNote}{Note}
Returns 0 in case of scalar jacobi preconditioner as the preconditioner is generated inside the batched solver kernels, hence, blocks array storage is not required.
\end{DoxyNote}
\begin{DoxyReturn}{Returns}
the number of elements explicitly stored in the dense blocks. 
\end{DoxyReturn}


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