@ -15,7 +15,13 @@ AMG4PSBLAS enables the user to easily specify different features of an algebraic
The package employs object-oriented design techniques in Fortran 2008, with interfaces to additional third party libraries such as MUMPS, UMFPACK, SuperLU, and SuperLU_Dist, which can be exploited in building multilevel preconditioners. The parallel implementation is based on a Single Program Multiple Data (SPMD) paradigm; the inter-process communication is based on MPI and is managed mainly through PSBLAS.
The package employs object-oriented design techniques in Fortran 2008, with interfaces to additional third party libraries such as MUMPS, UMFPACK, SuperLU, and SuperLU_Dist, which can be exploited in building multilevel preconditioners. The parallel implementation is based on a Single Program Multiple Data (SPMD) paradigm; the inter-process communication is based on MPI and is managed mainly through PSBLAS.
## Main refrerences:
## Main Refrerences:
The main reference for this project is
> D'Ambra, P., Durastante, F., & Filippone, S. (2021). AMG preconditioners for linear solvers towards extreme scale. SIAM Journal on Scientific Computing, 43(5), S679-S703.
AMG4PSBLAS is the suite of preconditioners for the Parallel Sparse Computation Toolkit ([PSCToolkit](https://psctoolkit.github.io/)) suite of libraries. See the paper:
The new features introduced and which led to the library's name change are described in the article
> D'Ambra, P., Durastante, F., & Filippone, S. (2021). AMG preconditioners for linear solvers towards extreme scale. SIAM Journal on Scientific Computing, 43(5), S679-S703.
AMG4PSBLAS contains the suite of preconditioners for the Parallel Sparse Computation Toolkit ([PSCToolkit](https://psctoolkit.github.io/)) suite of libraries. See the paper:
class="cmr-12">Note that the module </span><spanclass="lstinline"></span><span
class="cmr-12">Note that the module </span><codeclass="lstinline"><spanstyle="color:#000000">amg_prec_mod</span></code><span
class="cmtt-12">amg_prec_mod</span><span
class="cmr-12">, containing the definition of the preconditioner</span>
class="cmr-12">, containing the definition of the preconditioner</span>
<span
<span
class="cmr-12">data type and the interfaces to the routines of AMG4PSBLAS, must be used</span>
class="cmr-12">data type and the interfaces to the routines of AMG4PSBLAS, must be used</span>
<span
<span
class="cmr-12">in any program calling such routines. The modules </span><spanclass="lstinline"></span><span
class="cmr-12">in any program calling such routines. The modules </span><codeclass="lstinline"><spanstyle="color:#000000">psb_base_mod</span></code><span
class="cmtt-12">psb_base_mod</span><span
class="cmr-12">, for the</span>
class="cmr-12">, for the</span>
<span
<span
class="cmr-12">sparse matrix and communication descriptor data types, and </span><spanclass="lstinline"></span><span
class="cmr-12">sparse matrix and communication descriptor data types, and </span><codeclass="lstinline"><spanstyle="color:#000000">psb_krylov_mod</span></code><span
class="cmtt-12">psb_krylov_mod</span><span
class="cmr-12">,</span>
class="cmr-12">,</span>
<span
<span
class="cmr-12">for interfacing with the Krylov solvers, must be also used (see Section</span><span
class="cmr-12">for interfacing with the Krylov solvers, must be also used (see Section</span><span
@ -436,13 +396,11 @@ class="cmr-12">problems. However, this does not necessarily correspond to the sh
class="cmr-12">preconditioners). It is mostly provided for backward compatibility; indeed, it is</span>
class="cmr-12">preconditioners). It is mostly provided for backward compatibility; indeed, it is</span>
<span
<span
class="cmr-12">internally implemented by invoking the two previous methods </span><spanclass="lstinline"></span><span
class="cmr-12">internally implemented by invoking the two previous methods </span><codeclass="lstinline"><spanstyle="color:#000000">hierarchy_build</span></code><span
class="cmr-12">Workspace. Its size should be at least </span><spanclass="lstinline"></span><span
class="cmr-12">Workspace. Its size should be at least </span><codeclass="lstinline"><spanstyle="color:#000000">4</span><spanstyle="color:#000000"></span><spanstyle="color:#000000">*</span><spanstyle="color:#000000"></span><spanstyle="color:#000000">psb_cd_get_local_</span></code>
class="cmr-12">directories contain sample programs that read sparse matrices from files,</span>
class="cmr-12">directories contain sample programs that read sparse matrices from files,</span>
<span
<span
class="cmr-12">according to the Matrix Market or the Harwell-Boeing storage format; the </span><spanclass="obeylines-h"><spanclass="verb"><span
class="cmr-12">according to the Matrix Market or the Harwell-Boeing storage format; the </span><spanclass="obeylines-h"><codeclass="verb">pdegen</code></span>
class="cmtt-12">pdegen</span></span></span>
<span
<span
class="cmr-12">programs generate matrices in full parallel mode from the discretization of a sample</span>
class="cmr-12">programs generate matrices in full parallel mode from the discretization of a sample</span>
class="cmr-12">). This preconditioner is chosen by simply specifying </span><spanclass="lstinline"></span><span
class="cmr-12">). This preconditioner is chosen by simply specifying </span><codeclass="lstinline"><spanstyle="color:#000000">’</span><spanstyle="color:#000000">ML</span><spanstyle="color:#000000">’</span></code><span
class="cmtt-12">’</span><span
class="cmtt-12">ML</span><span
class="cmtt-12">’</span><span
class="cmr-12">as the</span>
class="cmr-12">as the</span>
<span
<span
class="cmr-12">second argument of </span><spanclass="lstinline"></span><span
class="cmr-12">second argument of </span><codeclass="lstinline"><spanstyle="color:#000000">P</span><spanstyle="color:#000000">%</span><spanstyle="color:#000000">init</span></code><span
class="cmtt-12">P</span><span
class="cmr-12">(a call to </span><codeclass="lstinline"><spanstyle="color:#000000">P</span><spanstyle="color:#000000">%</span><spanstyle="color:#000000">set</span></code><span
class="cmtt-12">%</span><span
class="cmtt-12">init</span><span
class="cmr-12">(a call to </span><spanclass="lstinline"></span><span
class="cmtt-12">P</span><span
class="cmtt-12">%</span><span
class="cmtt-12">set</span><span
class="cmr-12">is not needed) and is applied</span>
class="cmr-12">is not needed) and is applied</span>
<span
<span
class="cmr-12">with the CG solver provided by PSBLAS (the matrix of the system to be</span>
class="cmr-12">with the CG solver provided by PSBLAS (the matrix of the system to be</span>
<span
<span
class="cmr-12">solved is assumed to be positive definite). As previously observed, the modules</span>
class="cmr-12">solved is assumed to be positive definite). As previously observed, the modules</span>
class="cmr-12">For all the previous preconditioners, example programs where the sparse matrix</span>
class="cmr-12">For all the previous preconditioners, example programs where the sparse matrix</span>
<span
<span
class="cmr-12">and the right-hand side are generated by discretizing a PDE with Dirichlet</span>
class="cmr-12">and the right-hand side are generated by discretizing a PDE with Dirichlet</span>
<span
<span
class="cmr-12">boundary conditions are also available in the directory </span><spanclass="obeylines-h"><spanclass="verb"><span
class="cmr-12">boundary conditions are also available in the directory </span><spanclass="obeylines-h"><codeclass="verb">samples/simple/pdegen</code></span><span
@ -92,8 +92,14 @@ P.~D'Ambra, S.~Filippone and P.\,S.~Vassilevski,
ACM Transactions on Mathematical Software, 44, (2018) 39:1--39:25.
ACM Transactions on Mathematical Software, 44, (2018) 39:1--39:25.
%
%
\bibitem{DDF2020}
\bibitem{DDF2020}
P.~D'Ambra, F~Durastante, S.~Filippone,
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}.
\emph{AMG preconditioners for Linear Solvers towards Extreme Scale},
SIAM Journal on Scientific Computing 43, no. 5 (2021): S679-S703.
post-smoother is used if this parameter is set to 0
post-smoother is used if this parameter is set to 0
together with \fortinline|pos='PRE'| or \fortinline|pos='POST'|,
together with \fortinline|pos='PRE'| or \fortinline|pos='POST'|,
respectively. \\\hline
respectively. Is ignored if the smoother is \fortinline|'POLY'| \\\hline
\fortinline|'SUB_OVR'| &\fortinline|integer|
\fortinline|'POLY_DEGREE'| &\fortinline|integer|
& Any integer \par number~$\ge0$
& Any integer \par number~$\ge1$ and~$\le30$
& 1
& 1
& Number of overlap layers, for Additive Schwarz only. \\
& 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
\hline
\end{tabular}
\end{tabular}
\end{center}
\end{center}
\caption{Parameters defining the smoother or the details of the one-level preconditioner.
\caption{Parameters defining the smoother or the details of the one-level preconditioner.
& 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 $\ge1$& 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