|
|
|
\section{General Overview\label{sec:overview}}
|
|
|
|
\markboth{\textsc{MLD2P4 User's and Reference Guide}}
|
|
|
|
{\textsc{\ref{sec:overview} General Overview}}
|
|
|
|
|
|
|
|
The \textsc{Multi-Level Domain Decomposition Parallel Preconditioners Package based on
|
|
|
|
PSBLAS (MLD2P4}) provides \emph{multi-level Schwarz preconditioners}~\cite{dd2_96},
|
|
|
|
to be used in the iterative solutions of sparse linear systems:
|
|
|
|
\begin{equation}
|
|
|
|
Ax=b,
|
|
|
|
\label{system1}
|
|
|
|
\end{equation}
|
|
|
|
where $A$ is a square, real or complex, sparse matrix with a symmetric sparsity pattern.
|
|
|
|
%
|
|
|
|
%\textbf{NOTA: Caso non simmetrico, aggregazione con $(A+A^T)$ fatta!
|
|
|
|
%Dovremmo implementare uno smoothed prolongator
|
|
|
|
%adeguato e fare qualcosa di consistente anche con 1-lev Schwarz.}
|
|
|
|
%
|
|
|
|
These preconditioners have the following general features:
|
|
|
|
\begin{itemize}
|
|
|
|
\item both \emph{additive and hybrid multilevel} variants are implemented,
|
|
|
|
i.e.\ variants that are additive among the levels and inside each level, and variants
|
|
|
|
that are multiplicative among the levels and additive inside each level;
|
|
|
|
the basic Additive Schwarz (AS) preconditioners are obtained by considering only one level;
|
|
|
|
\item a \emph{purely algebraic} approach is used to
|
|
|
|
generate a sequence of coarse-level corrections to a basic AS preconditioner, without
|
|
|
|
explicitly using any information on the geometry of the original problem (e.g.\ the
|
|
|
|
discretization of a PDE). The \emph{smoothed aggregation} technique is applied
|
|
|
|
as algebraic coarsening strategy~\cite{BREZINA_VANEK,VANEK_MANDEL_BREZINA}.
|
|
|
|
\end{itemize}
|
|
|
|
|
|
|
|
The package is written in \emph{Fortran~95}, following an
|
|
|
|
\emph{object-oriented approach} through the exploitation of features
|
|
|
|
such as abstract data type creation, functional
|
|
|
|
overloading and dynamic memory management.
|
|
|
|
% , while providing a smooth
|
|
|
|
% path towards the integration in legacy application codes.
|
|
|
|
The parallel implementation is based
|
|
|
|
on a Single Program Multiple Data (SPMD) paradigm for distributed-memory architectures.
|
|
|
|
Single and double precision implementations of MLD2P4 are available for both the
|
|
|
|
real and the complex case, that can be used through a single interface.
|
|
|
|
|
|
|
|
|
|
|
|
MLD2P4 has been designed to implement scalable and easy-to-use multilevel preconditioners
|
|
|
|
in the context of the \emph{PSBLAS (Parallel Sparse BLAS)
|
|
|
|
computational framework}~\cite{psblas_00}.
|
|
|
|
PSBLAS is a library originally developed to address the parallel implementation of
|
|
|
|
iterative solvers for sparse linear system, by providing basic linear algebra
|
|
|
|
operators and data management facilities for distributed sparse matrices; it
|
|
|
|
also includes parallel Krylov solvers, built on the top of the basic PSBLAS kernels.
|
|
|
|
The preconditioners available in MLD2P4 can be used with these Krylov solvers.
|
|
|
|
The choice of PSBLAS has been mainly motivated by the need of having
|
|
|
|
a portable and efficient software infrastructure implementing ``de facto'' standard
|
|
|
|
parallel sparse linear algebra kernels, to pursue goals such as performance,
|
|
|
|
portability, modularity ed extensibility in the development of the preconditioner
|
|
|
|
package. On the other hand, the implementation of MLD2P4 has led to some
|
|
|
|
revisions and extentions of the PSBLAS kernels, leading to the
|
|
|
|
recent PSBLAS 2.0 version~\cite{PSBLASGUIDE}. The inter-process comunication required
|
|
|
|
by MLD2P4 is encapsulated into the PSBLAS routines, except few cases where
|
|
|
|
MPI~\cite{MPI1} is explicitly called. Therefore, MLD2P4 can be run on any parallel
|
|
|
|
machine where PSBLAS and MPI implementations are available.
|
|
|
|
|
|
|
|
MLD2P4 has a layered and modular software architecture where three main layers can be identified.
|
|
|
|
The lower layer consists of the PSBLAS kernels, the middle one implements
|
|
|
|
the construction and application phases of the preconditioners, and the upper one
|
|
|
|
provides a uniform and easy-to-use interface to all the preconditioners.
|
|
|
|
This architecture allows for different levels of use of the package:
|
|
|
|
few black-box routines at the upper layer allow non-expert users to easily
|
|
|
|
build any preconditioner available in MLD2P4 and to apply it within a PSBLAS Krylov solver.
|
|
|
|
On the other hand, the routines of the middle and lower layer can be used and extended
|
|
|
|
by expert users to build new versions of multi-level Schwarz preconditioners.
|
|
|
|
We provide here a description of the upper-layer routines, but not of the
|
|
|
|
medium-layer ones.
|
|
|
|
|
|
|
|
This guide is organized as follows. The notational conventions used in
|
|
|
|
the guide and in the naming of the MLD2P4 routines are reported in
|
|
|
|
Section~\ref{sec:conventions}. Information on the distribution of the source code and the
|
|
|
|
related license is given in Section~\ref{sec:distribution}, while details on the configuration
|
|
|
|
and installation of package are given in Section~\ref{sec:building}. A description of
|
|
|
|
multi-level Schwarz preconditioners based on smoothed aggregation is provided
|
|
|
|
in Section~\ref{sec:background}, to help the users in choosing among the different preconditioners
|
|
|
|
implemented in MLD2P4. The basics for building and applying the preconditioners
|
|
|
|
with the Krylov solvers implemented in PSBLAS are reported in Section~\ref{sec:started}, where the
|
|
|
|
Fortran 95 codes of a few sample programs are also shown. A reference guide for
|
|
|
|
the upper-layer routines of MLD2P4, that are the user interface, is provided
|
|
|
|
in Section~\ref{sec:userinterface}. The error handling mechanism used by the package is briefly described
|
|
|
|
in Section~\ref{sec:errors}. The copyright terms concerning the distribution and modification
|
|
|
|
of MLD2P4 are reported in Appendix~\ref{sec:license}.
|
|
|
|
|
|
|
|
%%% Local Variables:
|
|
|
|
%%% mode: latex
|
|
|
|
%%% TeX-master: "userguide"
|
|
|
|
%%% End:
|