mirror of
https://github.com/sfilippone/amg4psblas.git
synced 2026-10-06 14:44:55 +00:00
mld2p4-2:
Further update of documentation.
This commit is contained in:
@@ -1,12 +1,13 @@
|
||||
|
||||
|
||||
MLD2P4 version 1.1
|
||||
MLD2P4 version 2.0
|
||||
MultiLevel Domain Decomposition Parallel Preconditioners Package
|
||||
based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
|
||||
based on PSBLAS (Parallel Sparse BLAS version 3.0)
|
||||
|
||||
(C) Copyright 2008,2009
|
||||
(C) Copyright 2008,2009,2010, 2010
|
||||
|
||||
Salvatore Filippone University of Rome Tor Vergata
|
||||
Alfredo Buttari University of Rome Tor Vergata
|
||||
Alfredo Buttari CNRS-IRIT, Toulouse
|
||||
Pasqua D'Ambra ICAR-CNR, Naples
|
||||
Daniela di Serafino Second University of Naples
|
||||
|
||||
|
||||
@@ -72,8 +72,8 @@ of a generic algebraic multilevel Schwarz preconditioner, thus allowing to searc
|
||||
for the ``best'' preconditioner for the problem at hand.
|
||||
|
||||
<P>
|
||||
The package has been designed employing object-oriented techniques,
|
||||
using Fortran 95, with interfaces to additional third party libraries
|
||||
The package employs object-oriented design techniques in
|
||||
Fortran 2003, with interfaces to additional third party libraries
|
||||
such as UMFPACK, SuperLU and SuperLU_Dist, that
|
||||
can be exploited in building multi-level preconditioners. The parallel
|
||||
implementation is based on a Single Program Multiple Data (SPMD)
|
||||
|
||||
@@ -727,7 +727,7 @@ $w = y_1$;
|
||||
\begin{tabbing}
|
||||
\quad \=\quad...
|
||||
...= y_l+r_l$\\
|
||||
\textbf{endfor} \\ [1mm]
|
||||
\textbf{endfor} [1mm]
|
||||
$w = y_1$;
|
||||
\end{tabbing}}
|
||||
\end{minipage}}">
|
||||
|
||||
+1
-10
@@ -129,18 +129,9 @@ a direct solver to the coarsest-level system, e.g. based on the LU
|
||||
factorization (see Section <A HREF="node16.html#sec:userinterface">6</A>
|
||||
for the coarsest-level solvers available in MLD2P4).
|
||||
|
||||
<P>
|
||||
|
||||
<BR><B>Remark 2.</B> The include path for MLD2P4 must override
|
||||
those for PSBLAS, i.e. the former must come first in the sequence
|
||||
passed to the compiler, as the MLD2P4 version of the Krylov solver
|
||||
interfaces must override that of PSBLAS. This will change in the future
|
||||
when the support for the <code>class</code> statement becomes widespread in Fortran
|
||||
compilers.
|
||||
|
||||
<P>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="928"></A>
|
||||
<DIV ALIGN="CENTER"><A NAME="926"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 1:</STRONG>
|
||||
Preconditioner types, corresponding strings and default choices.
|
||||
|
||||
+4
-14
@@ -86,7 +86,7 @@ the corresponding Fortran 95 codes are available in <code>examples/fileread/</co
|
||||
|
||||
<P>
|
||||
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex_default"></A><A NAME="931"></A>
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex_default"></A><A NAME="929"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 2:</STRONG>
|
||||
Setup and application of the default multi-level Schwarz preconditioner.
|
||||
@@ -192,18 +192,8 @@ the right-hand side are generated by discretizing a PDE with Dirichlet
|
||||
boundary conditions are also available in the directory <code>examples/pdegen</code>.
|
||||
|
||||
<P>
|
||||
|
||||
<BR><B>Remark 3.</B> Any PSBLAS-based program using the basic preconditioners
|
||||
implemented in PSBLAS 2.0, i.e. the diagonal and block-Jacobi ones,
|
||||
can use the diagonal and block-Jacobi preconditioners
|
||||
implemented in MLD2P4 without any change in the code.
|
||||
The PSBLAS-based program must be only recompiled
|
||||
and linked to the MLD2P4 library.
|
||||
|
||||
<BR>
|
||||
<P>
|
||||
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex_3lh"></A><A NAME="933"></A>
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex_3lh"></A><A NAME="931"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 3:</STRONG>
|
||||
Setup of a hybrid three-level Schwarz preconditioner.</CAPTION>
|
||||
@@ -235,7 +225,7 @@ Setup of a hybrid three-level Schwarz preconditioner.</CAPTION>
|
||||
|
||||
<P>
|
||||
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex_3la"></A><A NAME="935"></A>
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex_3la"></A><A NAME="933"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4:</STRONG>
|
||||
Setup of an additive three-level Schwarz preconditioner.</CAPTION>
|
||||
@@ -267,7 +257,7 @@ Setup of an additive three-level Schwarz preconditioner.</CAPTION>
|
||||
|
||||
<P>
|
||||
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex_1l"></A><A NAME="937"></A>
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex_1l"></A><A NAME="935"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 5:</STRONG>
|
||||
Setup of a one-level Schwarz preconditioner.</CAPTION>
|
||||
|
||||
@@ -72,7 +72,7 @@ i.e.
|
||||
|
||||
<UL>
|
||||
<LI>the sparse matrix data structure, containing the matrix to be
|
||||
preconditioned, must be of type <code>mld_</code><I>x</I><code>spmat_type</code>
|
||||
preconditioned, must be of type <code>psb_</code><I>x</I><code>spmat_type</code>
|
||||
with <I>x</I> = <code>s</code> for real single precision, <I>x</I> = <code>d</code>
|
||||
for real double precision, <I>x</I> = <code>c</code> for complex single precision,
|
||||
<I>x</I> = <code>z</code> for complex double precision;
|
||||
@@ -93,12 +93,9 @@ i.e.
|
||||
WIDTH="86" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img61.png"
|
||||
ALT="$w=M^{-1}v$"> must be of type
|
||||
<I>type</I><code>(</code><I>kind_parameter</I><code>)</code>, with <I>type</I> =
|
||||
<code>real</code>, <code>complex</code> and <I>kind_parameter</I> = <code>kind(1.e0)</code>,
|
||||
<code>kind(1.d0)</code>, according to the sparse matrix and preconditioner
|
||||
data structure; note that the PSBLAS module <code>psb_base_mod</code>
|
||||
provides the constants <code>psb_spk_</code>
|
||||
= <code>kind(1.e0)</code> and <code>psb_dpk_</code> = <code>kind(1.d0)</code>;
|
||||
<code>psb_</code><I>x</I><code>vect_type</code> with <I>x</I> =
|
||||
<code>s</code>, <code>d</code>, <code>c</code>, <code>z</code>, in a manner completely
|
||||
analogous to the sparse matrix type;
|
||||
</LI>
|
||||
<LI>real parameters defining the preconditioner must be declared
|
||||
according to the precision of the sparse matrix and preconditioner
|
||||
|
||||
@@ -133,7 +133,7 @@ refer to Section <A HREF="node11.html#sec:background">4</A>.
|
||||
|
||||
<P>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1265"></A>
|
||||
<DIV ALIGN="CENTER"><A NAME="1257"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 2:</STRONG>
|
||||
Parameters defining the type of multi-level preconditioner.
|
||||
@@ -177,7 +177,7 @@ Parameters defining the type of multi-level preconditioner.
|
||||
|
||||
<P>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1267"></A>
|
||||
<DIV ALIGN="CENTER"><A NAME="1259"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 3:</STRONG>
|
||||
Parameters defining the one-level preconditioner used as smoother.
|
||||
@@ -277,7 +277,7 @@ Parameters defining the one-level preconditioner used as smoother.
|
||||
|
||||
<P>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1269"></A>
|
||||
<DIV ALIGN="CENTER"><A NAME="1261"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 4:</STRONG>
|
||||
Parameters defining the aggregation algorithm.
|
||||
@@ -380,7 +380,7 @@ Parameters defining the aggregation algorithm.
|
||||
|
||||
<P>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1272"></A>
|
||||
<DIV ALIGN="CENTER"><A NAME="1264"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 5:</STRONG>
|
||||
Parameters defining the coarse-space correction at the coarsest
|
||||
|
||||
@@ -70,7 +70,7 @@ This routine computes <!-- MATH
|
||||
<IMG
|
||||
WIDTH="117" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img97.png"
|
||||
ALT="$y = op(M^{-1})\, x$">, where <IMG
|
||||
ALT="$y = op(M^{-1}) x$">, where <IMG
|
||||
WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img60.png"
|
||||
ALT="$M$"> is a previously built
|
||||
|
||||
@@ -152,9 +152,9 @@ We provide here a description of the upper-layer routines, but not of the
|
||||
medium-layer ones.
|
||||
<P>
|
||||
The user interface of version 2.0 is essentially identical to that of
|
||||
version 1.1; the internal implementation however has been changed a
|
||||
lot, and it has become much easier to extend the library by adding new
|
||||
smoothers and/or solvers, thanks to the Fortran 2003 features
|
||||
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.
|
||||
|
||||
<P>
|
||||
|
||||
@@ -69,7 +69,8 @@ must support the Fortran 2003 standard plus the extension <code>MOLD=</code
|
||||
feature, which
|
||||
enhances the usability of <code>ALLOCATE</code>.
|
||||
Many compiles do this; in particular, this is
|
||||
supported by the GNU Fortran compiler as of version 4.6.0
|
||||
supported by the GNU Fortran compiler, for which we
|
||||
recommend to use at least version 4.7.1.
|
||||
The software defines data types and interfaces for
|
||||
real and complex data, in both single and double precision.
|
||||
|
||||
|
||||
@@ -181,7 +181,7 @@ directories specifics to the GNU 4.3 compiler suite might be as
|
||||
follows, specifying only the UMFPACK external package:
|
||||
<PRE>
|
||||
./configure --with-psblas=/home/user/psblas-3.0/ \
|
||||
--with-libs="-L/usr/local/BLAS/gnu46 -L/usr/local/BLACS/gnu46" \
|
||||
--with-libs="-L/usr/local/BLAS/gnu46" \
|
||||
--with-umfpackdir=/usr/local/UMFPACK/gnu46
|
||||
</PRE>
|
||||
Once the configure script has completed execution, it will have
|
||||
|
||||
+631
-645
File diff suppressed because it is too large
Load Diff
@@ -15,8 +15,8 @@ available in this framework. MLD2P4 enables the user to easily specify different
|
||||
of a generic algebraic multilevel Schwarz preconditioner, thus allowing to search
|
||||
for the ``best'' preconditioner for the problem at hand.
|
||||
|
||||
The package has been designed employing object-oriented techniques,
|
||||
using Fortran 95, with interfaces to additional third party libraries
|
||||
The package employs object-oriented design techniques in
|
||||
Fortran~2003, with interfaces to additional third party libraries
|
||||
such as UMFPACK, SuperLU and SuperLU\_Dist, that
|
||||
can be exploited in building multi-level preconditioners. The parallel
|
||||
implementation is based on a Single Program Multiple Data (SPMD)
|
||||
|
||||
@@ -13,7 +13,8 @@ must support the Fortran~2003 standard plus the extension \verb|MOLD=|
|
||||
feature, which
|
||||
enhances the usability of \verb|ALLOCATE|.
|
||||
Many compiles do this; in particular, this is
|
||||
supported by the GNU Fortran compiler as of version 4.6.0
|
||||
supported by the GNU Fortran compiler, for which we
|
||||
recommend to use at least version 4.7.1.
|
||||
The software defines data types and interfaces for
|
||||
real and complex data, in both single and double precision.
|
||||
|
||||
@@ -196,7 +197,7 @@ directories specifics to the GNU 4.3 compiler suite might be as
|
||||
follows, specifying only the UMFPACK external package:
|
||||
\begin{verbatim}
|
||||
./configure --with-psblas=/home/user/psblas-3.0/ \
|
||||
--with-libs="-L/usr/local/BLAS/gnu46 -L/usr/local/BLACS/gnu46" \
|
||||
--with-libs="-L/usr/local/BLAS/gnu46" \
|
||||
--with-umfpackdir=/usr/local/UMFPACK/gnu46
|
||||
\end{verbatim}
|
||||
Once the configure script has completed execution, it will have
|
||||
|
||||
+15
-15
@@ -62,13 +62,13 @@ a direct solver to the coarsest-level system, e.g.\ based on the LU
|
||||
factorization (see Section~\ref{sec:userinterface}
|
||||
for the coarsest-level solvers available in MLD2P4).
|
||||
|
||||
\ \\
|
||||
\textbf{Remark 2.} The include path for MLD2P4 must override
|
||||
those for PSBLAS, i.e.\ the former must come first in the sequence
|
||||
passed to the compiler, as the MLD2P4 version of the Krylov solver
|
||||
interfaces must override that of PSBLAS. This will change in the future
|
||||
when the support for the \verb|class| statement becomes widespread in Fortran
|
||||
compilers.
|
||||
% \ \\
|
||||
% \textbf{Remark 2.} The include path for MLD2P4 must override
|
||||
% those for PSBLAS, i.e.\ the former must come first in the sequence
|
||||
% passed to the compiler, as the MLD2P4 version of the Krylov solver
|
||||
% interfaces must override that of PSBLAS. This will change in the future
|
||||
% when the support for the \verb|class| statement becomes widespread in Fortran
|
||||
% compilers.
|
||||
|
||||
|
||||
\begin{table}[th]
|
||||
@@ -228,14 +228,14 @@ For all the previous preconditioners, example programs where the sparse matrix a
|
||||
the right-hand side are generated by discretizing a PDE with Dirichlet
|
||||
boundary conditions are also available in the directory \verb|examples/pdegen|.
|
||||
|
||||
\ \\
|
||||
\textbf{Remark 3.} Any PSBLAS-based program using the basic preconditioners
|
||||
implemented in PSBLAS 2.0, i.e.\ the diagonal and block-Jacobi ones,
|
||||
can use the diagonal and block-Jacobi preconditioners
|
||||
implemented in MLD2P4 without any change in the code.
|
||||
The PSBLAS-based program must be only recompiled
|
||||
and linked to the MLD2P4 library.
|
||||
\\
|
||||
% \ \\
|
||||
% \textbf{Remark 2.} Any PSBLAS-based program using the basic preconditioners
|
||||
% implemented in PSBLAS 3.0, i.e.\ the diagonal and block-Jacobi ones,
|
||||
% can use the diagonal and block-Jacobi preconditioners
|
||||
% implemented in MLD2P4 without change in the code.
|
||||
% The PSBLAS-based program must be only recompiled
|
||||
% and linked to the MLD2P4 library.
|
||||
% \\
|
||||
|
||||
|
||||
\begin{figure}[tbh]
|
||||
|
||||
@@ -75,9 +75,9 @@ medium-layer ones.%% For a detailed description of the overall software archite
|
||||
%% of MLD2P4 the reader is referred to~\cite{MLD2P4_TOMS}.
|
||||
|
||||
The user interface of version 2.0 is essentially identical to that of
|
||||
version 1.1; the internal implementation however has been changed a
|
||||
lot, and it has become much easier to extend the library by adding new
|
||||
smoothers and/or solvers, thanks to the Fortran~2003 features
|
||||
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.
|
||||
|
||||
This guide is organized as follows. General information on the distribution of the source code
|
||||
|
||||
@@ -16,7 +16,7 @@ arguments with appropriate data types must be passed to the routine,
|
||||
i.e.
|
||||
\begin{itemize}
|
||||
\item the sparse matrix data structure, containing the matrix to be
|
||||
preconditioned, must be of type \verb|mld_|\emph{x}\verb|spmat_type|
|
||||
preconditioned, must be of type \verb|psb_|\emph{x}\verb|spmat_type|
|
||||
with \emph{x} = \verb|s| for real single precision, \emph{x} = \verb|d|
|
||||
for real double precision, \emph{x} = \verb|c| for complex single precision,
|
||||
\emph{x} = \verb|z| for complex double precision;
|
||||
@@ -26,12 +26,9 @@ i.e.
|
||||
matrix data structure;
|
||||
\item the arrays containing the vectors $v$ and $w$ involved in
|
||||
the preconditioner application $w=M^{-1}v$ must be of type
|
||||
\emph{type}\verb|(|\emph{kind\_parameter}\verb|)|, with \emph{type} =
|
||||
\verb|real|, \verb|complex| and \emph{kind\_parameter} = \verb|kind(1.e0)|,
|
||||
\verb|kind(1.d0)|, according to the sparse matrix and preconditioner
|
||||
data structure; note that the PSBLAS module \verb|psb_base_mod|
|
||||
provides the constants \verb|psb_spk_|
|
||||
= \verb|kind(1.e0)| and \verb|psb_dpk_| = \verb|kind(1.d0)|;
|
||||
\verb|psb_|\emph{x}\verb|vect_type| with \emph{x} =
|
||||
\verb|s|, \verb|d|, \verb|c|, \verb|z|, in a manner completely
|
||||
analogous to the sparse matrix type;
|
||||
\item real parameters defining the preconditioner must be declared
|
||||
according to the precision of the sparse matrix and preconditioner
|
||||
data structures (see Section~\ref{sec:precset}).
|
||||
|
||||
@@ -35,7 +35,7 @@ ppde3d.o spde3d.o ppde2d.o spde2d.o: data_input.o
|
||||
|
||||
|
||||
clean:
|
||||
/bin/rm -f data_input.o ppde3d.o spde3d.o ppde2d.o spde2d.o \
|
||||
/bin/rm -f data_input.o ppde3d.o spde3d.o ppde2d.o spde2d.o *$(.mod)\
|
||||
$(EXEDIR)/ppde3d $(EXEDIR)/spde3d $(EXEDIR)/ppde2d $(EXEDIR)/spde2d
|
||||
|
||||
verycleanlib:
|
||||
|
||||
Reference in New Issue
Block a user