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 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;
@ -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