mld2p4-2:

config/pac.m4
 docs/src/building.tex
 docs/src/distribution.tex
 docs/src/gettingstarted.tex
 docs/src/overview.tex
 docs/src/precs.tex
 docs/src/userinterface.tex
 tests/pdegen/runs/ppde.inp

Doc fixes first step.
stopcriterion
Salvatore Filippone 9 years ago
parent 9815e23a77
commit ed62c7d467

@ -870,9 +870,9 @@ dnl
dnl @author Salvatore Filippone <salvatore.filippone@uniroma2.it>
dnl
AC_DEFUN(PAC_CHECK_MUMPS,
[AC_ARG_WITH(mumps, AC_HELP_STRING([--with-mumps=LIBNAME], [Specify the libname for MUMPS. Default: "-lsmumps -ldmumps -lcmumps -lzmumps -lmumps_common -lpord"]),
[AC_ARG_WITH(mumps, AC_HELP_STRING([--with-mumps=LIBNAME], [Specify the libname for MUMPS. Default: autodetect with minimum "-lmumps_common -lpord"]),
[mld2p4_cv_mumps=$withval],
[mld2p4_cv_mumps='-lsmumps -ldmumps -lcmumps -lzmumps -lmumps_common -lpord'])
[mld2p4_cv_mumps='-lmumps_common -lpord'])
AC_ARG_WITH(mumpsdir, AC_HELP_STRING([--with-mumpsdir=DIR], [Specify the directory for MUMPS library and includes. Note: you will need to add auxiliary libraries with --extra-libs; this depends on how MUMPS was configured and installed, at a minimum you will need SCALAPACK and BLAS]),
[mld2p4_cv_mumpsdir=$withval],
[mld2p4_cv_mumpsdir=''])

@ -10,11 +10,10 @@ to build the software.
MLD2P4 is implemented almost entirely in Fortran~2003, with some
interfaces to external libraries in C; the Fortran compiler
must support the Fortran~2003 standard plus the extension \verb|MOLD=|
feature, which
enhances the usability of \verb|ALLOCATE|.
feature, which enhances the usability of \verb|ALLOCATE|.
Many compiles do this; in particular, this is
supported by the GNU Fortran compiler, for which we
recommend to use at least version 4.7.2.
recommend to use at least version 4.8.
The software defines data types and interfaces for
real and complex data, in both single and double precision.
@ -38,7 +37,7 @@ The following base libraries are needed:
high-performance computing systems;
\item[PSBLAS] \cite{PSBLASGUIDE,psblas_00} Parallel Sparse BLAS is
available from \\ \verb|http://www.ce.uniroma2.it/psblas|; version
3.3 (or later) is required. Indeed, all the prerequisites
3.4.0 (or later) is required. Indeed, all the prerequisites
listed so far are also prerequisites of PSBLAS.
\end{description}
Please note that the four previous libraries must have Fortran
@ -167,6 +166,15 @@ Optional Packages:
--with-extra-libs List additional link flags here. For example,
--with-extra-libs=-lspecial_system_lib or
--with-extra-libs=-L/path/to/libs
--with-mumps=LIBNAME Specify the libname for MUMPS. Default: "-lsmumps
-ldmumps -lcmumps -lzmumps -lmumps_common -lpord"
--with-mumpsdir=DIR Specify the directory for MUMPS library and
includes. Note: you will need to add auxiliary
libraries with --extra-libs; this depends on how
MUMPS was configured and installed, at a minimum you
will need SCALAPACK and BLAS
--with-mumpsincdir=DIR Specify the directory for MUMPS includes.
--with-mumpslibdir=DIR Specify the directory for MUMPS library.
--with-umfpack=LIBNAME Specify the library name for UMFPACK and its support
libraries. Default: "-lumfpack -lamd"
--with-umfpackdir=DIR Specify the directory for UMFPACK library and
@ -217,12 +225,12 @@ it to find libraries and programs with nonstandard names/locations.
Report bugs to <bugreport@mld2p4.it>.
\end{verbatim}
For instance, if a user has built and installed PSBLAS 3.3 under the
For instance, if a user has built and installed PSBLAS 3.4 under the
\verb|/opt| directory and is
using the SuiteSparse package (which includes UMFPACK), then MLD2P4
might be configured with:
\begin{verbatim}
./configure --with-psblas=/opt/psblas-3.3/ \
./configure --with-psblas=/opt/psblas-3.4/ \
--with-umfpackincdir=/usr/include/suitesparse
\end{verbatim}
Once the configure script has completed execution, it will have
@ -230,8 +238,13 @@ generated the file \verb|Make.inc| which will then be used by all
Makefiles in the directory tree; this file will be copied in the
install directory under the name \verb|Make.inc.MLD2P4|.
In order to use the MUMPS solver based on multifrontal factorization, the user has to add MUMPS flags, include directories and libraries in the Make.inc file.
The necessary MUMPS libraries are \verb|-ldmumps, -lsmumps -lzmumps -lzmumps -mumps_common -lpord|. The flag \verb|-DHAVE_MUMPS_| is mandatory too. Since MUMPS uses openmp and ScaLAPACK, \verb|LINKOPT=-fonemp| must be added as well, along with the ScaLAPACK flags, include directories and library (which can be set using the configure script).
To use the MUMPS solver package,
the user has to add the appropriate options to the configure script;
by default we are looking for the libraries
\verb|-ldmumps -lsmumps -lzmumps -lzmumps -mumps_common -lpord|.
MUMPS often uses additional packages such as ScaLAPACK, ParMETIS,
SCOTCH, as well as enabling OpenMP; in such cases it is necessary to
add linker options with the \verb|--with-extra-libs| configure option.
To build the library the user will now enter
\begin{verbatim}

@ -18,4 +18,4 @@ account when treating derived works.
The library defines a version string with the
constant
\[ \verb|mld_version_string_|\]
whose current value is \verb|2.0.0|
whose current value is \verb|2.1.0|

@ -203,9 +203,12 @@ Figure~\ref{fig:ex_3lh} shows how to set a three-level hybrid Schwarz
preconditioner, which uses block Jacobi with ILU(0) on the
local blocks as post-smoother, has a coarsest matrix replicated on the processors,
and solves the coarsest-level system with the LU factorization from UMFPACK~\cite{UMFPACK}.
Figure~\ref{fig:ex_3lhm} shows how to set a three-level preconditioner similar to the one of ~\ref{fig:ex_3lh}, but the coarsest-level systems is solved with the multifrontal factorization from MUMPS~\cite{UMFPACK}.
Note that MUMPS can be used on both replicated and distributed coarsest level matrices,
as a global and local solver respectively.
Figure~\ref{fig:ex_3lhm} shows how to set a three-level preconditioner
similar to the one of ~\ref{fig:ex_3lh}, but the coarsest-level
systems is solved with the multifrontal factorization from
MUMPS~\cite{UMFPACK}.
Note that MUMPS can be used on both replicated and distributed
coarsest level matrices, as a global and local solver respectively.
The number of levels is specified by using \verb|mld_precinit|; the other
preconditioner parameters are set by calling \verb|mld_precset|. Note that
the type of multilevel framework (i.e.\ multiplicative among the levels
@ -221,12 +224,13 @@ solver. Again, \verb|mld_precset| is used only to set
non-default values of the parameters (see Tables~\ref{tab:p_type}-\ref{tab:p_coarse}).
In both cases, the construction and the application of the preconditioner
are carried out as for the default multi-level preconditioner.
The code fragments shown in in Figures~\ref{fig:ex_3lh}~\ref{fig:ex_3lhm}-\ref{fig:ex_3la} are
included in the example program file \verb|mld_dexample_ml.f90| too.
The code fragments shown in in
Figures~\ref{fig:ex_3lh}~\ref{fig:ex_3lhm}-\ref{fig:ex_3la} are
included in the example program file \verb|mld_dexample_ml.f90| too.
Finally, Figure~\ref{fig:ex_1l} shows the setup of a one-level
additive Schwarz preconditioner, i.e.\ RAS with overlap 2. The corresponding
example program is available in \verb|mld_dexample_| \verb|1lev.f90|.
additive Schwarz preconditioner, i.e.\ RAS with overlap 2. The
corresponding example program is available in \verb|mld_dexample_1lev.f90|.
For all the previous preconditioners, example programs where the sparse matrix and
the right-hand side are generated by discretizing a PDE with Dirichlet

@ -29,7 +29,7 @@ discretization of a PDE). The \emph{smoothed aggregation} technique is applied
as algebraic coarsening strategy~\cite{BREZINA_VANEK,VANEK_MANDEL_BREZINA}.
\end{itemize}
Version 2.0 of the package is written in \emph{Fortran~2003}, following an
Version 2.1 of the package is written in \emph{Fortran~2003}, following an
\emph{object-oriented design} through the exploitation of features
such as abstract data type creation, functional overloading and
dynamic memory management.
@ -74,11 +74,12 @@ We provide here a description of the upper-layer routines, but not of the
medium-layer ones.%% For a detailed description of the overall software architecture
%% of MLD2P4 the reader is referred to~\cite{MLD2P4_TOMS}.
The user interface of version 2.0 is essentially identical to that of
The user interface of version 2.1 is essentially identical (except for
the support of additional solvers) to that of
version 1.1. The internal implementation however has been changed
significantly; as a result, it has become much easier to extend the library by
adding new smoothers and/or solvers, thanks to the Fortran~2003 features
exploited in the design of PSBLAS~3.0.
exploited in the design of PSBLAS~3.
This guide is organized as follows. General information on the distribution of the source code
is reported in Section~\ref{sec:distribution}, while details on the configuration

@ -13,7 +13,8 @@ be combined in a multilevel framework.
The base (one-level) preconditioners include:
\begin{itemize}
\item Diagonal Scaling
\item Block Jacobi
\item Block Jacobi
\item Hybrid Gauss-Seidel;
\item Additive Schwarz, Restricted Additive Schwarz and
Additive Schwarz with Harmonic extensions;
\end{itemize}
@ -109,7 +110,8 @@ $ptype$ string as follows\footnote{The string is case-insensitive}:
\subroutine{mld\_precset}{Set preconditioner features}
\syntax{call mld\_precset}{prec, what, val, info, ilev}
\syntax{call mld\_precset}{prec, what, val, info, ilev, pos}
\syntax{call prec\%set}{what, val, info, ilev, pos}
\begin{description}
@ -124,8 +126,8 @@ Specified as: an already initialized precondtioner data structure \precdata\\
Scope: {\bf local} \\
Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: an integer constants. Symbolic names are available in
the library module, see usage notes for legal values.
Specified as: an integer constant or a string. Symbolic names are
available in the library module, see usage notes for legal values.
\item[val] The value to set the chosen feature to. \\
Scope: {\bf local} \\
Type: {\bf required}\\
@ -138,6 +140,12 @@ see usage notes for legal values.
Scope: {\bf global} \\
Type: {\bf optional}\\
Specified as: an integer value, see usage notes.
\item[pos] The position of the smoother/solver to which the current
setting applies.
feature choice should apply.\\
Scope: {\bf global} \\
Type: {\bf optional}\\
Specified as: a character variable, with values \verb|pre| or \verb|post|.
\end{description}
\begin{description}

@ -3,10 +3,11 @@
{\textsc{\ref{sec:userinterface} User Interface}}
The basic user interface of MLD2P4 consists of six routines. The four routines \verb|mld_| \verb|precinit|,
\verb|mld_precset|, \verb|mld_precbld| and \verb|mld_precaply| encapsulate all the functionalities
for the setup and the application of any one-level and multi-level
preconditioner implemented in the package.
The basic user interface of MLD2P4 consists of six routines. The four
routines \verb|mld_| \verb|precinit|, \verb|mld_precset|,
\verb|mld_precbld| and \verb|mld_precaply| encapsulate all the
functionalities for the setup and the application of any one-level and
multi-level preconditioner implemented in the package.
The routine \verb|mld_precfree| deallocates the preconditioner data structure, while
\verb|mld_precdescr| prints a description of the preconditioner setup by the user.
@ -83,7 +84,7 @@ contained in \verb|val|.
The routine may also be invoked as a method
of the preconditioner object as in the following:
\begin{center}
\verb|call p%set(what,val,info [,ilev])|\\
\verb|call p%set(what,val,info [,ilev, pos])|\\
\end{center}
In this case it is also possible to specify an optional \verb|ilev|
argument that restricts the effect of
@ -94,8 +95,8 @@ solver by extending one of the base MLD2P4 types, and has declared a
variable of the new type in the main program, it is possible to pass
the new smoother/solver variable to the setup routine as follows:
\begin{center}
\verb|call p%set(smoother,info [,ilev])|\\
\verb|call p%set(solver,info [,ilev])|
\verb|call p%set(smoother,info [,ilev ,pos])|\\
\verb|call p%set(solver,info [,ilev ,poss])|
\end{center}
In this way, the variable will act as a \emph{mold} to which the
preconditioner will conform, even though the MLD2P4 library is not
@ -241,16 +242,20 @@ according to their needs.
for neglecting them. \\ \hline
\verb|mld_sub_solve_| \break \verb|SUB_SOLVE| & \verb|character(len=*)|
& \texttt{'DIAG'} \hspace{2.5cm}
\texttt{'GS'} \hspace{2.5cm}
\texttt{'GS'} \hspace{2.5cm} \texttt{'BWGS'} \hspace{2.5cm}
\texttt{'ILU'} \hspace{2.5cm}
\texttt{'MILU'} \hspace{2.5cm} \texttt{'ILUT'}
\hspace{2.5cm} \texttt{'UMF'} \hspace{2.5cm} \texttt{'SLU'}
\hspace{2.5cm}
\texttt{'UMF'} \hspace{2.5cm}
\texttt{'SLU'}
\hspace{2.5cm} \texttt{'MUMPS'}
& \texttt{'ILU'}
& Predefined local solver: pointwise Jacobi
(diagonal scaling),
(forward) Gauss-Seidel, Backward
Gauss-Seidel, ILU($p$), MILU($p$),
ILU($p,t$), LU from UMFPACK, LU from
SuperLU (plus triangular solve). \\ \hline
ILU($p,t$), LU from UMFPACK, LU from
SuperLU (plus triangular solve), LU from MUMPS. \\ \hline
\verb|mld_sub_fillin_| \break \verb|SUB_FILLIN| & \verb|integer|
& Any~int.~num.~$\ge 0$
& 0
@ -306,7 +311,7 @@ according to their needs.
& Aggregation algorithm. Currently, only the
decoupled aggregation is available. \\ \hline
\verb|mld_aggr_ord_| \break \verb|AGGR_ORD| & \verb|character(len=*)|
& \texttt{'NAT'}
& \texttt{'NATURAL'}
& \texttt{'DEGREE'}
& Initial ordering of indices for aggregation
algorithm: natural ordering or sorted by

@ -6,12 +6,12 @@ CSR ! Storage format CSR COO JAD
10 ! ITRACE
30 ! IRST (restart for RGMRES and BiCGSTABL)
1.d-6 ! EPS
3L-MUL-RAS-MUMPS ! Descriptive name for preconditioner (up to 40 chars)
3L-MUL-RAS-ILU ! Descriptive name for preconditioner (up to 40 chars)
ML ! Preconditioner NONE JACOBI BJAC AS ML
0 ! Number of overlap layers for AS preconditioner at finest level
HALO ! Restriction operator NONE HALO
NONE ! Prolongation operator NONE SUM AVG
GS ! Subdomain solver DSCALE ILU MILU ILUT UMF SLU
GS ! Subdomain solver DSCALE ILU MILU ILUT UMF SLU GS MUMPS
4 ! Solver sweeps for GS
0 ! Level-set N for ILU(N), and P for ILUT
1.d-4 ! Threshold T for ILU(T,P)
@ -25,7 +25,7 @@ MULT ! Type of multilevel correction: ADD MULT
TWOSIDE ! Side of correction PRE POST TWOSIDE (ignored for ADD)
DIST ! Coarse level: matrix distribution DIST REPL
BJAC ! Coarse level: solver JACOBI BJAC UMF SLU SLUDIST MUMPS
ILU ! Coarse level: subsolver DSCALE ILU UMF SLU SLUDIST MUMPS
ILU ! Coarse level: subsolver DSCALE GS ILU UMF SLU SLUDIST MUMPS
1 ! Coarse level: Level-set N for ILU(N)
1.d-4 ! Coarse level: Threshold T for ILU(T,P)
4 ! Coarse level: Number of Jacobi sweeps

Loading…
Cancel
Save