mirror of
https://github.com/sfilippone/amg4psblas.git
synced 2026-10-07 07:04:59 +00:00
mld2p4-2:
Docs updates.
This commit is contained in:
+13
-15
@@ -1,22 +1,20 @@
|
||||
\section*{Abstract}
|
||||
\addcontentsline{toc}{section}{Abstract}
|
||||
\textsc{MLD2P4 (Multi-Level Domain Decomposition Parallel Preconditioners Package based on
|
||||
PSBLAS}) is a package of parallel algebraic multi-level preconditioners.
|
||||
The first release made available various versions of
|
||||
one-level additive and multi-level additive
|
||||
and hybrid Schwarz preconditioners.
|
||||
The package has been extended to include further multi-level cycles and smoothers widely used in
|
||||
multigrid methods.
|
||||
In the multi-level case, a purely algebraic approach
|
||||
is applied to generate coarse-level corrections, so that no geometric background is needed
|
||||
concerning the matrix to be preconditioned. The matrix is assumed to be square, real
|
||||
or complex.
|
||||
\textsc{MLD2P4 (Multi-Level Domain Decomposition Parallel Preconditioners Package
|
||||
based on PSBLAS}) is a package of parallel algebraic multi-level preconditioners.
|
||||
The first release of MLD2P4 made available multi-level additive and hybrid Schwarz
|
||||
preconditioners, as well as one-level additive Schwarz preconditioners. The package
|
||||
has been extended to include further multi-level cycles and smoothers widely used in
|
||||
multigrid methods. In the multi-level case, a purely algebraic approach is applied to
|
||||
generate coarse-level corrections, so that no geometric background is needed
|
||||
concerning the matrix to be preconditioned. The matrix is assumed to be square,
|
||||
real or complex.
|
||||
|
||||
MLD2P4 has been designed to provide scalable and easy-to-use preconditioners in the
|
||||
context of the PSBLAS (Parallel Sparse Basic Linear Algebra Subprograms)
|
||||
MLD2P4 has been designed to provide scalable and easy-to-use preconditioners
|
||||
in the context of the PSBLAS (Parallel Sparse Basic Linear Algebra Subprograms)
|
||||
computational framework and can be used in conjuction with the Krylov solvers
|
||||
available in this framework. MLD2P4 enables the user to easily specify different features
|
||||
of an algebraic multi-level preconditioner, thus allowing to search
|
||||
available in this framework. MLD2P4 enables the user to easily specify different
|
||||
features of an algebraic multi-level preconditioner, thus allowing to search
|
||||
for the ``best'' preconditioner for the problem at hand.
|
||||
|
||||
The package employs object-oriented design techniques in
|
||||
|
||||
+1
-349
File diff suppressed because one or more lines are too long
+169
-229
@@ -1,229 +1,169 @@
|
||||
%\section{Bibliography\label{sec:bib}}
|
||||
\begin{thebibliography}{99}
|
||||
\addcontentsline{toc}{section}{\refname}
|
||||
\markboth{\textsc{MLD2P4 User's and Reference Guide}}
|
||||
{\textsc{References}}
|
||||
|
||||
%\let\refname\relax
|
||||
|
||||
%
|
||||
%\bibitem{PARA04FOREST}
|
||||
%G.~Bella, S.~Filippone, A.~De Maio, A., Testa, M.:
|
||||
%A Simulation Model for Forest Fires.
|
||||
%In: Dongarra, J., Madsen, K., Wasniewski, J. (eds.):
|
||||
%Proceedings of PARA~04 Workshop on State of the Art
|
||||
%in Scientific Computing. Lecture Notes in Computer Science, 3732. Berlin:
|
||||
%Springer, 2005
|
||||
%
|
||||
\bibitem{BREZINA_VANEK}
|
||||
M.~Brezina, P.~Van{\v e}k,
|
||||
{\em A Black-Box Iterative Solver Based on a Two-Level Schwarz Method},
|
||||
Computing, 63, 1999, 233--263.
|
||||
%
|
||||
\bibitem{para_04}
|
||||
A.~Buttari, P.~D'Ambra, D.~di Serafino, S.~Filippone,
|
||||
{\em Extending PSBLAS to Build Parallel Schwarz Preconditioners},
|
||||
in , J.~Dongarra, K.~Madsen, J.~Wasniewski, editors,
|
||||
Proceedings of PARA~04 Workshop on State of the Art
|
||||
in Scientific Computing, Lecture Notes in Computer Science,
|
||||
Springer, 2005, 593--602.
|
||||
%
|
||||
\bibitem{aaecc_07}
|
||||
A.~Buttari, P.~D'Ambra, D.~di~Serafino, S.~Filippone,
|
||||
{\em 2LEV-D2P4: a package of high-performance preconditioners
|
||||
for scientific and engineering applications},
|
||||
Applicable Algebra in Engineering, Communications and Computing,
|
||||
18, 3, 2007, 223--239.
|
||||
%Published online: 13 February 2007, {\tt http://dx.doi.org/10.1007/s00200-007-0035-z}
|
||||
%
|
||||
\bibitem{apnum_07} P.~D'Ambra, S.~Filippone, D.~di~Serafino,
|
||||
{\em On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners},
|
||||
Applied Numerical Mathematics, Elsevier Science,
|
||||
57, 11-12, 2007, 1181-1196.
|
||||
%published online 3 February 2007, {\tt
|
||||
% http://dx.doi.org/10.1016/j.apnum.2007.01.006}
|
||||
|
||||
%% \bibitem{DOUGLAS}
|
||||
%% R.E.~Bank and C.C.~Douglas,
|
||||
%% {\em SMMP: Sparse Matrix Multiplication Package},
|
||||
%% Advances in Computational Mathematics, 1993, 1, 127-137.
|
||||
%% (See also {\tt http://www.mgnet.org/~douglas/ccd-codes.html})
|
||||
%
|
||||
%
|
||||
%% \bibitem{CAI_SAAD}
|
||||
%% X.~C.~Cai and Y.~Saad,
|
||||
%% {\em Overlapping Domain Decomposition Algorithms for General Sparse Matrices},
|
||||
%% Numerical Linear Algebra with Applications, 3(3), pp.~221--237, 1996.
|
||||
%
|
||||
\bibitem{CAI_SARKIS}
|
||||
X.~C.~Cai, M.~Sarkis,
|
||||
{\em A Restricted Additive Schwarz Preconditioner for General Sparse Linear Systems},
|
||||
SIAM Journal on Scientific Computing, 21, 2, 1999, 792--797.
|
||||
%
|
||||
\bibitem{Cai_Widlund_92}
|
||||
X.~C.~Cai, O.~B.~Widlund,
|
||||
{\em Domain Decomposition Algorithms for Indefinite Elliptic Problems},
|
||||
SIAM Journal on Scientific and Statistical Computing, 13, 1, 1992, 243--258.
|
||||
%
|
||||
\bibitem{dd1_94}
|
||||
T.~Chan and T.~Mathew,
|
||||
{\em Domain Decomposition Algorithms},
|
||||
in A.~Iserles, editor, Acta Numerica 1994, 61--143.
|
||||
Cambridge University Press.
|
||||
%
|
||||
\bibitem{MLD2P4_TOMS}
|
||||
P.~D'Ambra, D.~di~Serafino, S.~Filippone,
|
||||
\emph{MLD2P4: a Package of Parallel Multilevel
|
||||
Algebraic Domain Decomposition Preconditioners
|
||||
in Fortran 95}, ACM Trans. Math. Softw., 37(3), 2010.
|
||||
%
|
||||
\bibitem{UMFPACK}
|
||||
T.A.~Davis,
|
||||
{\em Algorithm 832: UMFPACK - an Unsymmetric-pattern Multifrontal
|
||||
Method with a Column Pre-ordering Strategy},
|
||||
ACM Transactions on Mathematical Software, 30, 2004, 196--199.
|
||||
(See also {\tt http://www.cise.ufl.edu/~davis/})
|
||||
%
|
||||
|
||||
\bibitem{MUMPS}
|
||||
P.R.~Amestoy, C.~Ashcraft, O.~Boiteau, A.~Buttari, J.~L'Excellent, C.~Weisbecker
|
||||
{\em Improving multifrontal methods by means of block low-rank representations},
|
||||
SIAM SISC, volume 37, number 3, pages A1452-A1474.
|
||||
(See also {\tt http://mumps.enseeiht.fr})
|
||||
%
|
||||
|
||||
\bibitem{SUPERLU}
|
||||
J.W.~Demmel, S.C.~Eisenstat, J.R.~Gilbert, X.S.~Li and J.W.H.~Liu,
|
||||
A supernodal approach to sparse partial pivoting,
|
||||
SIAM Journal on Matrix Analysis and Applications, 20, 3, 1999, 720--755.
|
||||
%
|
||||
\bibitem{blas3}
|
||||
J.~J.~Dongarra, J.~Du Croz, I.~S.~Duff, S.~Hammarling,
|
||||
\emph{A set of Level 3 Basic Linear Algebra Subprograms},
|
||||
ACM Transactions on Mathematical Software, 16, 1990, 1--17.
|
||||
%
|
||||
\bibitem{blas2}
|
||||
J.~J.~Dongarra, J.~Du Croz, S.~Hammarling, R.~J.~Hanson,
|
||||
\emph{An extended set of FORTRAN Basic Linear Algebra Subprograms},
|
||||
ACM Transactions on Mathematical Software, 14, 1988, 1--17.
|
||||
%
|
||||
\bibitem{BLACS}
|
||||
J.~J.~Dongarra and R.~C.~Whaley,
|
||||
{\em A User's Guide to the BLACS v.~1.1},
|
||||
Lapack Working Note 94, Tech.\ Rep.\ UT-CS-95-281, University of
|
||||
Tennessee, March 1995 (updated May 1997).
|
||||
%
|
||||
%\bibitem{sblas_97}
|
||||
%I.~Duff, M.~Marrone, G.~Radicati and C.~Vittoli,
|
||||
%{\em Level 3 Basic Linear Algebra Subprograms for Sparse Matrices:
|
||||
%a User Level Interface},
|
||||
%ACM Transactions on Mathematical Software, 23(3), pp.~379--401, 1997.
|
||||
%
|
||||
%\bibitem{sblas_02}
|
||||
%I.~Duff, M.~Heroux and R.~Pozo,
|
||||
%{\em An Overview of the Sparse Basic Linear
|
||||
%Algebra Subprograms: the New Standard from the BLAS Technical Forum},
|
||||
%ACM Transactions on Mathematical Software, 28(2), pp.~239--267, 2002.
|
||||
%
|
||||
\bibitem{EFSTATHIOU}
|
||||
E.~Efstathiou, J.~G.~Gander,
|
||||
{\em Why Restricted Additive Schwarz Converges Faster than Additive Schwarz},
|
||||
BIT Numerical Mathematics, 43, 2003, 945--959.
|
||||
%
|
||||
\bibitem{PSBLASGUIDE}
|
||||
S.~Filippone, A.~Buttari,
|
||||
{\em PSBLAS-3.0 User's Guide. A Reference Guide for the Parallel Sparse BLAS Library}, 2012,
|
||||
available from \texttt{http://www.ce.uniroma2.it/psblas/}.
|
||||
|
||||
\bibitem{PSBLAS3}
|
||||
Salvatore Filippone and Alfredo Buttari.
|
||||
{\em {Object-Oriented Techniques for Sparse Matrix Computations in Fortran
|
||||
2003}.}
|
||||
ACM Trans. on Math Software, 38(4), 2012.
|
||||
|
||||
%
|
||||
\bibitem{psblas_00}
|
||||
S.~Filippone, M.~Colajanni,
|
||||
{\em PSBLAS: A Library for Parallel Linear Algebra
|
||||
Computation on Sparse Matrices},
|
||||
ACM Transactions on Mathematical Software, 26, 4, 2000, 527--550.
|
||||
%
|
||||
\bibitem{MPI2}
|
||||
W.~Gropp, S.~Huss-Lederman, A.~Lumsdaine, E.~Lusk, B.~Nitzberg, W.~Saphir, M.~Snir,
|
||||
{\em MPI: The Complete Reference. Volume 2 - The MPI-2 Extensions},
|
||||
MIT Press, 1998.
|
||||
%
|
||||
\bibitem{blas1}
|
||||
C.~L.~Lawson, R.~J.~Hanson, D.~Kincaid, F.~T.~Krogh,
|
||||
\emph{Basic Linear Algebra Subprograms for FORTRAN usage},
|
||||
ACM Transactions on Mathematical Software, 5, 1979, 308--323.
|
||||
%
|
||||
\bibitem{SUPERLUDIST}
|
||||
X.~S.~Li, J.~W.~Demmel, {\em SuperLU\_DIST: A Scalable Distributed-memory
|
||||
Sparse Direct Solver for Unsymmetric Linear Systems},
|
||||
ACM Transactions on Mathematical Software, 29, 2, 2003, 110--140.
|
||||
%
|
||||
%\bibitem{KIVA3PSBLAS}
|
||||
%S.~Filippone, P.~D'Ambra, M.~Colajanni,
|
||||
%{\em Using a Parallel Library of Sparse Linear Algebra in a Fluid Dynamics
|
||||
%Applications Code on Linux Clusters},
|
||||
%in G.~Joubert, A.~Murli, F.~Peters, M.~Vanneschi, editors,
|
||||
%Parallel Computing - Advances \& Current Issues,
|
||||
%pp.~441--448, Imperial College Press, 2002.
|
||||
%
|
||||
%\bibitem{METIS}
|
||||
%Karypis, G. and Kumar, V.,
|
||||
%{\em {METIS}: Unstructured Graph Partitioning and Sparse Matrix
|
||||
% Ordering System}.
|
||||
%Minneapolis, MN 55455: University of Minnesota, Department of
|
||||
% Computer Science, 1995.
|
||||
%Internet Address: {\verb|http://www.cs.umn.edu/~karypis|}.
|
||||
%\bibitem{BLAS1}
|
||||
%Lawson, C., Hanson, R., Kincaid, D. and Krogh, F.,
|
||||
% Basic {L}inear {A}lgebra {S}ubprograms for {F}ortran usage,
|
||||
%{ACM Trans. Math. Softw.} vol.~{5}, 38--329, 1979.
|
||||
%
|
||||
%\bibitem{machiels}
|
||||
%{Machiels, L. and Deville, M.}
|
||||
%{\em Fortran 90: An entry to object-oriented programming for the solution
|
||||
% of partial differential equations.}
|
||||
%{ACM Trans. Math. Softw.} vol.~{23}, 32--49.
|
||||
%\bibitem{metcalf}
|
||||
%{Metcalf, M., Reid, J. and Cohen, M.}
|
||||
%{\em Fortran 95/2003 explained.}
|
||||
%{Oxford University Press}, 2004.
|
||||
%
|
||||
\bibitem{Saad_book}
|
||||
Y.~Saad,
|
||||
\emph{Iterative methods for sparse linear systems}, 2nd edition,
|
||||
SIAM, 2003
|
||||
|
||||
\bibitem{dd2_96}
|
||||
B.~Smith, P.~Bjorstad, W.~Gropp,
|
||||
{\em Domain Decomposition: Parallel Multilevel Methods for Elliptic
|
||||
Partial Differential Equations},
|
||||
Cambridge University Press, 1996.
|
||||
%
|
||||
\bibitem{MPI1}
|
||||
M.~Snir, S.~Otto, S.~Huss-Lederman, D.~Walker, J.~Dongarra,
|
||||
{\em MPI: The Complete Reference. Volume 1 - The MPI Core}, second edition,
|
||||
MIT Press, 1998.
|
||||
%%
|
||||
\bibitem{Stuben_01}
|
||||
K.~St\"{u}ben,
|
||||
{\em An Introduction to Algebraic Multigrid},
|
||||
in A.~Sch\"{u}ller, U.~Trottenberg, C.~Oosterlee, Multigrid,
|
||||
Academic Press, 2001.
|
||||
%
|
||||
\bibitem{TUMINARO_TONG}
|
||||
R.~S.~Tuminaro, C.~Tong,
|
||||
{\em Parallel Smoothed Aggregation Multigrid: Aggregation Strategies on Massively Parallel Machines},
|
||||
in J. Donnelley, editor, Proceedings of SuperComputing 2000, Dallas, 2000.
|
||||
%
|
||||
\bibitem{VANEK_MANDEL_BREZINA}
|
||||
P.~Van{\v e}k, J.~Mandel and M.~Brezina,
|
||||
{\em Algebraic Multigrid by Smoothed Aggregation for Second and Fourth Order Elliptic Problems},
|
||||
Computing, 56, 1996, 179-196.
|
||||
%
|
||||
|
||||
\end{thebibliography}
|
||||
%\section{Bibliography\label{sec:bib}}
|
||||
\begin{thebibliography}{99}
|
||||
\addcontentsline{toc}{section}{\refname}
|
||||
\markboth{\textsc{MLD2P4 User's and Reference Guide}}
|
||||
{\textsc{References}}
|
||||
|
||||
%\let\refname\relax
|
||||
%
|
||||
\bibitem{BREZINA_VANEK}
|
||||
M.~Brezina, P.~Van{\v e}k,
|
||||
{\em A Black-Box Iterative Solver Based on a Two-Level Schwarz Method},
|
||||
Computing, 63, 1999, 233--263.
|
||||
%
|
||||
\bibitem{Briggs2000}
|
||||
W.~L.~Briggs, V.~E.~Henson, S.~F.~ McCormick,
|
||||
{\em A Multigrid Tutorial, Second Edition},
|
||||
SIAM, 2000.
|
||||
%
|
||||
\bibitem{para_04}
|
||||
A.~Buttari, P.~D'Ambra, D.~di Serafino, S.~Filippone,
|
||||
{\em Extending PSBLAS to Build Parallel Schwarz Preconditioners},
|
||||
in J.~Dongarra, K.~Madsen, J.~Wasniewski, editors,
|
||||
Proceedings of PARA~04 Workshop on State of the Art
|
||||
in Scientific Computing, Lecture Notes in Computer Science,
|
||||
Springer, 2005, 593--602.
|
||||
%
|
||||
\bibitem{aaecc_07}
|
||||
A.~Buttari, P.~D'Ambra, D.~di~Serafino, S.~Filippone,
|
||||
{\em 2LEV-D2P4: a package of high-performance preconditioners
|
||||
for scientific and engineering applications},
|
||||
Applicable Algebra in Engineering, Communications and Computing,
|
||||
18 (3) 2007, 223--239.
|
||||
%Published online: 13 February 2007, {\tt http://dx.doi.org/10.1007/s00200-007-0035-z}
|
||||
%
|
||||
\bibitem{apnum_07} P.~D'Ambra, S.~Filippone, D.~di~Serafino,
|
||||
{\em On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners},
|
||||
Applied Numerical Mathematics, Elsevier Science,
|
||||
57 (11-12), 2007, 1181-1196.
|
||||
%published online 3 February 2007, {\tt
|
||||
% http://dx.doi.org/10.1016/j.apnum.2007.01.006}
|
||||
%
|
||||
\bibitem{CAI_SARKIS}
|
||||
X.~C.~Cai, M.~Sarkis,
|
||||
{\em A Restricted Additive Schwarz Preconditioner for General Sparse Linear Systems},
|
||||
SIAM Journal on Scientific Computing, 21 (2), 1999, 792--797.
|
||||
%
|
||||
\bibitem{Cai_Widlund_92}
|
||||
X.~C.~Cai, O.~B.~Widlund,
|
||||
{\em Domain Decomposition Algorithms for Indefinite Elliptic Problems},
|
||||
SIAM Journal on Scientific and Statistical Computing, 13 (1), 1992, 243--258.
|
||||
%
|
||||
\bibitem{dd1_94}
|
||||
T.~Chan and T.~Mathew,
|
||||
{\em Domain Decomposition Algorithms},
|
||||
in A.~Iserles, editor, Acta Numerica 1994, 61--143.
|
||||
Cambridge University Press.
|
||||
%
|
||||
\bibitem{MLD2P4_TOMS}
|
||||
P.~D'Ambra, D.~di~Serafino, S.~Filippone,
|
||||
\emph{MLD2P4: a Package of Parallel Multilevel
|
||||
Algebraic Domain Decomposition Preconditioners
|
||||
in Fortran 95}, ACM Trans. Math. Softw., 37(3), 2010, art. 30.
|
||||
%
|
||||
\bibitem{UMFPACK}
|
||||
T.A.~Davis,
|
||||
{\em Algorithm 832: UMFPACK - an Unsymmetric-pattern Multifrontal
|
||||
Method with a Column Pre-ordering Strategy},
|
||||
ACM Transactions on Mathematical Software, 30, 2004, 196--199.
|
||||
(See also {\tt http://www.cise.ufl.edu/~davis/})
|
||||
%
|
||||
\bibitem{MUMPS}
|
||||
P.R.~Amestoy, C.~Ashcraft, O.~Boiteau, A.~Buttari, J.~L'Excellent, C.~Weisbecker
|
||||
{\em Improving multifrontal methods by means of block low-rank representations},
|
||||
SIAM Journal on Scientific Computing, volume 37 (3), 2015, A1452--A1474.
|
||||
See also {\tt http://mumps.enseeiht.fr}.
|
||||
%
|
||||
\bibitem{SUPERLU}
|
||||
J.W.~Demmel, S.C.~Eisenstat, J.R.~Gilbert, X.S.~Li and J.W.H.~Liu,
|
||||
A supernodal approach to sparse partial pivoting,
|
||||
SIAM Journal on Matrix Analysis and Applications, 20 (3), 1999, 720--755.
|
||||
%
|
||||
\bibitem{blas3}
|
||||
J.~J.~Dongarra, J.~Du Croz, I.~S.~Duff, S.~Hammarling,
|
||||
\emph{A set of Level 3 Basic Linear Algebra Subprograms},
|
||||
ACM Transactions on Mathematical Software, 16 (1) 1990, 1--17.
|
||||
%
|
||||
\bibitem{blas2}
|
||||
J.~J.~Dongarra, J.~Du Croz, S.~Hammarling, R.~J.~Hanson,
|
||||
\emph{An extended set of FORTRAN Basic Linear Algebra Subprograms},
|
||||
ACM Transactions on Mathematical Software, 14 (1) 1988, 1--17.
|
||||
%
|
||||
\bibitem{BLACS}
|
||||
J.~J.~Dongarra and R.~C.~Whaley,
|
||||
{\em A User's Guide to the BLACS v.~1.1},
|
||||
Lapack Working Note 94, Tech.\ Rep.\ UT-CS-95-281, University of
|
||||
Tennessee, March 1995 (updated May 1997).
|
||||
%
|
||||
\bibitem{EFSTATHIOU}
|
||||
E.~Efstathiou, J.~G.~Gander,
|
||||
{\em Why Restricted Additive Schwarz Converges Faster than Additive Schwarz},
|
||||
BIT Numerical Mathematics, 43 (5), 2003, 945--959.
|
||||
%
|
||||
\bibitem{PSBLASGUIDE}
|
||||
S.~Filippone, A.~Buttari,
|
||||
{\em PSBLAS-3.0 User's Guide. A Reference Guide for the Parallel Sparse BLAS Library}, 2012,
|
||||
available from \texttt{http://www.ce.uniroma2.it/psblas/}.
|
||||
%
|
||||
\bibitem{PSBLAS3}
|
||||
Salvatore Filippone and Alfredo Buttari.
|
||||
{\em Object-Oriented Techniques for Sparse Matrix Computations in Fortran 2003}.
|
||||
ACM Transactions on on Mathematical Software, 38 (4), 2012, art. 23.
|
||||
%
|
||||
\bibitem{psblas_00}
|
||||
S.~Filippone, M.~Colajanni,
|
||||
{\em PSBLAS: A Library for Parallel Linear Algebra
|
||||
Computation on Sparse Matrices},
|
||||
ACM Transactions on Mathematical Software, 26 (4), 2000, 527--550.
|
||||
%
|
||||
\bibitem{MPI2}
|
||||
W.~Gropp, S.~Huss-Lederman, A.~Lumsdaine, E.~Lusk, B.~Nitzberg, W.~Saphir, M.~Snir,
|
||||
{\em MPI: The Complete Reference. Volume 2 - The MPI-2 Extensions},
|
||||
MIT Press, 1998.
|
||||
%
|
||||
\bibitem{blas1}
|
||||
C.~L.~Lawson, R.~J.~Hanson, D.~Kincaid, F.~T.~Krogh,
|
||||
\emph{Basic Linear Algebra Subprograms for FORTRAN usage},
|
||||
ACM Transactions on Mathematical Software, 5 (3), 1979, 308--323.
|
||||
%
|
||||
\bibitem{SUPERLUDIST}
|
||||
X.~S.~Li, J.~W.~Demmel, {\em SuperLU\_DIST: A Scalable Distributed-memory
|
||||
Sparse Direct Solver for Unsymmetric Linear Systems},
|
||||
ACM Transactions on Mathematical Software, 29 (2), 2003, 110--140.
|
||||
%
|
||||
\bibitem{Notay2008}
|
||||
Y.~Notay, P.~S.~Vassilevski, {\em Recursive Krylov-based multigrid cycles},
|
||||
Numerical Linear Algebra with Applications, 15 (5), 2008, 473--487.
|
||||
%
|
||||
\bibitem{Saad_book}
|
||||
Y.~Saad,
|
||||
{\em Iterative methods for sparse linear systems}, 2nd edition, SIAM, 2003.
|
||||
%
|
||||
\bibitem{dd2_96}
|
||||
B.~Smith, P.~Bjorstad, W.~Gropp,
|
||||
{\em Domain Decomposition: Parallel Multilevel Methods for Elliptic
|
||||
Partial Differential Equations},
|
||||
Cambridge University Press, 1996.
|
||||
%
|
||||
\bibitem{MPI1}
|
||||
M.~Snir, S.~Otto, S.~Huss-Lederman, D.~Walker, J.~Dongarra,
|
||||
{\em MPI: The Complete Reference. Volume 1 - The MPI Core}, second edition,
|
||||
MIT Press, 1998.
|
||||
%%
|
||||
\bibitem{Stuben_01}
|
||||
K.~St\"{u}ben,
|
||||
{\em An Introduction to Algebraic Multigrid},
|
||||
in A.~Sch\"{u}ller, U.~Trottenberg, C.~Oosterlee, Multigrid,
|
||||
Academic Press, 2001.
|
||||
%
|
||||
\bibitem{TUMINARO_TONG}
|
||||
R.~S.~Tuminaro, C.~Tong,
|
||||
{\em Parallel Smoothed Aggregation Multigrid: Aggregation Strategies on Massively Parallel Machines}, in J. Donnelley, editor, Proceedings of SuperComputing 2000, Dallas, 2000.
|
||||
%
|
||||
\bibitem{VANEK_MANDEL_BREZINA}
|
||||
P.~Van{\v e}k, J.~Mandel and M.~Brezina,
|
||||
{\em Algebraic Multigrid by Smoothed Aggregation for Second and Fourth Order Elliptic Problems},
|
||||
Computing, 56 (3) 1996, 179--196.
|
||||
%
|
||||
|
||||
\end{thebibliography}
|
||||
|
||||
+66
-37
@@ -2,7 +2,7 @@
|
||||
\markboth{\textsc{MLD2P4 User's and Reference Guide}}
|
||||
{\textsc{\ref{sec:building} Configuring and Building MLD2P4}}
|
||||
In order to build MLD2P4 it is necessary to set up a Makefile with appropriate
|
||||
values for your system; this is done by means of the \verb|configure|
|
||||
system-dependent variables; this is done by means of the \verb|configure|
|
||||
script. The distribution also includes the autoconf and automake
|
||||
sources employed to generate the script, but usually this is not needed
|
||||
to build the software.
|
||||
@@ -24,7 +24,7 @@ The following base libraries are needed:
|
||||
\item[BLAS] \cite{blas3,blas2,blas1} Many vendors provide optimized versions
|
||||
of BLAS; if no vendor version is
|
||||
available for a given platform, the ATLAS software
|
||||
(\url{math-atlas.sourceforge.net/})
|
||||
(\url{math-atlas.sourceforge.net})
|
||||
may be employed. The reference BLAS from Netlib
|
||||
(\url{www.netlib.org/blas}) are meant to define the standard
|
||||
behaviour of the BLAS interface, so they are not optimized for any
|
||||
@@ -35,14 +35,14 @@ The following base libraries are needed:
|
||||
libraries. Note that UMFPACK requires a full LAPACK library; our
|
||||
experience is that configuring ATLAS for building full LAPACK does not
|
||||
work in the correct way. Our advice is first to download the LAPACK tarfile from
|
||||
\url{www.netlib.org/lapac} and install it independently of ATLAS. In this case,
|
||||
\url{www.netlib.org/lapack} and install it independently of ATLAS. In this case,
|
||||
you need to modify the OPTS and NOOPT definitions for including -fPIC compilation option
|
||||
in the make.inc file of the LAPACK library.
|
||||
\item[MPI] \cite{MPI2,MPI1} A version of MPI is available on most
|
||||
high-performance computing systems.
|
||||
\item[PSBLAS] \cite{PSBLASGUIDE,psblas_00} Parallel Sparse BLAS (PSBLAS) is
|
||||
available from \url{www.ce.uniroma2.it/psblas}; version
|
||||
3.4.0 (or later) is required. Indeed, all the prerequisites
|
||||
3.5.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
|
||||
@@ -50,7 +50,7 @@ interfaces compatible with MLD2P4;
|
||||
usually this means that they should all be built with the same
|
||||
compiler as MLD2P4.
|
||||
|
||||
\subsection{Optional third party libraries}
|
||||
\subsection{Optional third party libraries\label{sec:third_party}}
|
||||
|
||||
We provide interfaces to the following third-party software libraries;
|
||||
note that these are optional, but if you enable them some defaults
|
||||
@@ -61,11 +61,11 @@ for multi-level preconditioners may change to reflect their presence.
|
||||
A sparse LU factorization package included in the SuiteSparse library, available from
|
||||
\url{faculty.cse.tamu.edu/davis/suitesparse.html};
|
||||
it provides sequential factorization and triangular system solution for double
|
||||
precision real and complex data. We tested
|
||||
version 4.5.4. Note that for configuring SuiteSparse you should provide the right
|
||||
path to the BLAS and LAPACK libraries in the \verb|SuiteSparse_config/SuiteSparse_config.mk| file.
|
||||
precision real and complex data. We tested version 4.5.4 of SuiteSparse.
|
||||
Note that for configuring SuiteSparse you should provide the right path to the BLAS
|
||||
and LAPACK libraries in the \verb|SuiteSparse_config/SuiteSparse_config.mk| file.
|
||||
\item[MUMPS] \cite{MUMPS}
|
||||
A sparse LU factorization package available from \url{mumps.enseeiht.fr/};
|
||||
A sparse LU factorization package available from \url{mumps.enseeiht.fr};
|
||||
it provides sequential and parallel factorizations and triangular system solution
|
||||
for single and double precision, real and complex data.
|
||||
We tested versions 4.10.0 and version 5.0.1.
|
||||
@@ -74,25 +74,24 @@ path to the BLAS and LAPACK libraries in the \verb|SuiteSparse_config/SuiteSpars
|
||||
\url{crd.lbl.gov/~xiaoye/SuperLU/}; it provides sequential
|
||||
factorization and triangular system solution for single and double precision,
|
||||
real and complex data. We tested version 4.3 and 5.0. If you installed BLAS from
|
||||
ATLAS, remember to define the BLASLIB variable in the make.inc file.
|
||||
ATLAS, remember to define the BLASLIB variable in the make.inc file.
|
||||
\item[SuperLU\_Dist] \cite{SUPERLUDIST}
|
||||
A sparse LU factorization package available
|
||||
from the same site as SuperLU; it provides parallel factorization and
|
||||
triangular system solution for double precision real and complex data.
|
||||
We tested version 3.3 and 4.2. If you installed BLAS from
|
||||
ATLAS, remember to define the BLASLIB variable in the make.inc file and
|
||||
to add the \verb|-std=c99| option to the C compiler options.
|
||||
Note that this library requires the ParMETIS
|
||||
library for parallel graph partitioning and fill-reducing matrix ordering available from
|
||||
\url{glaros.dtc.umn.edu/gkhome/metis/parmetis/overview}.
|
||||
|
||||
ATLAS, remember to define the BLASLIB variable in the make.inc file and
|
||||
to add the \verb|-std=c99| option to the C compiler options.
|
||||
Note that this library requires the ParMETIS
|
||||
library for parallel graph partitioning and fill-reducing matrix ordering, available from
|
||||
\url{glaros.dtc.umn.edu/gkhome/metis/parmetis/overview}.
|
||||
\end{description}
|
||||
|
||||
\subsection{Configuration options}
|
||||
|
||||
{\bf CONTROLLARE HELP DEL CONFIGURE: Versione MLD2P4, Versione PSBLAS, Influential Environmental Variables???}
|
||||
|
||||
To build MLD2P4 the first step is to use the \verb|configure| script
|
||||
in the main directory to generate the necessary makefile(s).
|
||||
In order to build MLD2P4, the first step is to use the \verb|configure| script
|
||||
in the main directory to generate the necessary makefile.
|
||||
%\textbf{Sono necessarie le parentesi intorno a s?}
|
||||
|
||||
As a minimal example consider the following:
|
||||
\begin{verbatim}
|
||||
@@ -105,7 +104,7 @@ be specified with an {\em absolute} path).
|
||||
The full set of options may be looked at by issuing the command
|
||||
\verb|./configure --help|, which produces:
|
||||
\begin{verbatim}
|
||||
`configure' configures MLD2P4 2.0 to adapt to many kinds of systems.
|
||||
`configure' configures MLD2P4 2.1 to adapt to many kinds of systems.
|
||||
|
||||
Usage: ./configure [OPTION]... [VAR=VALUE]...
|
||||
|
||||
@@ -159,27 +158,55 @@ Fine tuning of the installation directories:
|
||||
--pdfdir=DIR pdf documentation [DOCDIR]
|
||||
--psdir=DIR ps documentation [DOCDIR]
|
||||
|
||||
Program names:
|
||||
--program-prefix=PREFIX prepend PREFIX to installed program names
|
||||
--program-suffix=SUFFIX append SUFFIX to installed program names
|
||||
--program-transform-name=PROGRAM run sed PROGRAM on installed program names
|
||||
|
||||
Optional Features:
|
||||
--disable-option-checking ignore unrecognized --enable/--with options
|
||||
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
|
||||
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
|
||||
--disable-dependency-tracking speeds up one-time build
|
||||
--enable-dependency-tracking do not reject slow dependency extractors
|
||||
--enable-serial Specify whether to enable a fake mpi library to run
|
||||
in serial mode.
|
||||
--enable-long-integers Specify usage of 64 bits integers.
|
||||
|
||||
Optional Packages:
|
||||
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
||||
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
|
||||
--with-psblas=DIR The install directory for PSBLAS, for example,
|
||||
--with-psblas=/opt/packages/psblas-3.3
|
||||
--with-psblas=/opt/packages/psblas-3.5
|
||||
--with-psblas-incdir=DIR
|
||||
Specify the directory for PSBLAS includes.
|
||||
--with-psblas-libdir=DIR
|
||||
Specify the directory for PSBLAS library.
|
||||
--with-ccopt additional CCOPT flags to be added: will prepend
|
||||
to CCOPT
|
||||
--with-fcopt additional FCOPT flags to be added: will prepend
|
||||
to FCOPT
|
||||
--with-libs List additional link flags here. For example,
|
||||
--with-libs=-lspecial_system_lib or
|
||||
--with-libs=-L/path/to/libs
|
||||
--with-clibs additional CLIBS flags to be added: will prepend
|
||||
to CLIBS
|
||||
--with-flibs additional FLIBS flags to be added: will prepend
|
||||
to FLIBS
|
||||
--with-library-path additional LIBRARYPATH flags to be added: will
|
||||
prepend to LIBRARYPATH
|
||||
--with-include-path additional INCLUDEPATH flags to be added: will
|
||||
prepend to INCLUDEPATH
|
||||
--with-module-path additional MODULE_PATH flags to be added: will
|
||||
prepend to MODULE_PATH
|
||||
--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-blas=<lib> use BLAS library <lib>
|
||||
--with-blasdir=<dir> search for BLAS library in <dir>
|
||||
--with-lapack=<lib> use LAPACK library <lib>
|
||||
--with-mumps=LIBNAME Specify the libname for MUMPS. Default: autodetect
|
||||
with minimum "-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
|
||||
@@ -225,24 +252,22 @@ Some influential environment variables:
|
||||
CFLAGS C compiler flags
|
||||
CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
|
||||
you have headers in a nonstandard directory <include dir>
|
||||
CPP C preprocessor
|
||||
MPICC MPI C compiler command
|
||||
F77 Fortran 77 compiler command
|
||||
FFLAGS Fortran 77 compiler flags
|
||||
MPIF77 MPI Fortran 77 compiler command
|
||||
MPIFC MPI Fortran compiler command
|
||||
CPP C preprocessor
|
||||
|
||||
Use these variables to override the choices made by `configure' or to help
|
||||
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.4 under the
|
||||
|
||||
For instance, if a user has built and installed PSBLAS 3.5 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.4/ \
|
||||
./configure --with-psblas=/opt/psblas-3.5/ \
|
||||
--with-umfpackincdir=/usr/include/suitesparse/
|
||||
\end{verbatim}
|
||||
Once the configure script has completed execution, it will have
|
||||
@@ -253,7 +278,9 @@ install directory under the name \verb|Make.inc.MLD2P4|.
|
||||
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| \verb|-lzmumps -lzmumps -mumps_common -lpord|.
|
||||
\verb|-ldmumps -lsmumps| \verb|-lzmumps -mumps_common -lpord|.
|
||||
\textbf{Pasqua, c'era due volte lzmumps. L'ho eliminato, ma poi mi e' venuto
|
||||
il dubbio che il secondo lzmumps dovesse essere modificato.}
|
||||
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.
|
||||
@@ -267,7 +294,7 @@ followed (optionally) by
|
||||
make install
|
||||
\end{verbatim}
|
||||
\subsection{Bug reporting}
|
||||
If you find any bugs in our codes, please let us know at (DECIDERE A CHI FARE IL BUG REPORTING)
|
||||
If you find any bugs in our codes, please let us know at
|
||||
\begin{rawhtml}
|
||||
<a href="mailto:bugreport@mld2p4.it">
|
||||
\end{rawhtml}
|
||||
@@ -277,7 +304,8 @@ If you find any bugs in our codes, please let us know at (DECIDERE A CHI FARE IL
|
||||
\end{rawhtml}
|
||||
; be aware that
|
||||
the amount of information needed to reproduce a problem in a parallel
|
||||
program may vary quite a lot.
|
||||
program may vary quite a lot. \textbf{A chi va fatto il bug reporting? La
|
||||
mail inviata a questo indirizzo non viene mai letta.}
|
||||
\subsection{Example and test programs\label{sec:ex_and_test}}
|
||||
The package contains the \verb|examples| and \verb|tests| directories;
|
||||
both of them are further divided into \verb|fileread| and
|
||||
@@ -286,13 +314,14 @@ both of them are further divided into \verb|fileread| and
|
||||
\item[\tt examples] contains a set of simple example programs with a
|
||||
predefined choice of preconditioners, selectable via integer
|
||||
values. These are intended to get an acquaintance with the
|
||||
multilevel preconditioners.
|
||||
multi-level preconditioners available in MLD2P4.
|
||||
\item[\tt tests] contains a set of more sophisticated examples that
|
||||
will allow the user, via the input files in the \verb|runs|
|
||||
subdirectories, to experiment with the full range of preconditioners
|
||||
implemented in the library.
|
||||
implemented in the package.
|
||||
\end{description}
|
||||
The \verb|fileread| directories contain sample programs that read
|
||||
sparse matrices from files, according to the Matrix Market or the
|
||||
Harwell-Boeing storage format; the \verb|pdegen| instead generate
|
||||
matrices in full parallel mode from the discretization of a sample PDE.
|
||||
Harwell-Boeing storage format; the \verb|pdegen| programs generate
|
||||
matrices in full parallel mode from the discretization of a sample partial
|
||||
differential equation.
|
||||
|
||||
@@ -41,9 +41,9 @@ The following steps are required:
|
||||
is multi-level, then two steps must be performed, as specified next.
|
||||
\begin{enumerate}
|
||||
\item[4.1] \emph{Build the aggregation hierarchy for a given matrix.} This is
|
||||
performed by the routine \verb|hierarchy_bld|.
|
||||
performed by the routine \verb|hierarchy_build|.
|
||||
\item[4.2] \emph{Build the preconditioner for a given matrix.} This is performed
|
||||
by the routine \verb|smoothers_bld|.
|
||||
by the routine \verb|smoothers_build|.
|
||||
\end{enumerate}
|
||||
If the selected preconditioner is one-level, it is built in a single step,
|
||||
performed by the routine \verb|bld|.
|
||||
@@ -118,7 +118,7 @@ on parallel computers.
|
||||
The code reported in Figure~\ref{fig:ex1} shows how to set and apply the default
|
||||
multi-level preconditioner available in the real double precision version
|
||||
of MLD2P4 (see Table~\ref{tab:precinit}). This preconditioner is chosen
|
||||
by simply specifying \verb|'ML'| as second argument of \verb|P%init|
|
||||
by simply specifying \verb|'ML'| as the second argument of \verb|P%init|
|
||||
(a call to \verb|P%set| is not needed) and is applied with the CG
|
||||
solver provided by PSBLAS (the matrix of the system to be solved is
|
||||
assumed to be positive definite). As previously observed, the modules
|
||||
@@ -179,8 +179,8 @@ the corresponding codes are available in \verb|examples/fileread/|.
|
||||
call P%init(P,'ML',info)
|
||||
!
|
||||
! build the preconditioner
|
||||
call P%hierarchy_bld(A,desc_A,P,info)
|
||||
call P%smoothers_bld(A,desc_A,P,info)
|
||||
call P%hierarchy_build(A,desc_A,P,info)
|
||||
call P%smoothers_build(A,desc_A,P,info)
|
||||
|
||||
!
|
||||
! set the solver parameters and the initial guess
|
||||
@@ -264,8 +264,8 @@ boundary conditions are also available in the directory \verb|examples/pdegen|.
|
||||
call_P%set(P,'SMOOTHER_TYPE','BJAC',info)
|
||||
call P%set(P,'COARSE_SOLVE','BJAC',info)
|
||||
call P%set(P,'COARSE_SWEEPS',8,info)
|
||||
call P%hierarchy_bld(A,desc_A,P,info)
|
||||
call P%smoothers_bld(A,desc_A,P,info)
|
||||
call P%hierarchy_build(A,desc_A,P,info)
|
||||
call P%smoothers_build(A,desc_A,P,info)
|
||||
... ...
|
||||
\end{verbatim}
|
||||
}
|
||||
@@ -291,8 +291,8 @@ boundary conditions are also available in the directory \verb|examples/pdegen|.
|
||||
call P%set('SMOOTHER_SWEEPS',2,info,pos='POST')
|
||||
call P%set('COARSE_SOLVE','MUMPS',info)
|
||||
call P%set('COARSE_MAT','DIST',info)
|
||||
call P%hierarchy_bld(A,desc_A,P,info)
|
||||
call P%smoothers_bld(A,desc_A,P,info)
|
||||
call P%hierarchy_build(A,desc_A,P,info)
|
||||
call P%smoothers_build(A,desc_A,P,info)
|
||||
... ...
|
||||
! solve Ax=b with preconditioned CG
|
||||
call psb_krylov('BICGSTAB',A,P,b,x,tol,desc_A,info)
|
||||
|
||||
@@ -13,13 +13,12 @@ terms: {\small
|
||||
|
||||
(C) Copyright 2008, 2010, 2012, 2017
|
||||
|
||||
Salvatore Filippone Cranfield University
|
||||
Ambra Abdullahi Hassan University of Rome Tor Vergata
|
||||
Alfredo Buttari CNRS-IRIT, Toulouse
|
||||
Pasqua D'Ambra ICAR-CNR, Naples
|
||||
Daniela di Serafino Second University of Naples
|
||||
Salvatore Filippone Cranfield University, Cranfield, UK
|
||||
Ambra Abdullahi Hassan University of Rome Tor Vergata, Rome, IT
|
||||
Alfredo Buttari CNRS-IRIT, Toulouse, FR
|
||||
Pasqua D'Ambra IAC-CNR, Naples, IT
|
||||
Daniela di Serafino University of Campania L. Vanvitelli, Caserta, IT
|
||||
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
+61
-50
@@ -3,10 +3,9 @@
|
||||
{\textsc{\ref{sec:overview} General Overview}}
|
||||
|
||||
The \textsc{Multi-Level Domain Decomposition Parallel Preconditioners Package based on
|
||||
PSBLAS (MLD2P4}) provides parallel Algebraic MultiGrid (AMG) and domain decomposition
|
||||
preconditioners, designed to provide scalable and easy-to-use preconditioners
|
||||
multi-level Schwarz preconditioners~\cite{Stuben_01,dd2_96},
|
||||
to be used in the iterative solutions of sparse linear systems:
|
||||
PSBLAS (MLD2P4}) provides parallel Algebraic MultiGrid (AMG) and Domain
|
||||
Decomposition preconditioners (see, e.g., \cite{Briggs2000,Stuben_01,dd2_96}),
|
||||
to be used in the iterative solution of linear systems,
|
||||
\begin{equation}
|
||||
Ax=b,
|
||||
\label{system1}
|
||||
@@ -17,22 +16,34 @@ where $A$ is a square, real or complex, sparse matrix.
|
||||
%Dovremmo implementare uno smoothed prolongator
|
||||
%adeguato e fare qualcosa di consistente anche con 1-lev Schwarz.}
|
||||
%
|
||||
Multi-level preconditioners can be obtained by combining several AMG cycles (V, W, K) with
|
||||
different smoothers (Jacobi, hybrid forward/backward Gauss-Seidel, block-Jacobi, additive Schwarz methods).
|
||||
An algebraic approach is used to
|
||||
generate a hierarchy of coarse-level matrices and operators, without
|
||||
explicitly using any information on the geometry of the original problem, e.g.,
|
||||
the discretization of a PDE. The smoothed aggregation technique is applied
|
||||
as algebraic coarsening strategy~\cite{BREZINA_VANEK,VANEK_MANDEL_BREZINA}.
|
||||
Either exact or approximate solvers are available to solve the coarsest-level system. Specifically,
|
||||
different versions of sparse LU factorizations from external packages, and native incomplete
|
||||
LU factorizations and iterative block-Jacobi solvers can be used.
|
||||
All smoothers can be also exploited as one-level preconditioners.
|
||||
The name of the package comes from its original implementation, containing
|
||||
multi-level additive and hybrid Schwarz preconditioners, as well as one-level additive
|
||||
Schwarz preconditioners. The current version extends the original plan by including
|
||||
multi-level cycles and smoothers widely used in multigrid methods.
|
||||
|
||||
The multi-level preconditioners implemented in MLD2P4 are obtained by combining
|
||||
AMG cycles with smoothers and coarsest-level solvers. The V-, W-, and
|
||||
K-cycles~\cite{Briggs2000,Notay2008} are available, which allow to define
|
||||
almost all the preconditioners in the package, including the multi-level hybrid
|
||||
Schwarz ones; a specific cycle is implemented to obained multi-level additive
|
||||
Schwarz preconditioners. The Jacobi, hybrid
|
||||
%\footnote{see Note 2 in Table~\ref{tab:p_coarse}, p.~28.}
|
||||
forward/backward Gauss-Seidel, block-Jacobi, and additive Schwarz methods
|
||||
are available as smoothers. An algebraic approach is used to generate a hierarchy of
|
||||
coarse-level matrices and operators, without explicitly using any information on the
|
||||
geometry of the original problem, e.g., the discretization of a PDE. To this end,
|
||||
the smoothed aggregation technique~\cite{BREZINA_VANEK,VANEK_MANDEL_BREZINA}
|
||||
is applied. Either exact or approximate solvers can be used on the coarsest-level
|
||||
system. Specifically, different sparse LU factorizations from external
|
||||
packages, and native incomplete LU factorizations and Jacobi, hybrid Gauss-Seidel,
|
||||
and block-Jacobi solvers are available. All smoothers can be also exploited as one-level
|
||||
preconditioners.
|
||||
|
||||
MLD2P4 is written in Fortran~2003, following an
|
||||
object-oriented design through the exploitation of features
|
||||
such as abstract data type creation, functional overloading, and
|
||||
dynamic memory management.
|
||||
such as abstract data type creation, type extension, functional overloading, and
|
||||
dynamic memory management. % \textbf{Va bene cos\'{i} o \`e meglio
|
||||
% fare riferimento alle classi?}
|
||||
The parallel implementation is based on a Single Program Multiple Data
|
||||
(SPMD) paradigm. Single and
|
||||
double precision implementations of MLD2P4 are available for both the
|
||||
@@ -40,53 +51,53 @@ real and the complex case, which can be used through a single
|
||||
interface.
|
||||
|
||||
MLD2P4 has been designed to implement scalable and easy-to-use
|
||||
multilevel preconditioners in the context of the PSBLAS
|
||||
(Parallel Sparse BLAS) computational framework~\cite{psblas_00,PSBLAS3}.
|
||||
PSBLAS provides basic linear algebra
|
||||
multilevel preconditioners in the context of the PSBLAS (Parallel Sparse BLAS)
|
||||
computational framework~\cite{psblas_00,PSBLAS3}. PSBLAS provides basic linear algebra
|
||||
operators and data management facilities for distributed sparse matrices,
|
||||
as well as parallel Krylov solvers which can be coupled with the MLD2P4 preconditioners.
|
||||
as well as parallel Krylov solvers which can be used with the MLD2P4 preconditioners.
|
||||
The choice of PSBLAS has been mainly motivated by the need of having
|
||||
a portable and efficient software infrastructure implementing ``de facto'' standard
|
||||
parallel sparse linear algebra kernels, to pursue goals such as performance,
|
||||
portability, modularity ed extensibility in the development of the preconditioner
|
||||
package. On the other hand, the implementation of MLD2P4 has led to some
|
||||
revisions and extentions of the original PSBLAS kernels.
|
||||
The inter-process comunication required
|
||||
by MLD2P4 is encapsulated into the PSBLAS routines, except few cases where
|
||||
MPI~\cite{MPI1} is explicitly called \textbf{\'E ancora cosi???}. Therefore, MLD2P4 can be run on any parallel
|
||||
machine where PSBLAS and MPI implementations are available.
|
||||
The inter-process comunication required by MLD2P4 is encapsulated
|
||||
in the PSBLAS routines;% , except few cases where MPI~\cite{MPI1} is explicitly called.
|
||||
% \textbf{E' ancora cos\'{i} o adesso \`e tutto incapsulato in PSBLAS?}
|
||||
therefore, MLD2P4 can be run on any parallel machine where PSBLAS
|
||||
implementations are available.
|
||||
|
||||
MLD2P4 has a layered and modular software architecture where three main layers can be identified.
|
||||
The lower layer consists of the PSBLAS kernels, the middle one implements
|
||||
MLD2P4 has a layered and modular software architecture where three main layers can be
|
||||
identified. The lower layer consists of the PSBLAS kernels, the middle one implements
|
||||
the construction and application phases of the preconditioners, and the upper one
|
||||
provides a uniform interface to all the preconditioners.
|
||||
This architecture allows for different levels of use of the package:
|
||||
few black-box routines at the upper layer allow non-expert users to easily
|
||||
build any preconditioner available in MLD2P4 and to apply it within a PSBLAS Krylov solver;
|
||||
{\bf facilities are also available that allow more expert users to extend the set of smoothers
|
||||
and solvers for building new versions of preconditioners.}
|
||||
few black-box routines at the upper layer allow all users to easily
|
||||
build and apply any preconditioner available in MLD2P4;
|
||||
facilities are also available allowing expert users to extend the set of smoothers
|
||||
and solvers for building new versions of the preconditioners (see
|
||||
Section~\ref{sec:adding}).
|
||||
|
||||
We note that the user interface of MLD2P4 2.1 ({\bf Perche 2.1 e non 2.0???...Ricordarsi di cambiare il configure})
|
||||
has been extended with respect to the previous versions
|
||||
in order to separate the construction
|
||||
of the multi-level hierarchy from the construction of the smoothers and solvers, and to allow for more flexibility
|
||||
at each level.
|
||||
The software architecture described in~\cite{MLD2P4_TOMS} has significantly evolved too, in order to fully exploit the
|
||||
Fortran~2003 features implemented in PSBLAS 3.
|
||||
We note that the user interface of MLD2P4 2.1 has been extended with respect to the
|
||||
previous versions in order to separate the construction of the multi-level hierarchy from
|
||||
the construction of the smoothers and solvers, and to allow for more flexibility
|
||||
at each level. The software architecture described in~\cite{MLD2P4_TOMS} has significantly
|
||||
evolved too, in order to fully exploit the Fortran~2003 features implemented in PSBLAS 3.
|
||||
However, compatibility with previous versions has been preserved.
|
||||
|
||||
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
|
||||
and installation of the package are given in Section~\ref{sec:building}. A short description of
|
||||
the preconditioners implemented in MLD2P4 is provided
|
||||
in Section~\ref{sec:background}, to help the users in choosing among them.
|
||||
The basics for building and applying the preconditioners
|
||||
with the Krylov solvers implemented in PSBLAS are reported in Section~\ref{sec:started}, where the
|
||||
Fortran codes of a few sample programs are also shown. A reference guide for
|
||||
the upper-layer routines of MLD2P4, that are the user interface, is provided
|
||||
in Section~\ref{sec:userinterface}. The error handling mechanism used by the package is briefly described
|
||||
in Section~\ref{sec:errors}. The copyright terms concerning the distribution and modification
|
||||
of MLD2P4 are reported in Appendix~\ref{sec:license}.
|
||||
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
|
||||
and installation of the package are given in Section~\ref{sec:building}. A short description
|
||||
of the preconditioners implemented in MLD2P4 is provided in Section~\ref{sec:background},
|
||||
to help the users in choosing among them. The basics for building and applying the
|
||||
preconditioners with the Krylov solvers implemented in PSBLAS are reported
|
||||
in~Section~\ref{sec:started}, where the Fortran codes of a few sample programs
|
||||
are also shown. A reference guide for the user interface routines is provided
|
||||
in Section~\ref{sec:userinterface}. Information on the extension of the package
|
||||
through the addition of new smoothers and solvers is reported in Section~\ref{sec:adding}.
|
||||
The error handling mechanism used by the package
|
||||
is briefly described in Section~\ref{sec:errors}. The copyright terms concerning the
|
||||
distribution and modification of MLD2P4 are reported in Appendix~\ref{sec:license}.
|
||||
|
||||
%%% Local Variables:
|
||||
%%% mode: latex
|
||||
|
||||
@@ -154,7 +154,6 @@ based on PSBLAS}
|
||||
\include{overview}
|
||||
\include{distribution}
|
||||
\include{building}
|
||||
|
||||
\include{background}
|
||||
\include{gettingstarted}
|
||||
\include{userinterface}
|
||||
@@ -162,7 +161,7 @@ based on PSBLAS}
|
||||
\clearpage
|
||||
\appendix
|
||||
\include{license}
|
||||
\cleardoublepage
|
||||
\clearpage
|
||||
\include{bibliography}
|
||||
|
||||
\end{document}
|
||||
|
||||
+29
-33
@@ -4,7 +4,7 @@
|
||||
|
||||
The basic user interface of MLD2P4 consists of eight routines. The six
|
||||
routines \verb|init|, \verb|set|,
|
||||
\verb|hierarchy_bld|, \verb|smoothers_bld|,
|
||||
\verb|hierarchy_build|, \verb|smoothers_build|,
|
||||
\verb|bld|, and \verb|apply| encapsulate all the
|
||||
functionalities for the setup and the application of any multi-level and one-level
|
||||
preconditioner implemented in the package.
|
||||
@@ -199,10 +199,9 @@ coarsest-level solvers, and shortcuts are available
|
||||
in this case too (see Table~\ref{tab:p_coarse}). \\
|
||||
|
||||
\textbf{Remark 3.} In general, a coarsest-level solver cannot be used with
|
||||
both the replicated and distributed coarsest-matrix layout, and vice versa;
|
||||
therefore, setting the solver after the layout may change the layout, and setting
|
||||
the layout after the solver may change the solver, if the choices of the two
|
||||
parameters do not agree.
|
||||
both the replicated and distributed coarsest-matrix layout;
|
||||
therefore, setting the solver after the layout may change the layout.
|
||||
Similarly, setting the layout after the solver may change the solver.
|
||||
|
||||
More precisely, UMFPACK and SuperLU require the coarsest-level
|
||||
matrix to be replicated, while SuperLU\_Dist requires it to be distributed.
|
||||
@@ -368,7 +367,9 @@ of levels. } \\
|
||||
& How the damping parameter $\omega$ in the
|
||||
smoothed aggregation is obtained:
|
||||
either via an estimate of the spectral radius of
|
||||
$D^{-1}A$, or explicily
|
||||
$D^{-1}A$, where $A$ is the matrix at the current
|
||||
level and $D$ is the diagonal matrix with
|
||||
the same diagonal entires as $A$, or explicily
|
||||
specified by the user. \\ \hline
|
||||
\verb|mld_aggr_eig_| \par \verb|AGGR_EIG| & \verb|character(len=*)|
|
||||
& \texttt{'A\_NORMI'}
|
||||
@@ -420,13 +421,13 @@ the parameter \texttt{ilev}.} \\
|
||||
& \texttt{'MUMPS'} \par \texttt{'UMF'} \par
|
||||
\texttt{'SLU'} \par \texttt{'SLUDIST'} \par
|
||||
\texttt{'JACOBI'} \par \texttt{'GS'} \par \texttt{'BJAC'}
|
||||
& See~Note~1
|
||||
& See~Note.
|
||||
& Solver used at the coarsest level: sequential
|
||||
LU from MUMPS, UMFPACK, or SuperLU
|
||||
(plus tri\-an\-gular solve);
|
||||
distributed LU from MUMPS or SuperLU\_Dist
|
||||
(plus triangular solve);
|
||||
point-Jacobi, hybrid Gauss-Seidel (see Note~2) or block-Jacobi. \par
|
||||
point-Jacobi, hybrid Gauss-Seidel or block-Jacobi. \par
|
||||
Note that \texttt{UMF} and \texttt{SLU} require the coarsest
|
||||
matrix to be replicated, \texttt{SLUDIST}, \texttt{JACOBI},
|
||||
\texttt{GS} and \texttt{BJAC} require it to be
|
||||
@@ -440,7 +441,7 @@ the parameter \texttt{ilev}.} \\
|
||||
\verb|mld_coarse_subsolve_| \par \verb|COARSE_SUBSOLVE| & \verb|character(len=*)|
|
||||
& \texttt{'ILU'} \par \texttt{'ILUT'} \par \texttt{'MILU'} \par
|
||||
\texttt{'MUMPS'} \par \texttt{'SLU'} \par \texttt{'UMF'}
|
||||
& See~Note~1
|
||||
& See~Note.
|
||||
& Solver for the diagonal blocks of the coarse matrix,
|
||||
in case the block Jacobi solver
|
||||
is chosen as coarsest-level solver: ILU($p$), ILU($p,t$),
|
||||
@@ -449,7 +450,7 @@ the parameter \texttt{ilev}.} \\
|
||||
Note that UMFPACK and SuperLU\_Dist
|
||||
are available only in double precision. \\
|
||||
\hline
|
||||
\multicolumn{5}{|l|}{{\bfseries Note 1.} Defaults for \texttt{mld\_coarse\_solve\_} and
|
||||
\multicolumn{5}{|l|}{{\bfseries Note.} Defaults for \texttt{mld\_coarse\_solve\_} and
|
||||
\texttt{mld\_coarse\_subsolve\_} are chosen in the following order:} \\
|
||||
\multicolumn{5}{|l|}{single precision version -- \texttt{MUMPS} if installed,
|
||||
then \texttt{SLU} if installed,
|
||||
@@ -457,11 +458,6 @@ the parameter \texttt{ilev}.} \\
|
||||
\multicolumn{5}{|l|}{double precision version -- \texttt{UMF} if installed,
|
||||
then \texttt{MUMPS} if installed, then \texttt{SLU} if
|
||||
installed, \texttt{ILU} otherwise.}\\
|
||||
\multicolumn{5}{|l|}{{\bfseries Note 2.} The hybrid Gauss-Seidel method is
|
||||
between the Gauss-Seidel and Jacobi methods: at each iteration, the process-} \\
|
||||
\multicolumn{5}{|l|}{es use the most recent values of their own local variables, and the values of
|
||||
the non-local variables computed at the previ-}\\
|
||||
\multicolumn{5}{|l|}{ous iteration.}\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
@@ -512,7 +508,7 @@ level (continued).\label{tab:p_coarse_1}}
|
||||
& Type of smoother used in the multi-level preconditioner:
|
||||
point-Jacobi, hybrid (forward) Gauss-Seidel,
|
||||
hybrid backward Gauss-Seidel, block-Jacobi, and
|
||||
Additive Schwarz. See Note for details on hybrix Gauss-Seidel.\par
|
||||
Additive Schwarz. \par
|
||||
It is ignored by one-level preconditioners. \\ \hline
|
||||
\verb|mld_sub_solve_| \par \verb|SUB_SOLVE| & \verb|character(len=*)|
|
||||
& \texttt{'JACOBI'} \par
|
||||
@@ -541,11 +537,7 @@ level (continued).\label{tab:p_coarse_1}}
|
||||
\verb|mld_sub_ovr_| \par \verb|SUB_OVR| & \verb|integer|
|
||||
& Any integer \par number~$\ge 0$
|
||||
& 1
|
||||
& Number of overlap layers, for Additive Schwarz only. \\ \hline
|
||||
\multicolumn{5}{|l|}{{\bfseries Note.} The hybrid Gauss-Seidel method is
|
||||
between the Gauss-Seidel and Jacobi methods: at each iteration, the processes use the} \\
|
||||
\multicolumn{5}{|l|}{most recent values of their own local variables, and the values of
|
||||
the non-local variables computed at the previous iteration.}\\
|
||||
& Number of overlap layers, for Additive Schwarz only. \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
@@ -565,13 +557,17 @@ the non-local variables computed at the previous iteration.}\\
|
||||
& \texttt{'HALO'}
|
||||
& Type of restriction operator, for Additive Schwarz only:
|
||||
\texttt{HALO} for taking into account the overlap, \texttt{NONE}
|
||||
for neglecting it. \\ \hline
|
||||
for neglecting it. \par
|
||||
Note that \texttt{HALO} must be chosen for
|
||||
the classical Addditive Schwarz smoother and its RAS variant.\\ \hline
|
||||
\verb|mld_sub_prol_| \par \verb|SUB_PROL| & \verb|character(len=*)|
|
||||
& \texttt{'SUM'} \par \texttt{'NONE'}
|
||||
& \texttt{'NONE'}
|
||||
& Type of prolongation operator, for Additive Schwarz only:
|
||||
\texttt{SUM} for adding the contributions from the overlap, \texttt{NONE}
|
||||
for neglecting them. \\ \hline
|
||||
for neglecting them. \par
|
||||
Note that \texttt{SUM} must be chosen for the classical Additive
|
||||
Schwarz smoother, and \texttt{NONE} for its RAS variant. \\ \hline
|
||||
\verb|mld_sub_fillin_| \par \verb|SUB_FILLIN| & \verb|integer|
|
||||
& Any integer \par number~$\ge 0$
|
||||
& 0
|
||||
@@ -601,16 +597,16 @@ the non-local variables computed at the previous iteration.}\\
|
||||
|
||||
\clearpage
|
||||
|
||||
\subsection{Subroutine bld\label{sec:precbld}}
|
||||
\subsection{Subroutine build\label{sec:precbld}}
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%bld(a,desc_a,info)|\\
|
||||
\verb|call p%build(a,desc_a,info)|\\
|
||||
\end{center}
|
||||
|
||||
\noindent
|
||||
This routine builds the one-level preconditioner \verb|p| according to the requirements
|
||||
made by the user through the routines \verb|init| and \verb|set|
|
||||
(see Sections~\ref{sec:hier_bld} and~\ref{sec:smoothers_bld} for multi-level preconditioners).
|
||||
(see Sections~\ref{sec:hier_bld} and~\ref{sec:smooth_bld} for multi-level preconditioners).
|
||||
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
|
||||
@@ -643,10 +639,10 @@ In this case, the routine can be used to build multi-level preconditioners too.
|
||||
|
||||
\clearpage
|
||||
|
||||
\subsection{Subroutine hierarchy\_bld\label{sec:hier_bld}}
|
||||
\subsection{Subroutine hierarchy\_build\label{sec:hier_bld}}
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%hierarchy_bld(a,desc_a,info)|\\
|
||||
\verb|call p%hierarchy_build(a,desc_a,info)|\\
|
||||
\end{center}
|
||||
|
||||
\noindent
|
||||
@@ -676,18 +672,18 @@ single/double precision version of MLD2P4 under use.
|
||||
|
||||
\clearpage
|
||||
|
||||
\subsection{Subroutine smoothers\_bld\label{sec:smoothers_bld}}
|
||||
\subsection{Subroutine smoothers\_build\label{sec:smooth_bld}}
|
||||
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%smoothers_bld(a,desc_a,p,info)|\\
|
||||
\verb|call p%smoothers_build(a,desc_a,p,info)|\\
|
||||
\end{center}
|
||||
|
||||
\noindent
|
||||
This routine builds the smoothers and the coarsest-level solvers for the
|
||||
multi-level preconditioner \verb|p|, according to the requirements made by
|
||||
the user through the routines \verb|init| and \verb|set|, and based on the aggregation
|
||||
hierarchy produced by a previous call to \verb|hierarchy_bld|
|
||||
hierarchy produced by a previous call to \verb|hierarchy_build|
|
||||
(see Section~\ref{sec:hier_bld}).
|
||||
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
@@ -804,8 +800,8 @@ as follows:
|
||||
|
||||
\noindent
|
||||
This routine prints a description of the preconditioner \verb|p| to the standard output or
|
||||
to a file. It must be called after \verb|hierachy_bld| and \verb|smoothers_bld|,
|
||||
or \verb|bld|, have been called.
|
||||
to a file. It must be called after \verb|hierachy_build| and \verb|smoothers_build|,
|
||||
or \verb|build|, have been called.
|
||||
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
|
||||
|
||||
Reference in New Issue
Block a user