psblas3-type-indexed
Salvatore Filippone 18 years ago
parent ddb6b91cd8
commit f854ba82b8

@ -9,7 +9,7 @@ communication descriptors and preconditioners.%% These data structures
%% be used to next chapters containing these callings. %% be used to next chapters containing these callings.
All the data types and subroutine interfaces are defined in the module All the data types and subroutine interfaces are defined in the module
\verb|psb_sparse_mod|; this will have to be included by every user \verb|psb_base_mod|; this will have to be included by every user
subroutine that makes use of the library. subroutine that makes use of the library.

@ -3,28 +3,30 @@
% \section{Preconditioners} % \section{Preconditioners}
\label{sec:psprecs} \label{sec:psprecs}
PSBLAS contains the implementation of many preconditioning The base PSBLAS library contains the implementation of two simple
techniques some of which are very flexible thanks to the presence of preconditioning techniques:
many parameters that is possible to adjust to fit the user's needs:
\begin{itemize} \begin{itemize}
\item Diagonal Scaling \item Diagonal Scaling
\item Block Jacobi with ILU(0) factorization \item Block Jacobi with ILU(0) factorization
%% \item Additive Schwarz with the Restricted Additive Schwarz and %% \item Additive Schwarz with the Restricted Additive Schwarz and
%% Additive Schwarz with Harmonic extensions; %% Additive Schwarz with Harmonic extensions;
\end{itemize} \end{itemize}
The PSBLAS library is incorporating a package of two-level Additive The supporting data type and subroutine interfaces are defined in the
Schwarz preconditioners called MD2P4; this is actually a family of module \verb|psb_prec_mod|.
preconditioners since there is the possibility to choose between
many variants, and is currently in an experimental state. Its %% We also provide a companion package of multi-level Additive
documentation is planned to appear after stabilization of the %% Schwarz preconditioners called MD2P4; this is actually a family of
package, which will characterize release 2.1 of our library. %% preconditioners since there is the possibility to choose between
%% many variants, and is currently in an experimental stateIts
%% documentation is planned to appear after stabilization of the
%% package, which will characterize release 2.1 of our library.
\subroutine{psb\_precset}{Sets the preconditioner type} \subroutine{psb\_precset}{Sets the preconditioner type}
\syntax{call psb\_precset}{prec, ptype, info, iv, rs} \syntax{call psb\_precset}{prec, ptype, info}
\begin{description} \begin{description}
\item[\bf On Entry] \item[\bf On Entry]
@ -36,14 +38,14 @@ Specified as: a pronditioner data structure \precdata.
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf required}\\ Type: {\bf required}\\
Specified as: a character string, see usage notes. Specified as: a character string, see usage notes.
\item[iv] integer parameters for the precondtioner. %% \item[iv] integer parameters for the precondtioner.
Scope: {\bf global} \\ %% Scope: {\bf global} \\
Type: {\bf required}\\ %% Type: {\bf required}\\
Specified as: an integer array, see usage notes. %% Specified as: an integer array, see usage notes.
\item[rs] %% \item[rs]
Scope: {\bf global} \\ %% Scope: {\bf global} \\
Type: {\bf optional}\\ %% Type: {\bf optional}\\
Specified as: a long precision real number. %% Specified as: a long precision real number.
\item[\bf On Exit] \item[\bf On Exit]
\item[info] \item[info]
@ -52,10 +54,10 @@ Type: {\bf required}\\
Error code: if no error, 0 is returned. Error code: if no error, 0 is returned.
\end{description} \end{description}
\section*{Usage Notes} \section*{Usage Notes}
The PSBLAS 2.0 contains a number of preconditioners, ranging from a %% The PSBLAS 2.0 contains a number of preconditioners, ranging from a
simple diagonal scaling to 2-level domain decomposition. These %% simple diagonal scaling to 2-level domain decomposition. These
preconditioners may use the SuperLU or the UMFPACK software, if %% preconditioners may use the SuperLU or the UMFPACK software, if
installed; see~\cite{SUPERLU,UMFPACK}. %% installed; see~\cite{SUPERLU,UMFPACK}.
Legal inputs to this subroutine are interpreted depending on the Legal inputs to this subroutine are interpreted depending on the
$ptype$ string as follows\footnote{The string is case-insensitive}: $ptype$ string as follows\footnote{The string is case-insensitive}:
\begin{description} \begin{description}
@ -64,7 +66,7 @@ $ptype$ string as follows\footnote{The string is case-insensitive}:
\item[DIAG] Diagonal scaling; each entry of the input vector is \item[DIAG] Diagonal scaling; each entry of the input vector is
multiplied by the reciprocal of the sum of the absolute values of multiplied by the reciprocal of the sum of the absolute values of
the coefficients in the corresponding row of matrix $A$; the coefficients in the corresponding row of matrix $A$;
\item[ILU] Precondition by the incomplete LU factorization of the \item[ILU, BJA] Precondition by the incomplete LU factorization of the
block-diagonal of matrix $A$, where block boundaries are determined block-diagonal of matrix $A$, where block boundaries are determined
by the data allocation boundaries for each process; requires no by the data allocation boundaries for each process; requires no
communication. Only $ILU(0)$ is currently implemented. communication. Only $ILU(0)$ is currently implemented.

@ -5,7 +5,7 @@
\ifx\pdfoutput\undefined % We're not running pdftex \ifx\pdfoutput\undefined % We're not running pdftex
\else \else
\pdfbookmark{PSBLAS-v2.0.2 User's Guide}{title} \pdfbookmark{PSBLAS-v2.1 User's Guide}{title}
\fi \fi
\newlength{\centeroffset} \newlength{\centeroffset}
\setlength{\centeroffset}{-0.5\oddsidemargin} \setlength{\centeroffset}{-0.5\oddsidemargin}

@ -7,50 +7,44 @@
% %
\subroutine{psb\_cdall}{Allocates a communication descriptor} \subroutine{psb\_cdall}{Allocates a communication descriptor}
\syntax{call psb\_cdall}{m, n, parts, icontxt, desc\_a, info} \syntax{call psb\_cdall}{icontxt, desc\_a, info,mg=mg,parts=parts}
\syntax*{call psb\_cdall}{m, v, icontxt, desc\_a, info, flag} \syntax{call psb\_cdall}{icontxt, desc\_a, info,vg=vg,flag=flag}
\syntax{call psb\_cdall}{icontxt, desc\_a, info,vl=vl}
This subroutine initializes the communication descriptor associated This subroutine initializes the communication descriptor associated
with an index space. It takes two forms depending on whether the user with an index space. Exactly one of the optional arguments
specifies the domain partitioning through a subroutine or through a vector \verb|parts|, \verb|vg|, \verb|vl| must be specified, thereby choosing
the specific initialization strategy:
\begin{description} \begin{description}
\item[\bf First Form: On Entry ] \item[\bf On Entry ]
\item[m] the number of rows of the problem.\\
Scope:{\bf global}.\\
Type:{\bf required}.\\
Specified as: an integer value.
\item[n] the number of columns of the problem.\\
Scope:{\bf global}.\\
Type:{\bf required}.\\
Specified as: an integer value. Currently constrained to be $m=n$.
\item[parts] the subroutine that defines the partitioning scheme.\\
Scope:{\bf global}.\\
Type:{\bf required}.\\
Specified as: a subroutine.
\item[icontxt] the communication context.\\ \item[icontxt] the communication context.\\
Scope:{\bf global}.\\ Scope:{\bf global}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Specified as: an integer value. Specified as: an integer value.
\end{description} \item[vg] Data allocation: each index $i\in \{1\dots mg\}$ is allocated
\begin{description} to process $vg(i)$.
\item[\bf Second Form: On Entry ]
\item[m] the size of the index space.\\
Scope:{\bf global}.\\ Scope:{\bf global}.\\
Type:{\bf required}.\\ Type:{\bf optional}.\\
Specified as: an integer value $m>0$. Specified as: an integer array.
\item[v] Data allocation: each index $i\in \{1\dots m\}$ is allocated \item[flag] Specifies whether entries in $vg$ are zero- or one-based.
to process $v(i)$.
Scope:{\bf global}.\\ Scope:{\bf global}.\\
Type:{\bf required}.\\ Type:{\bf optional}.\\
Specified as: an integer array of size $m$. Specified as: an integer value $0,1$, default $0$.
\item[icontxt] the communication context.\\
\item[mg] the (global) number of rows of the problem.\\
Scope:{\bf global}.\\ Scope:{\bf global}.\\
Type:{\bf required}.\\ Type:{\bf optional}.\\
Specified as: an integer value. Specified as: an integer value. It is required if \verb|parts| is
\item[flag] Specifies whether entries in $v$ are zero- or one-based. specified.
\item[parts] the subroutine that defines the partitioning scheme.\\
Scope:{\bf global}.\\ Scope:{\bf global}.\\
Type:{\bf required}.\\
Specified as: a subroutine.
\item[vl] Data allocation: the set of global indices belonging to the
calling process.
Scope:{\bf local}.\\
Type:{\bf optional}.\\ Type:{\bf optional}.\\
Specified as: an integer value $0,1$, default $0$. Specified as: an integer array.
\end{description} \end{description}
\begin{description} \begin{description}
@ -67,6 +61,28 @@ Specified as: an integer variable.\\
\section*{Notes} \section*{Notes}
\begin{enumerate} \begin{enumerate}
\item Exactly one of the optional arguments \verb|parts|, \verb|vg|,
\verb|vl| must be specified, thereby choosing the initialization
strategy as follows:
\begin{description}
\item[parts] In this case we have a subroutine that takes as input a
index and the total number of indices in the space, and produces in
output a vector containing the set of processes (usually with just
one entry) to which the index should be assigned. If this argument
is specified, then it is mandatory to also specify the argument
\verb|mg|.
\item[vg] In this case the association between an index and a process
is specified via an integer vector; the size of the index space is
equal to the size of \verb|vg|, and each index $i$ is assigned to
the process $vg(i)$. The vector \verb|vg| must be identical on all
calling processes; its entries may have the ranges $(0\dots np-1)$
or $(1\dots np)$ according to the value of \verb|flag|.
\item[vl] In this case we are specifying the list of indices assigned
to the current process; thus, the global problem size $mg$ is given by
the sum of the sizes of the individual vectors \verb|vl| specified
on the calling processes. The subroutine will check that each entry
in the global index space $(1\dots mg)$ is specified exactly once.
\end{description}
\item On exit from this routine the descriptor is in the build state \item On exit from this routine the descriptor is in the build state
\end{enumerate} \end{enumerate}

@ -88,11 +88,11 @@
\include{psbrout} \include{psbrout}
\include{commrout} \include{commrout}
\include{toolsrout} \include{toolsrout}
\include{methods}
\include{precs}
\include{penv} \include{penv}
\include{error} \include{error}
\include{util}
\include{precs}
\include{methods}
\clearpage \clearpage
@ -156,7 +156,7 @@ Cambridge University Press.
\bibitem{APNUM06} \bibitem{APNUM06}
P.~D'Ambra, D.~di Serafino and S.~Filippone, P.~D'Ambra, D.~di Serafino and S.~Filippone,
On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners, On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners,
Applied Numerical Mathematics, to appear, 2006. Applied Numerical Mathematics, to appear, 2007.
% %
\bibitem{UMFPACK} \bibitem{UMFPACK}
T.A.~Davis, T.A.~Davis,

@ -0,0 +1,9 @@
\section{Utilities}
\label{sec:util}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "userguide"
%%% End:

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save