Added Polynomial Smoother infos

This commit is contained in:
2024-11-18 10:03:21 +01:00
parent 82de529c54
commit 70fb39ae55
38 changed files with 4595 additions and 6181 deletions
+13 -2
View File
@@ -92,8 +92,14 @@ P.~D'Ambra, S.~Filippone and P.\,S.~Vassilevski,
ACM Transactions on Mathematical Software, 44, (2018) 39:1--39:25.
%
\bibitem{DDF2020}
P.~D'Ambra, F~Durastante, S.~Filippone,
\emph{AMG preconditioners for Linear Solvers towards Extreme Scale}, 2020, \href{https://arxiv.org/abs/2006.16147v3arXiv:2006.16147v2}{arXiv:2006.16147v3}.
P.~D'Ambra, F.~Durastante, S.~Filippone,
\emph{AMG preconditioners for Linear Solvers towards Extreme Scale},
SIAM Journal on Scientific Computing 43, no. 5 (2021): S679-S703.
%
\bibitem{DDFMT2024}
P.~D'Ambra, F.~Durastante, S.~Filippone, S.~Massei, S.~Thomas
\emph{Optimal Polynomial Smoothers for Parallel AMG}, 2024,
\href{https://arxiv.org/abs/2407.09848}{arXiv:2407.09848}.
%
\bibitem{UMFPACK}
T.~A.~Davis,
@@ -165,6 +171,11 @@ C.~L.~Lawson, R.~J.~Hanson, D.~Kincaid, F.~T.~Krogh,
\emph{Basic Linear Algebra Subprograms for FORTRAN usage},
ACM Transactions on Mathematical Software, 5 (3), 1979, 308--323.
%
\bibitem{LOTTES}
J.~Lottes,
\emph{Optimal polynomial smoothers for multigrid V‐cycles},
Numerical Linear Algebra with Applications 30.6 (2023): e2518.
%
\bibitem{SUPERLUDIST}
X.~S.~Li, J.~W.~Demmel,
{\em SuperLU\_DIST: A Scalable Distributed-memory
+31 -14
View File
@@ -62,20 +62,37 @@ interfaces compatible with AMG4PSBLAS; usually this means that they
should all be built with the same compiler being used for AMG4PSBLAS.
If you want to use the PSBLAS support for NVIDIA GPUs, you will also
need:
\begingroup
\sloppy
\begin{description}
\item[PSBLAS-EXT] Parallel Sparse BLAS (PSBLAS) Extensions,
available from
\href{https://psctoolkit.github.io/products/psblasext/}{psctoolkit.github.io/products/psblasext/}; version 1.3.0 (or later).
\item[SPGPU] Sparse CUDA kernels for NVIDIA GPUs; available from
GitHub, see also
\href{https://psctoolkit.github.io/products/psblasext/}{psctoolkit.github.io/products/psblasext/}.
\end{description}
See also Sec~\ref{sec:gpu-example}.
\endgroup
need a working version of the CUDA Toolkit that is compatible with the
compiler choice made to compile PSBLAS and AMG4PSBLAS.
After that you will need to have configured and compiled the PSBLAS library
with the options:
%\begingroup
%\sloppy
%\begin{description}
% \item[PSBLAS-EXT] Parallel Sparse BLAS (PSBLAS) Extensions,
% available from
% \href{https://psctoolkit.github.io/products/psblasext/}{psctoolkit.github.io/products/psblasext/}; version 1.3.0 (or later).
% \item[SPGPU] Sparse CUDA kernels for NVIDIA GPUs; available from
% GitHub, see also
% \href{https://psctoolkit.github.io/products/psblasext/}{psctoolkit.github.io/products/psblasext/}.
% \end{description}
%
%\endgroup
\ifpdf
\begin{minted}[breaklines=true,bgcolor=bg,fontsize=\small]{fortran}
./configure --enable-cuda --with-cudadir=${CUDA_HOME} --with-cudacc=xx,yy,zz
\end{minted}
\else
{\small
\begin{verbatim}
./configure --enable-cuda --with-cudadir=${CUDA_HOME} --with-cudacc=xx,yy,zz
\end{verbatim}
}
\fi
Previous versions required you to have the auxiliary libraries SPGPU and PSBLAS-EXT compiled,
this is no longer necessary because they have been integrated into PSBLAS and are compiled
by activating the previous flags during configuration. See also Sec~\ref{sec:gpu-example}.
\subsection{Optional third party libraries\label{sec:third-party}}
We provide interfaces to the following third-party software libraries;
+32 -9
View File
@@ -573,12 +573,12 @@ level (continued).\label{tab:p_coarse_1}}
\fortinline|'SMOOTHER_TYPE'| & \fortinline|character(len=*)|
& \fortinline|'JACOBI'| \par \fortinline|'GS'| \par \fortinline|'BGS'| \par \fortinline|'BJAC'|
\par \fortinline|'AS'| \par \fortinline|'L1-JACOBI'| \par \fortinline|'L1-BJAC'| \par \fortinline|'L1-FBGS'|
& \fortinline|'FBGS'|
\par \fortinline|'AS'| \par \fortinline|'L1-JACOBI'| \par \fortinline|'L1-BJAC'| \par \fortinline|'L1-FBGS'| \par \fortinline|'POLY'|
& \fortinline|'FBGS'|
& Type of smoother used in the multilevel preconditioner:
point-Jacobi, hybrid (forward) Gauss-Seidel,
hybrid backward Gauss-Seidel, block-Jacobi, $\ell_1$-Jacobi, $\ell_1$--hybrid (forward) Gauss-Seidel, $\ell_1$-point-Jacobi and
Additive Schwarz. \par
Additive Schwarz, polynomial accelerators; see~\cite{DDFMT2024} \par
It is ignored by one-level preconditioners. \\ \hline
\fortinline|'SUB_SOLVE'| & \fortinline|character(len=*)|
& \fortinline|'JACOBI'|
@@ -612,12 +612,11 @@ level (continued).\label{tab:p_coarse_1}}
In the multilevel case, no pre-smother or
post-smoother is used if this parameter is set to 0
together with \fortinline|pos='PRE'| or \fortinline|pos='POST'|,
respectively. \\ \hline
\fortinline|'SUB_OVR'| & \fortinline|integer|
& Any integer \par number~$\ge 0$
& 1
& Number of overlap layers, for Additive Schwarz only. \\
\hline
respectively. Is ignored if the smoother is \fortinline|'POLY'| \\ \hline
\fortinline|'POLY_DEGREE'| & \fortinline|integer|
& Any integer \par number~$\ge 1$ and~$\le 30$
& 1
& Degree of the polynomial accelerator, is equal to the number of matrix-vector products performed by the smoother. Is ignored if the smoother is not \fortinline|'POLY'|\\ \hline
\end{tabular}
\end{center}
\caption{Parameters defining the smoother or the details of the one-level preconditioner.
@@ -631,6 +630,10 @@ level (continued).\label{tab:p_coarse_1}}
\hline
\fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} &
\textsc{comments} \\ \hline
\fortinline|'SUB_OVR'| & \fortinline|integer|
& Any integer \par number~$\ge 0$
& 1
& Number of overlap layers, for Additive Schwarz only. \\
\fortinline|'SUB_RESTR'| & \fortinline|character(len=*)|
& \fortinline|'HALO'| \par \fortinline|'NONE'|
& \fortinline|'HALO'|
@@ -679,6 +682,26 @@ level (continued).\label{tab:p_coarse_1}}
(continued).\label{tab:p_smoother_1}}
\esideways
\bsideways
\begin{center}
\small
\begin{tabular}{|p{5.4cm}|l|p{3.5cm}|p{3.5cm}|p{3.55cm}|}
\hline
\fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} &
\textsc{comments} \\ \hline
\fortinline|'POLY_VARIANT'| & \fortinline|character(len=*)|
& \fortinline|'CHEB_4'| \par \fortinline|'CHEB_4_OPT'| \par \fortinline|'CHEB_1_OPT'|
& \fortinline|'CHEB_4'|
& Select the type of polynomial accelerator. The \fortinline|'CHEB_4'| and \fortinline|'CHEB_4_OPT'| types are those based on the Chebyshev polynomials of the 4\textsuperscript{th}-kind described in~\cite{LOTTES}. The \fortinline|'CHEB_1_OPT'| version is the one described in~\cite{DDFMT2024} and based on the Chebyshev polynomials of the 1\textsuperscript{st}-kind.\\ \hline
\fortinline|'POLY_RHO_ESTIMATE'| & \fortinline|character(len=*)| & \fortinline|'POLY_RHO_EST_POWER'| & \fortinline|'POLY_RHO_EST_POWER'| & Algorithm for estimating the spectral radius of the smoother to which the polynomial acceleration is applied. The only implemented algorithm is the power method; see also the two following options. \\ \hline
\fortinline|'POLY_RHO_ESTIMATE_ITERATIONS'| & \fortinline|integer| & Any integer\par number $\ge 1$ & 20 & Number of iterations for the spectral radius estimate.\\ \hline
\fortinline|'POLY_RHO_BA'| & \fortinline|real(kind_parameter)| & Any real\par number $\in (0,1]$ & 1 & Sets an estimate of the spectral radius of the base smoother to which the polynomial accelerator is applied.\\
\hline
\end{tabular}
\end{center}
\caption{Parameters defining the smoother or the details of the one-level preconditioner
(continued).\label{tab:p_smoother_2}}
\esideways
\clearpage