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 @author Salvatore Filippone <salvatore.filippone@uniroma2.it>
dnl dnl
AC_DEFUN(PAC_CHECK_MUMPS, 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=$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]), 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=$withval],
[mld2p4_cv_mumpsdir='']) [mld2p4_cv_mumpsdir=''])

@ -10,11 +10,10 @@ to build the software.
MLD2P4 is implemented almost entirely in Fortran~2003, with some MLD2P4 is implemented almost entirely in Fortran~2003, with some
interfaces to external libraries in C; the Fortran compiler interfaces to external libraries in C; the Fortran compiler
must support the Fortran~2003 standard plus the extension \verb|MOLD=| must support the Fortran~2003 standard plus the extension \verb|MOLD=|
feature, which feature, which enhances the usability of \verb|ALLOCATE|.
enhances the usability of \verb|ALLOCATE|.
Many compiles do this; in particular, this is Many compiles do this; in particular, this is
supported by the GNU Fortran compiler, for which we 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 The software defines data types and interfaces for
real and complex data, in both single and double precision. real and complex data, in both single and double precision.
@ -38,7 +37,7 @@ The following base libraries are needed:
high-performance computing systems; high-performance computing systems;
\item[PSBLAS] \cite{PSBLASGUIDE,psblas_00} Parallel Sparse BLAS is \item[PSBLAS] \cite{PSBLASGUIDE,psblas_00} Parallel Sparse BLAS is
available from \\ \verb|http://www.ce.uniroma2.it/psblas|; version 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. listed so far are also prerequisites of PSBLAS.
\end{description} \end{description}
Please note that the four previous libraries must have Fortran 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 List additional link flags here. For example,
--with-extra-libs=-lspecial_system_lib or --with-extra-libs=-lspecial_system_lib or
--with-extra-libs=-L/path/to/libs --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 --with-umfpack=LIBNAME Specify the library name for UMFPACK and its support
libraries. Default: "-lumfpack -lamd" libraries. Default: "-lumfpack -lamd"
--with-umfpackdir=DIR Specify the directory for UMFPACK library and --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>. Report bugs to <bugreport@mld2p4.it>.
\end{verbatim} \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 \verb|/opt| directory and is
using the SuiteSparse package (which includes UMFPACK), then MLD2P4 using the SuiteSparse package (which includes UMFPACK), then MLD2P4
might be configured with: might be configured with:
\begin{verbatim} \begin{verbatim}
./configure --with-psblas=/opt/psblas-3.3/ \ ./configure --with-psblas=/opt/psblas-3.4/ \
--with-umfpackincdir=/usr/include/suitesparse --with-umfpackincdir=/usr/include/suitesparse
\end{verbatim} \end{verbatim}
Once the configure script has completed execution, it will have 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 Makefiles in the directory tree; this file will be copied in the
install directory under the name \verb|Make.inc.MLD2P4|. 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. To use the MUMPS solver package,
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). 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 To build the library the user will now enter
\begin{verbatim} \begin{verbatim}

@ -18,4 +18,4 @@ account when treating derived works.
The library defines a version string with the The library defines a version string with the
constant constant
\[ \verb|mld_version_string_|\] \[ \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 preconditioner, which uses block Jacobi with ILU(0) on the
local blocks as post-smoother, has a coarsest matrix replicated on the processors, 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}. 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}. Figure~\ref{fig:ex_3lhm} shows how to set a three-level preconditioner
Note that MUMPS can be used on both replicated and distributed coarsest level matrices, similar to the one of ~\ref{fig:ex_3lh}, but the coarsest-level
as a global and local solver respectively. 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 The number of levels is specified by using \verb|mld_precinit|; the other
preconditioner parameters are set by calling \verb|mld_precset|. Note that preconditioner parameters are set by calling \verb|mld_precset|. Note that
the type of multilevel framework (i.e.\ multiplicative among the levels 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}). 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 In both cases, the construction and the application of the preconditioner
are carried out as for the default multi-level 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 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. 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 Finally, Figure~\ref{fig:ex_1l} shows the setup of a one-level
additive Schwarz preconditioner, i.e.\ RAS with overlap 2. The corresponding additive Schwarz preconditioner, i.e.\ RAS with overlap 2. The
example program is available in \verb|mld_dexample_| \verb|1lev.f90|. corresponding example program is available in \verb|mld_dexample_1lev.f90|.
For all the previous preconditioners, example programs where the sparse matrix and For all the previous preconditioners, example programs where the sparse matrix and
the right-hand side are generated by discretizing a PDE with Dirichlet 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}. as algebraic coarsening strategy~\cite{BREZINA_VANEK,VANEK_MANDEL_BREZINA}.
\end{itemize} \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 \emph{object-oriented design} through the exploitation of features
such as abstract data type creation, functional overloading and such as abstract data type creation, functional overloading and
dynamic memory management. 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 medium-layer ones.%% For a detailed description of the overall software architecture
%% of MLD2P4 the reader is referred to~\cite{MLD2P4_TOMS}. %% 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 version 1.1. The internal implementation however has been changed
significantly; as a result, it has become much easier to extend the library by 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 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 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 is reported in Section~\ref{sec:distribution}, while details on the configuration

@ -14,6 +14,7 @@ The base (one-level) preconditioners include:
\begin{itemize} \begin{itemize}
\item Diagonal Scaling \item Diagonal Scaling
\item Block Jacobi \item Block Jacobi
\item Hybrid Gauss-Seidel;
\item Additive Schwarz, Restricted Additive Schwarz and \item Additive Schwarz, Restricted Additive Schwarz and
Additive Schwarz with Harmonic extensions; Additive Schwarz with Harmonic extensions;
\end{itemize} \end{itemize}
@ -109,7 +110,8 @@ $ptype$ string as follows\footnote{The string is case-insensitive}:
\subroutine{mld\_precset}{Set preconditioner features} \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} \begin{description}
@ -124,8 +126,8 @@ Specified as: an already initialized precondtioner data structure \precdata\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\ Intent: {\bf in}.\\
Specified as: an integer constants. Symbolic names are available in Specified as: an integer constant or a string. Symbolic names are
the library module, see usage notes for legal values. available in the library module, see usage notes for legal values.
\item[val] The value to set the chosen feature to. \\ \item[val] The value to set the chosen feature to. \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
@ -138,6 +140,12 @@ see usage notes for legal values.
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Specified as: an integer value, see usage notes. 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} \end{description}
\begin{description} \begin{description}

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

@ -6,12 +6,12 @@ CSR ! Storage format CSR COO JAD
10 ! ITRACE 10 ! ITRACE
30 ! IRST (restart for RGMRES and BiCGSTABL) 30 ! IRST (restart for RGMRES and BiCGSTABL)
1.d-6 ! EPS 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 ML ! Preconditioner NONE JACOBI BJAC AS ML
0 ! Number of overlap layers for AS preconditioner at finest level 0 ! Number of overlap layers for AS preconditioner at finest level
HALO ! Restriction operator NONE HALO HALO ! Restriction operator NONE HALO
NONE ! Prolongation operator NONE SUM AVG 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 4 ! Solver sweeps for GS
0 ! Level-set N for ILU(N), and P for ILUT 0 ! Level-set N for ILU(N), and P for ILUT
1.d-4 ! Threshold T for ILU(T,P) 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) TWOSIDE ! Side of correction PRE POST TWOSIDE (ignored for ADD)
DIST ! Coarse level: matrix distribution DIST REPL DIST ! Coarse level: matrix distribution DIST REPL
BJAC ! Coarse level: solver JACOBI BJAC UMF SLU SLUDIST MUMPS 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 ! Coarse level: Level-set N for ILU(N)
1.d-4 ! Coarse level: Threshold T for ILU(T,P) 1.d-4 ! Coarse level: Threshold T for ILU(T,P)
4 ! Coarse level: Number of Jacobi sweeps 4 ! Coarse level: Number of Jacobi sweeps

Loading…
Cancel
Save