diff --git a/docs/amg4psblas_1.0-guide.pdf b/docs/amg4psblas_1.0-guide.pdf new file mode 100644 index 00000000..c745f571 Binary files /dev/null and b/docs/amg4psblas_1.0-guide.pdf differ diff --git a/docs/html/index.html b/docs/html/index.html index 876b4291..ffb1cef4 100644 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -3,8 +3,8 @@ - - + + diff --git a/docs/html/userhtml.css b/docs/html/userhtml.css index a5ede259..70c936b2 100644 --- a/docs/html/userhtml.css +++ b/docs/html/userhtml.css @@ -13,35 +13,33 @@ .cmbx-12{font-size:109%; font-weight: bold;} .cmbx-12{ font-weight: bold;} .cmbx-12{ font-weight: bold;} -.cmtt-12{font-size:109%;font-family: monospace,monospace;} -.cmtt-12{font-family: monospace,monospace;} -.cmtt-12{font-family: monospace,monospace;} +.cmtt-12{font-size:109%;font-family: monospace;} +.cmtt-12{font-family: monospace;} +.cmtt-12{font-family: monospace;} .cmcsc-10x-x-120{font-size:109%;} .cmr-8{font-size:72%;} .cmmi-12{font-size:109%;font-style: italic;} .cmmi-8{font-size:72%;font-style: italic;} .cmsy-10x-x-120{font-size:109%;} .cmsy-8{font-size:72%;} -.tctt-1200{font-size:109%;font-family: monospace,monospace;} .cmmi-10x-x-109{font-style: italic;} .cmsy-10x-x-109{} -.cmtt-10x-x-109{font-family: monospace,monospace;} -.cmtt-10x-x-109{font-family: monospace,monospace;} -.cmtt-10x-x-109{font-family: monospace,monospace;} +.cmtt-10x-x-109{font-family: monospace;} +.cmtt-10x-x-109{font-family: monospace;} +.cmtt-10x-x-109{font-family: monospace;} .cmcsc-10x-x-109{} -.cmtt-10{font-size:90%;font-family: monospace,monospace;} -.cmtt-10{font-family: monospace,monospace;} -.cmtt-10{font-family: monospace,monospace;} +.cmtt-10{font-size:90%;font-family: monospace;} +.cmtt-10{font-family: monospace;} +.cmtt-10{font-family: monospace;} .cmbx-10x-x-109{ font-weight: bold;} .cmbx-10x-x-109{ font-weight: bold;} .cmbx-10x-x-109{ font-weight: bold;} .cmcsc-10{font-size:90%;} .small-caps{font-variant: small-caps; } -p{margin-top:0;margin-bottom:0} -p.indent{text-indent:0;} -p + p{margin-top:1em;} -p + div, p + pre {margin-top:1em;} -div + p, pre + p {margin-top:1em;} +p.noindent { text-indent: 0em } +td p.noindent { text-indent: 0em; margin-top:0em; } +p.nopar { text-indent: 0em; } +p.indent{ text-indent: 1.5em } @media print {div.crosslinks {visibility:hidden;}} a img { border-top: 0; border-left: 0; border-right: 0; } center { margin-top:1em; margin-bottom:1em; } @@ -64,7 +62,7 @@ div.obeylines-v p { margin-top:0; margin-bottom:0; } td.displaylines {text-align:center; white-space:nowrap;} .centerline {text-align:center;} .rightline {text-align:right;} -pre.verbatim {font-family: monospace,monospace; text-align:left; clear:both; } +div.verbatim {font-family: monospace; white-space: nowrap; text-align:left; clear:both; } .fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } div.fbox {display:table} div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } @@ -97,16 +95,18 @@ td.td01{ padding-left:0pt; padding-right:5pt; } td.td10{ padding-left:5pt; padding-right:0pt; } td.td11{ padding-left:5pt; padding-right:5pt; } table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } -.hline hr, .cline hr{ height : 0px; margin:0px; } -.hline td, .cline td{ padding: 0; } -.hline hr, .cline hr{border:none;border-top:1px solid black;} +.hline hr, .cline hr{ height : 1px; margin:0px; } .tabbing-right {text-align:right;} +span.TEX {letter-spacing: -0.125em; } +span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;} +a span.TEX span.E {text-decoration: none; } +span.LATEX span.A{ position:relative; top:-0.5ex; left:-0.4em; font-size:85%;} +span.LATEX span.TEX{ position:relative; left: -0.4em; } div.float, div.figure {margin-left: auto; margin-right: auto;} div.float img {text-align:center;} div.figure img {text-align:center;} -.marginpar,.reversemarginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;} -.marginpar p,.reversemarginpar p{margin-top:0.4em; margin-bottom:0.4em;} -.reversemarginpar{float:left;} +.marginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;} +.marginpar p{margin-top:0.4em; margin-bottom:0.4em;} table.equation {width:100%;} .equation td{text-align:center; } td.equation { margin-top:1em; margin-bottom:1em; } @@ -150,9 +150,10 @@ div.abstract {width:100%;} .shadowbox { padding-left:3pt; padding-right:3pt; border:solid thin; border-right:solid thick; border-bottom:solid thick; } .doublebox { padding-left:3pt; padding-right:3pt; border-style:double; border:solid thick; } .rotatebox{display: inline-block;} +.figure img.graphics {margin-left:10%;} .lstlisting .label{margin-right:0.5em; } -div.lstlisting{font-family: monospace,monospace; white-space: nowrap; margin-top:0.5em; margin-bottom:0.5em; } -div.lstinputlisting{ font-family: monospace,monospace; white-space: nowrap; } +div.lstlisting{font-family: monospace; white-space: nowrap; margin-top:0.5em; margin-bottom:0.5em; } +div.lstinputlisting{ font-family: monospace; white-space: nowrap; } .lstinputlisting .label{margin-right:0.5em;} #TBL-1 colgroup{border-left: 1px solid black;border-right:1px solid black;} #TBL-1{border-collapse:collapse;} diff --git a/docs/html/userhtml.html b/docs/html/userhtml.html index 876b4291..ffb1cef4 100644 --- a/docs/html/userhtml.html +++ b/docs/html/userhtml.html @@ -3,8 +3,8 @@ - - + + diff --git a/docs/html/userhtml0x.png b/docs/html/userhtml0x.png index f004430a..96c5cb9b 100644 Binary files a/docs/html/userhtml0x.png and b/docs/html/userhtml0x.png differ diff --git a/docs/html/userhtml1x.png b/docs/html/userhtml1x.png index 20f909a7..4c10c200 100644 Binary files a/docs/html/userhtml1x.png and b/docs/html/userhtml1x.png differ diff --git a/docs/html/userhtmlli1.html b/docs/html/userhtmlli1.html index dcc83f43..08bb5dee 100644 --- a/docs/html/userhtmlli1.html +++ b/docs/html/userhtmlli1.html @@ -3,8 +3,8 @@ Abstract - - + + diff --git a/docs/html/userhtmlli2.html b/docs/html/userhtmlli2.html index 1d6a77b7..02c13fb5 100644 --- a/docs/html/userhtmlli2.html +++ b/docs/html/userhtmlli2.html @@ -3,8 +3,8 @@ Contents - - + + diff --git a/docs/html/userhtmlli3.html b/docs/html/userhtmlli3.html index e358a8db..a102ce70 100644 --- a/docs/html/userhtmlli3.html +++ b/docs/html/userhtmlli3.html @@ -3,8 +3,8 @@ Contributors - - + + diff --git a/docs/html/userhtmlli4.html b/docs/html/userhtmlli4.html index 2a339025..dba92584 100644 --- a/docs/html/userhtmlli4.html +++ b/docs/html/userhtmlli4.html @@ -3,8 +3,8 @@ Citing AMG4PSBLAS - - + + @@ -32,23 +32,24 @@ class="cmr-12">When use the library, please cite the following: -
+   
@article{DDF2021, -       author = {D’Ambra, Pasqua and Durastante, Fabio and Filippone, Salvatore}, -       title = {{{AMG Preconditioners for Linear Solvers towards Extreme Scale}}, -       journal = {arXiv e-preprints}, -       eprint = {2006.16147v3}, -       archivePrefix = {arXiv}, -       year={2021} -     } -@Misc{psctoolkit-web-page, -       author = {D’Ambra, Pasqua and Durastante, Fabio and Filippone, Salvatore}, -       title =  {{PSCToolkit} {W}eb page}, -       url =    {https://psctoolkit.github.io/}, -       howpublished = {\url{https://psctoolkit.github.io/}}, -       year = {2021} -     } -

       author = {D’Ambra, Pasqua and Durastante, Fabio and Filippone, Salvatore}, + 
       title = {{{AMG Preconditioners for Linear Solvers towards Extreme Scale}}, + 
       journal = {arXiv e-preprints}, + 
       eprint = {2006.16147v3}, + 
       archivePrefix = {arXiv}, + 
       year={2021} + 
     } + 

@Misc{psctoolkit-web-page, + 
       author = {D’Ambra, Pasqua and Durastante, Fabio and Filippone, Salvatore}, + 
       title =  {{PSCToolkit} {W}eb page}, + 
       url =    {https://psctoolkit.github.io/}, + 
       howpublished = {\url{https://psctoolkit.github.io/}}, + 
       year = {2021} + 
     } +

diff --git a/docs/html/userhtmlli5.html b/docs/html/userhtmlli5.html index d712d8cf..e7026c20 100644 --- a/docs/html/userhtmlli5.html +++ b/docs/html/userhtmlli5.html @@ -3,8 +3,8 @@ References - - + + diff --git a/docs/html/userhtmlse1.html b/docs/html/userhtmlse1.html index f0b32b47..7b3aac2e 100644 --- a/docs/html/userhtmlse1.html +++ b/docs/html/userhtmlse1.html @@ -3,8 +3,8 @@ General Overview - - + + diff --git a/docs/html/userhtmlse2.html b/docs/html/userhtmlse2.html index 03862797..02fa5af2 100644 --- a/docs/html/userhtmlse2.html +++ b/docs/html/userhtmlse2.html @@ -3,8 +3,8 @@ Code Distribution - - + + diff --git a/docs/html/userhtmlse3.html b/docs/html/userhtmlse3.html index 3184abfd..c806825f 100644 --- a/docs/html/userhtmlse3.html +++ b/docs/html/userhtmlse3.html @@ -3,8 +3,8 @@ Configuring and Building AMG4PSBLAS - - + + diff --git a/docs/html/userhtmlse4.html b/docs/html/userhtmlse4.html index 0a78b57d..c981fd8d 100644 --- a/docs/html/userhtmlse4.html +++ b/docs/html/userhtmlse4.html @@ -3,8 +3,8 @@ Getting Started - - + + @@ -243,7 +243,7 @@ class="cmcsc-10x-x-109">type e

string g

der




No preconditioner No preconditioner

NONE

Considered to use the PSBLAS Krylov solvers with no preconditioner.




Diagonal Diagonal

DIAGL1-JACOBI

Diagonal preconditioner. For any zero diagonal entry of the matrix to be preconditioned, the corresponding entry @@ -309,7 +309,7 @@ of the preconditioner is set to 1.




Gauss-Seidel Gauss-Seidel

GSL1-GS

Hybrid Gauss-Seidel (forward), that is, global block Jacobi with Gauss-Seidel as local solver.




Symmetrized Gauss-SeidelSymmetrized Gauss-Seidel

FBGSL1-FBGS

Symmetrized hybrid Gauss-Seidel, that is, forward Gauss-Seidel followed by backward Gauss-Seidel.




Block Jacobi Block Jacobi

BJACL1-BJAC

Block-Jacobi with ILU(0) on the local blocks.




Additive Schwarz Additive Schwarz

AS

Additive Schwarz (AS), with overlap 1 and ILU(0) on the local blocks.




Multilevel Multilevel

ML

V-cycle with one hybrid forward Gauss-Seidel (GS) sweep as pre-smoother and one hybrid backward diff --git a/docs/html/userhtmlse5.html b/docs/html/userhtmlse5.html index a7e1fb0e..d4546966 100644 --- a/docs/html/userhtmlse5.html +++ b/docs/html/userhtmlse5.html @@ -3,8 +3,8 @@ User Interface - - + + diff --git a/docs/html/userhtmlse6.html b/docs/html/userhtmlse6.html index 01eb6d6c..947c0d37 100644 --- a/docs/html/userhtmlse6.html +++ b/docs/html/userhtmlse6.html @@ -3,8 +3,8 @@ Adding new smoother and solver objects to AMG4PSBLAS - - + + @@ -170,33 +170,33 @@ cellspacing="0" cellpadding="0" >

smoother smoother

class(amg_x_base_smoother_type)

The user-defined new smoother to be employed in the preconditioner.

solver solver

class(amg_x_base_solver_type)

The user-defined new solver to be employed in the preconditioner.

pass it as follows: -

-  ! sparse matrix and preconditioner
-  type(psb_dspmat_type) :: a
-  type(amg_dprec_type)  :: prec
-  type(amg_d_tlu_solver_type) :: tlusv
-......
-  !
-  !  prepare the preconditioner: an ML with defaults, but with TLU solver at
-  !  intermediate levels. All other parameters are at default values.
-  !
-  call prec%init(’ML’,       info)
-  call prec%hierarchy_build(a,desc_a,info)
-  nlv = prec%get_nlevs()
-  call prec%set(tlusv,   info,ilev=1,ilmax=max(1,nlv-1))
-  call prec%smoothers_build(a,desc_a,info)
-
+

  ! sparse matrix and preconditioner + 
  type(psb_dspmat_type) :: a + 
  type(amg_dprec_type)  :: prec + 
  type(amg_d_tlu_solver_type) :: tlusv + 

...... + 
  ! + 
  !  prepare the preconditioner: an ML with defaults, but with TLU solver at + 
  !  intermediate levels. All other parameters are at default values. + 
  ! + 
  call prec%init(’ML’,       info) + 
  call prec%hierarchy_build(a,desc_a,info) + 
  nlv = prec%get_nlevs() + 
  call prec%set(tlusv,   info,ilev=1,ilmax=max(1,nlv-1)) + 
  call prec%smoothers_build(a,desc_a,info) + 
+

diff --git a/docs/html/userhtmlse7.html b/docs/html/userhtmlse7.html index df4dc649..8c41cbde 100644 --- a/docs/html/userhtmlse7.html +++ b/docs/html/userhtmlse7.html @@ -3,8 +3,8 @@ Error Handling - - + + diff --git a/docs/html/userhtmlse8.html b/docs/html/userhtmlse8.html index 76b8561f..822aeec9 100644 --- a/docs/html/userhtmlse8.html +++ b/docs/html/userhtmlse8.html @@ -3,8 +3,8 @@ License - - + + @@ -36,37 +36,42 @@ class="cmr-12">AMG4PSBLAS is freely distributable under the following copyright -

-                           AMG4PSBLAS  version 1.0
-              Algebraic MultiGrid Preconditioners Package
-             based on PSBLAS (Parallel Sparse BLAS version 3.7)
-  (C) Copyright 2021
-  Pasqua D’Ambra         IAC-CNR, IT
-  Fabio Durastante       University of Pisa and IAC-CNR, IT
-  Salvatore Filippone    University of Rome Tor-Vergata and IAC-CNR, IT
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-    1. Redistributions of source code must retain the above copyright
-       notice, this list of conditions and the following disclaimer.
-    2. Redistributions in binary form must reproduce the above copyright
-       notice, this list of conditions, and the following disclaimer in the
-       documentation and/or other materials provided with the distribution.
-    3. The name of the MLD2P4 group or the names of its contributors may
-       not be used to endorse or promote products derived from this
-       software without specific written permission.
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  ‘‘AS IS’’ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MLD2P4 GROUP OR ITS CONTRIBUTORS
-  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
+

                           AMG4PSBLAS  version 1.0 + 
              Algebraic MultiGrid Preconditioners Package + 
             based on PSBLAS (Parallel Sparse BLAS version 3.7) + 

  (C) Copyright 2021 + 

  Pasqua D’Ambra         IAC-CNR, IT + 
  Fabio Durastante       University of Pisa and IAC-CNR, IT + 
  Salvatore Filippone    University of Rome Tor-Vergata and IAC-CNR, IT + 

  Redistribution and use in source and binary forms, with or without + 
  modification, are permitted provided that the following conditions + 
  are met: + 
    1. Redistributions of source code must retain the above copyright + 
       notice, this list of conditions and the following disclaimer. + 
    2. Redistributions in binary form must reproduce the above copyright + 
       notice, this list of conditions, and the following disclaimer in the + 
       documentation and/or other materials provided with the distribution. + 
    3. The name of the MLD2P4 group or the names of its contributors may + 
       not be used to endorse or promote products derived from this + 
       software without specific written permission. + 

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + 
  ‘‘AS IS’’ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + 
  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + 
  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MLD2P4 GROUP OR ITS CONTRIBUTORS + 
  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + 
  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + 
  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + 
  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + 
  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + 
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + 
  POSSIBILITY OF SUCH DAMAGE. + 
+

@@ -78,37 +83,44 @@ class="cmr-12">abide by its terms: -

-                           MLD2P4  version 2.2
-  MultiLevel Domain Decomposition Parallel Preconditioners Package
-             based on PSBLAS (Parallel Sparse BLAS version 3.5)
-  (C) Copyright 2008-2018
-      Salvatore Filippone
-      Pasqua D’Ambra
-      Daniela di Serafino
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-    1. Redistributions of source code must retain the above copyright
-       notice, this list of conditions and the following disclaimer.
-    2. Redistributions in binary form must reproduce the above copyright
-       notice, this list of conditions, and the following disclaimer in the
-       documentation and/or other materials provided with the distribution.
-    3. The name of the MLD2P4 group or the names of its contributors may
-       not be used to endorse or promote products derived from this
-       software without specific written permission.
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  ‘‘AS IS’’ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MLD2P4 GROUP OR ITS CONTRIBUTORS
-  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-
+


                           MLD2P4  version 2.2 + 
  MultiLevel Domain Decomposition Parallel Preconditioners Package + 
             based on PSBLAS (Parallel Sparse BLAS version 3.5) + 

  (C) Copyright 2008-2018 + 

      Salvatore Filippone + 
      Pasqua D’Ambra + 
      Daniela di Serafino + 


  Redistribution and use in source and binary forms, with or without + 
  modification, are permitted provided that the following conditions + 
  are met: + 
    1. Redistributions of source code must retain the above copyright + 
       notice, this list of conditions and the following disclaimer. + 
    2. Redistributions in binary form must reproduce the above copyright + 
       notice, this list of conditions, and the following disclaimer in the + 
       documentation and/or other materials provided with the distribution. + 
    3. The name of the MLD2P4 group or the names of its contributors may + 
       not be used to endorse or promote products derived from this + 
       software without specific written permission. + 

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + 
  ‘‘AS IS’’ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + 
  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + 
  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MLD2P4 GROUP OR ITS CONTRIBUTORS + 
  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + 
  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + 
  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + 
  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + 
  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + 
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + 
  POSSIBILITY OF SUCH DAMAGE. + 
+

AMG4PSBLAS is distributed together with (a small part of) the graph-matching @@ -127,48 +139,48 @@ class="cmr-12">here. -

+   
// *********************************************************************** -// -//        MatchboxP: A C++ library for approximate weighted matching -//               Mahantesh Halappanavar (hala@pnnl.gov) -//               Pacific Northwest National Laboratory -// -// *********************************************************************** -// -//       Copyright (2021) Battelle Memorial Institute -//                      All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the copyright holder nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -// COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -// -// ************************************************************************ -

// + 
//        MatchboxP: A C++ library for approximate weighted matching + 
//               Mahantesh Halappanavar (hala@pnnl.gov) + 
//               Pacific Northwest National Laboratory + 
// + 
// *********************************************************************** + 
// + 
//       Copyright (2021) Battelle Memorial Institute + 
//                      All rights reserved. + 
// + 
// Redistribution and use in source and binary forms, with or without + 
// modification, are permitted provided that the following conditions + 
// are met: + 
// + 
// 1. Redistributions of source code must retain the above copyright + 
// notice, this list of conditions and the following disclaimer. + 
// + 
// 2. Redistributions in binary form must reproduce the above copyright + 
// notice, this list of conditions and the following disclaimer in the + 
// documentation and/or other materials provided with the distribution. + 
// + 
// 3. Neither the name of the copyright holder nor the names of its + 
// contributors may be used to endorse or promote products derived from + 
// this software without specific prior written permission. + 
// + 
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + 
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + 
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + 
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + 
// COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + 
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + 
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + 
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + 
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + 
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + 
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + 
// POSSIBILITY OF SUCH DAMAGE. + 
// + 
// ************************************************************************ +

diff --git a/docs/html/userhtmlse9.html b/docs/html/userhtmlse9.html index 3db740b8..1f30b61b 100644 --- a/docs/html/userhtmlse9.html +++ b/docs/html/userhtmlse9.html @@ -3,8 +3,8 @@ Contributor Covenant Code of Conduct - - + + diff --git a/docs/html/userhtmlsu1.html b/docs/html/userhtmlsu1.html index 8022ba00..4db589e8 100644 --- a/docs/html/userhtmlsu1.html +++ b/docs/html/userhtmlsu1.html @@ -3,8 +3,8 @@ Prerequisites - - + + diff --git a/docs/html/userhtmlsu10.html b/docs/html/userhtmlsu10.html index 00a465ed..86ef89f6 100644 --- a/docs/html/userhtmlsu10.html +++ b/docs/html/userhtmlsu10.html @@ -3,8 +3,8 @@ Method hierarchy_build - - + + @@ -68,9 +68,9 @@ cellspacing="0" cellpadding="0" >

a a

type(in).

The sparse matrix structure containing the local part of the matrix 20].

desc_adesc_a

type(in).

The communication descriptor of a20].

info info

integer,out).

Error code. If no error, 0 is returned. See Section 7 for details. diff --git a/docs/html/userhtmlsu11.html b/docs/html/userhtmlsu11.html index 08501195..67cc3b6e 100644 --- a/docs/html/userhtmlsu11.html +++ b/docs/html/userhtmlsu11.html @@ -3,8 +3,8 @@ Method smoothers_build - - + + @@ -82,9 +82,9 @@ cellspacing="0" cellpadding="0" >

a a

type(in).

The sparse matrix structure containing the local part of the matrix 20].

desc_adesc_a

type(in).

The communication descriptor of a20].

info info

integer,out).

Error code. If no error, 0 is returned. See Section 7 for details.

amold amold

class( optional.

The desired dynamic type for internal matrix components; this 20].

vmold vmold

class( optional.

The desired dynamic type for internal vector components; this allows e.g. running on GPUs.

imold imold

class( optional.

The desired dynamic type for internal integer vector components; this allows e.g. running on GPUs. diff --git a/docs/html/userhtmlsu12.html b/docs/html/userhtmlsu12.html index 32e905c0..a29d4019 100644 --- a/docs/html/userhtmlsu12.html +++ b/docs/html/userhtmlsu12.html @@ -3,8 +3,8 @@ Method build - - + + @@ -90,9 +90,9 @@ cellspacing="0" cellpadding="0" >

a a

type(in).

The sparse matrix structure containing the local part of the matrix 20].

desc_adesc_a

type(in).

The communication descriptor of a20].

info info

integer,out).

Error code. If no error, 0 is returned. See Section 7 for details.

amold amold

class( optional.

The desired dynamic type for internal matrix components; this 20].

vmold vmold

class( optional.

The desired dynamic type for internal vector components; this allows e.g. running on GPUs.

imold imold

class( optional.

The desired dynamic type for internal integer vector components; this allows e.g. running on GPUs.

The method can be used to build multilevel preconditioners too. diff --git a/docs/html/userhtmlsu13.html b/docs/html/userhtmlsu13.html index 6f194dd5..0a54ef74 100644 --- a/docs/html/userhtmlsu13.html +++ b/docs/html/userhtmlsu13.html @@ -3,8 +3,8 @@ Method apply - - + + @@ -96,9 +96,9 @@ cellspacing="0" cellpadding="0" >

x x

type(kind_parameter), dimension(:), intent(in)—.

The local part of the vector x, single/double precision version of AMG4PSBLAS under use.

y y

type(kind_parameter), dimension(:), intent(out)—.

The local part of the vector y, single/double precision version of AMG4PSBLAS under use.

desc_adesc_a

type(in).

The communication descriptor associated to the matrix to be preconditioned.

info info

integer,out).

Error code. If no error, 0 is returned. See Section 7 for details.

trans trans

character((in).

If trans -1).

work work

type(kind_parameter), dimension(:), optional, target—.

Workspace. Its size should be at least 4, single/double precision version of AMG4PSBLAS under use. diff --git a/docs/html/userhtmlsu14.html b/docs/html/userhtmlsu14.html index 9dab129c..bb0aa353 100644 --- a/docs/html/userhtmlsu14.html +++ b/docs/html/userhtmlsu14.html @@ -3,8 +3,8 @@ Method free - - + + @@ -57,9 +57,9 @@ cellspacing="0" cellpadding="0" >

info info

integer,out).

Error code. If no error, 0 is returned. See Section for details. diff --git a/docs/html/userhtmlsu15.html b/docs/html/userhtmlsu15.html index 8c3cfa76..12056e79 100644 --- a/docs/html/userhtmlsu15.html +++ b/docs/html/userhtmlsu15.html @@ -3,8 +3,8 @@ Method descr - - + + @@ -75,9 +75,9 @@ cellspacing="0" cellpadding="0" >

info info

integer,out).

Error code. If no error, 0 is returned. See Section 7 for details.

iout iout

integer, optional.

The id of the file where the preconditioner description will be printed; the default is the standard output.

root root

integer, optional.

The id of the process where the preconditioner description will be printed; the default is psb_root_.

verbosity verbosity

integer, optional.

The verbosity level of the description. Default value is 0. For a distributed multilevel preconditioner the size of the coarsematrices on every process. diff --git a/docs/html/userhtmlsu16.html b/docs/html/userhtmlsu16.html index 6b6ab93f..6f922637 100644 --- a/docs/html/userhtmlsu16.html +++ b/docs/html/userhtmlsu16.html @@ -3,8 +3,8 @@ Auxiliary Methods - - + + @@ -77,9 +77,9 @@ cellspacing="0" cellpadding="0" >

info info

integer,out).

Error code. If no error, 0 is returned. See Section 7 for details.

amold amold

class( optional.

The desired dynamic type for internal matrix components; this 20].

pout pout

type(out).

The copy of the preconditioner data structure. Note that x , single/double precision version of AMG4PSBLAS under use.

info info

integer,out).

Error code. If no error, 0 is returned. See Section 7 for details.

global global

logical, optional.

Whether the global or local preconditioner memory occupation is false.. Return memory footprint in bytes. @@ -333,9 +333,9 @@ cellspacing="0" cellpadding="0" >

info info

integer,out).

Error code. If no error, 0 is returned. See Section 7 for details.

vmold vmold

class( optional.

The desired dynamic type for internal vector components; this allows e.g. running on GPUs.

info info

integer,out).

Error code. If no error, 0 is returned. See Section 7 for details. diff --git a/docs/html/userhtmlsu2.html b/docs/html/userhtmlsu2.html index bccb1ca7..082299c8 100644 --- a/docs/html/userhtmlsu2.html +++ b/docs/html/userhtmlsu2.html @@ -3,8 +3,8 @@ Optional third party libraries - - + + diff --git a/docs/html/userhtmlsu3.html b/docs/html/userhtmlsu3.html index 98612f6f..efa45195 100644 --- a/docs/html/userhtmlsu3.html +++ b/docs/html/userhtmlsu3.html @@ -3,8 +3,8 @@ Configuration options - - + + @@ -42,9 +42,9 @@ class="cmr-12">As a minimal example consider the following: -

+   
./configure --with-psblas=PSB-INSTALL-DIR -
+

which assumes that the various MPI compilers and support libraries are available in  ‘--prefix=$HOME$HOME’. 
might be configured with: -

+   
./configure --with-psblas=/opt/psblas-3.7/ \ ---with-umfpackincdir=/usr/include/suitesparse/ -

--with-umfpackincdir=/usr/include/suitesparse/ +

Once the configure script has completed execution, it will have generated the file To build the library the user will now enter -

+   
make -
+

followed (optionally) by -

+   
make install -
+

diff --git a/docs/html/userhtmlsu4.html b/docs/html/userhtmlsu4.html index 8146ab12..d9e5c8c6 100644 --- a/docs/html/userhtmlsu4.html +++ b/docs/html/userhtmlsu4.html @@ -3,8 +3,8 @@ Bug reporting - - + + @@ -36,8 +36,8 @@ class="cmr-12">If you find any bugs in our codes, please report them through our on
https://github.com/psctoolkit/amg4psblas/issues
https://github.com/psctoolkit/psctoolkit/issues

To enable us to track the bug, please provide a log from the failing application, the diff --git a/docs/html/userhtmlsu5.html b/docs/html/userhtmlsu5.html index 2451872d..6033e14c 100644 --- a/docs/html/userhtmlsu5.html +++ b/docs/html/userhtmlsu5.html @@ -3,8 +3,8 @@ Example and test programs - - + + diff --git a/docs/html/userhtmlsu6.html b/docs/html/userhtmlsu6.html index 71c829cd..0fa4d4a6 100644 --- a/docs/html/userhtmlsu6.html +++ b/docs/html/userhtmlsu6.html @@ -3,8 +3,8 @@ Examples - - + + @@ -79,7 +79,8 @@ class="cmr-12">found in the example program file amg_dexample_ml.f90, in the directory samples/simple/fileread samples/simple/fileread of the AMG4PSBLAS implementation (see Section for details). If these versions are installed, the corresponding codes are available in samples/simple/fileread/samples/simple/fileread. @@ -131,58 +133,59 @@ class="cmr-12">. -

+
  use psb_base_mod -  use amg_prec_mod -  use psb_krylov_mod -... ... -! -! sparse matrix -  type(psb_dspmat_type) :: A -! sparse matrix descriptor -  type(psb_desc_type)   :: desc_A -! preconditioner -  type(amg_dprec_type)  :: P -! right-hand side and solution vectors -  type(psb_d_vect_type) :: b, x -... ... -! -! initialize the parallel environment -  call psb_init(ctxt) -  call psb_info(ctxt,iam,np) -... ... -! -! read and assemble the spd matrix A and the right-hand side b -! using PSBLAS routines for sparse matrix / vector management -... ... -! -! initialize the default multilevel preconditioner, i.e. V-cycle -! with basic smoothed aggregation, 1 hybrid forward/backward -! GS sweep as pre/post-smoother and UMFPACK as coarsest-level -! solver -  call P%init(’ML’,info) -! -! build the preconditioner -  call P%hierarchy_build(A,desc_A,info) -  call P%smoothers_build(A,desc_A,info) -! -! set the solver parameters and the initial guess -  ... ... -! -! solve Ax=b with preconditioned CG -  call psb_krylov(’CG’,A,P,b,x,tol,desc_A,info) -  ... ... -! -! deallocate the preconditioner -  call P%free(info) -! -! deallocate other data structures -  ... ... -! -! exit the parallel environment -  call psb_exit(ctxt) -  stop -

  use amg_prec_mod + 
  use psb_krylov_mod + 
... ... + 
! + 
! sparse matrix + 
  type(psb_dspmat_type) :: A + 
! sparse matrix descriptor + 
  type(psb_desc_type)   :: desc_A + 
! preconditioner + 
  type(amg_dprec_type)  :: P + 
! right-hand side and solution vectors + 
  type(psb_d_vect_type) :: b, x + 
... ... + 
! + 
! initialize the parallel environment + 
  call psb_init(ctxt) + 
  call psb_info(ctxt,iam,np) + 
... ... + 
! + 
! read and assemble the spd matrix A and the right-hand side b + 
! using PSBLAS routines for sparse matrix / vector management + 
... ... + 
! + 
! initialize the default multilevel preconditioner, i.e. V-cycle + 
! with basic smoothed aggregation, 1 hybrid forward/backward + 
! GS sweep as pre/post-smoother and UMFPACK as coarsest-level + 
! solver + 
  call P%init(’ML’,info) + 
! + 
! build the preconditioner + 
  call P%hierarchy_build(A,desc_A,info) + 
  call P%smoothers_build(A,desc_A,info) + 

! + 
! set the solver parameters and the initial guess + 
  ... ... + 
! + 
! solve Ax=b with preconditioned CG + 
  call psb_krylov(’CG’,A,P,b,x,tol,desc_A,info) + 
  ... ... + 
! + 
! deallocate the preconditioner + 
  call P%free(info) + 
! + 
! deallocate other data structures + 
  ... ... + 
! + 
! exit the parallel environment + 
  call psb_exit(ctxt) + 
  stop +

@@ -291,19 +294,19 @@ class="cmr-12">.

-

-... ...
-! build a V-cycle preconditioner with 1 block-Jacobi sweep (with
-! ILU(0) on the blocks) as pre- and post-smoother, and 8  block-Jacobi
-! sweeps (with ILU(0) on the blocks) as coarsest-level solver
-  call P%init(’ML’,info)
-  call P%set(’SMOOTHER_TYPE’,’BJAC’,info)
-  call P%set(’COARSE_SOLVE’,’BJAC’,info)
-  call P%set(’COARSE_SWEEPS’,8,info)
-  call P%hierarchy_build(A,desc_A,info)
-  call P%smoothers_build(A,desc_A,info)
+
... ... -

! build a V-cycle preconditioner with 1 block-Jacobi sweep (with + 
! ILU(0) on the blocks) as pre- and post-smoother, and 8  block-Jacobi + 
! sweeps (with ILU(0) on the blocks) as coarsest-level solver + 
  call P%init(’ML’,info) + 
  call P%set(’SMOOTHER_TYPE’,’BJAC’,info) + 
  call P%set(’COARSE_SOLVE’,’BJAC’,info) + 
  call P%set(’COARSE_SWEEPS’,8,info) + 
  call P%hierarchy_build(A,desc_A,info) + 
  call P%smoothers_build(A,desc_A,info) + 
... ... +


Listing 2: setup of a multilevel preconditioner based on the default decoup

-

-... ...
-! build a W-cycle preconditioner with 2 hybrid Gauss-Seidel sweeps
-! as pre- and post-smoother, a distributed coarsest
-! matrix, and MUMPS as coarsest-level solver
-  call P%init(’ML’,info)
-  call P%set(’PAR_AGGR_ALG’,’COUPLED’,info)
-call P%set(’AGGR_TYPE’,’MATCHBOXP’,info)
-call P%set(’AGGR_SIZE’,8,info)
-  call P%set(’ML_CYCLE’,’WCYCLE’,info)
-  call P%set(’SMOOTHER_TYPE’,’FBGS’,info)
-  call P%set(’SMOOTHER_SWEEPS’,2,info)
-  call P%set(’COARSE_SOLVE’,’KRM’,info)
-  call P%hierarchy_build(A,desc_A,info)
-  call P%smoothers_build(A,desc_A,info)
+
... ... -

! build a W-cycle preconditioner with 2 hybrid Gauss-Seidel sweeps + 
! as pre- and post-smoother, a distributed coarsest + 
! matrix, and MUMPS as coarsest-level solver + 
  call P%init(’ML’,info) + 
  call P%set(’PAR_AGGR_ALG’,’COUPLED’,info) + 
call P%set(’AGGR_TYPE’,’MATCHBOXP’,info) + 
call P%set(’AGGR_SIZE’,8,info) + 
  call P%set(’ML_CYCLE’,’WCYCLE’,info) + 
  call P%set(’SMOOTHER_TYPE’,’FBGS’,info) + 
  call P%set(’SMOOTHER_SWEEPS’,2,info) + 
  call P%set(’COARSE_SOLVE’,’KRM’,info) + 
  call P%hierarchy_build(A,desc_A,info) + 
  call P%smoothers_build(A,desc_A,info) + 
... ... +


Listing 3:

-

+
... ... -! set RAS with overlap 2 and ILU(0) on the local blocks -  call P%init(’AS’,info) -  call P%set(’SUB_OVR’,2,info) -  call P%bld(A,desc_A,info) -... ... -! solve Ax=b with preconditioned BiCGSTAB -  call psb_krylov(’BICGSTAB’,A,P,b,x,tol,desc_A,info) -

! set RAS with overlap 2 and ILU(0) on the local blocks + 
  call P%init(’AS’,info) + 
  call P%set(’SUB_OVR’,2,info) + 
  call P%bld(A,desc_A,info) + 
... ... + 
! solve Ax=b with preconditioned BiCGSTAB + 
  call psb_krylov(’BICGSTAB’,A,P,b,x,tol,desc_A,info) +


Listing 4: GPU example - - + + @@ -52,23 +52,24 @@ class="cmr-12">variables:

-

+
program amg_dexample_gpu -  use psb_base_mod -  use amg_prec_mod -  use psb_krylov_mod -  use psb_util_mod -  use psb_gpu_mod -  use data_input -  use amg_d_pde_mod -  implicit none -  ....... -  ! GPU variables -  type(psb_d_hlg_sparse_mat) :: agmold -  type(psb_d_vect_gpu)       :: vgmold -  type(psb_i_vect_gpu)       :: igmold -  -

  use psb_base_mod + 
  use amg_prec_mod + 
  use psb_krylov_mod + 
  use psb_util_mod + 
  use psb_gpu_mod + 
  use data_input + 
  use amg_d_pde_mod + 
  implicit none + 
  ....... + 
  ! GPU variables + 
  type(psb_d_hlg_sparse_mat) :: agmold + 
  type(psb_d_vect_gpu)       :: vgmold + 
  type(psb_i_vect_gpu)       :: igmold + 

  +


Listing 5: guides).

-

+
  call psb_init(ctxt) -  call psb_info(ctxt,iam,np) -  ! -  ! BEWARE: if you have NGPUS  per node, the default is to -  ! attach to mod(IAM,NGPUS) -  ! -  call psb_gpu_init(ictxt) -  ...... -  t1 = psb_wtime() -  call prec%smoothers_build(a,desc_a,info, amold=agmold, vmold=vgmold, imold=igmold) -  -

  call psb_info(ctxt,iam,np) + 
  ! + 
  ! BEWARE: if you have NGPUS  per node, the default is to + 
  ! attach to mod(IAM,NGPUS) + 
  ! + 
  call psb_gpu_init(ictxt) + 
  ...... + 
  t1 = psb_wtime() + 
  call prec%smoothers_build(a,desc_a,info, amold=agmold, vmold=vgmold, imold=igmold) + 

  +


Listing 6: GPU environment
-

-

+

+

  call desc_a%cnv(mold=igmold) -  call a%cscnv(info,mold=agmold) -  call psb_geasb(x,desc_a,info,mold=vgmold) -  call psb_geasb(b,desc_a,info,mold=vgmold) -  ! -  ! iterative method parameters -  ! -  call psb_barrier(ctxt) -  call prec%allocate_wrk(info) -  t1 = psb_wtime() -  call psb_krylov(s_choice%kmethd,a,prec,b,x,s_choice%eps,& -       & desc_a,info,itmax=s_choice%itmax,iter=iter,err=err,itrace=s_choice%itrace,& -       & istop=s_choice%istopc,irst=s_choice%irst) -  call prec%deallocate_wrk(info) -  call psb_barrier(ctxt) -  tslv = psb_wtime() - t1 -  ...... -  call psb_gpu_exit() -  call psb_exit(ctxt) -  stop -  -
-


  call a%cscnv(info,mold=agmold) + 
  call psb_geasb(x,desc_a,info,mold=vgmold) + 
  call psb_geasb(b,desc_a,info,mold=vgmold) + 

  ! + 
  ! iterative method parameters + 
  ! + 
  call psb_barrier(ctxt) + 
  call prec%allocate_wrk(info) + 
  t1 = psb_wtime() + 
  call psb_krylov(s_choice%kmethd,a,prec,b,x,s_choice%eps,& + 
       & desc_a,info,itmax=s_choice%itmax,iter=iter,err=err,itrace=s_choice%itrace,& + 
       & istop=s_choice%istopc,irst=s_choice%irst) + 
  call prec%deallocate_wrk(info) + 
  call psb_barrier(ctxt) + 
  tslv = psb_wtime() - t1 + 

  ...... + 
  call psb_gpu_exit() + 
  call psb_exit(ctxt) + 
  stop + 

  +
+


Listing 7: setup of a GPU-enabled test program part three.
@@ -175,25 +180,30 @@ class="content">setup of a GPU-enabled test program part three.

It is very important to employ solvers that are suited to the GPU, i.e. solvers that +

It is very important to employ smoothers and coarsest solvers that are suited to the do NOT employ triangular system solve kernels. Solvers that satisfy this constraint +class="cmr-12">GPU, i.e. methods that do NOT employ triangular system solve kernels. Methods that include: +class="cmr-12">satisfy this constraint include:

+

and their 1 Method init - - + + @@ -54,9 +54,9 @@ cellspacing="0" cellpadding="0" >

contxt contxt

type(in).

The communication context.

ptype ptype

character(in) .

The type of preconditioner. Its values are specified in Table 1.

Note that strings are case insensitive.

info info

integer,out).

Error code. If no error, 0 is returned. See Section 7 for details. diff --git a/docs/html/userhtmlsu9.html b/docs/html/userhtmlsu9.html index c276983a..888ff957 100644 --- a/docs/html/userhtmlsu9.html +++ b/docs/html/userhtmlsu9.html @@ -3,8 +3,8 @@ Method set - - + + @@ -79,9 +79,9 @@ cellspacing="0" cellpadding="0" >

what what

character(len=*).

The parameter to be set. It can be specified through its name; the 8.

val   

integer or in).

The value of the parameter to be set. The list of allowed values and len=*), it is also treated as case insensitive.

info info

integer,out).

Error code. If no error, 0 is returned. See Section 7 for details.

ilev ilev

integer,in).

For the multilevel preconditioner, the level at which the 8).

ilmax ilmax

integer,in).

For the multilevel preconditioner, when both ilev The levels are numbered in increasing order starting from the fin one, i.e., level 1 is the finest level.

pos pos

character(in).

Whether the other arguments apply only to the pre-smoother not concern the smoothers, class="cmtt-12">pos is ignored.

idx idx

integer,in).

An auxiliary input argument that can be passed to the underlying objects. - +class="cmr-12">objects. +

A variety of preconditioners can be obtained by setting the appropriate @@ -563,7 +563,7 @@ id="TBL-4-3">






what a type e

val val

dfault t

cnts






ML_CYCLE

character(len=*) =*)

VCYCLE

ADD

VCYCLE

Multilevel cycle: V-cycle, W-cycle, K-cycle, and additive composition.






CYCLE_SWEEPS

integer integer

Any integer

number 1

1 ≥ 1

1

Number of multilevel cycles.







Table 2:




what a type e

val val

dfault t

cnts






MIN_COARSE_SIZE_PER_PROCESS

integer integer

Any number

> 0

200 > 0

200

Coarse size threshold per process. The aggregation stops if the global number of variables of the computed coarsest matrix @@ -736,17 +736,17 @@ multiplied by the number of processes (see Note).






MIN_COARSE_SIZE

integer integer

Any number

> 0

-1 > 0

-1

Coarse size threshold. The aggregation stops if the global number of variables of the computed coarsest matrix is lower @@ -759,17 +759,17 @@ class="cmtt-10x-x-109">MIN_COARSE_SIZE_PER_PROCESS.






MIN_CR_RATIO

real real

Any number

> 1

1.5 > 1

1.5

Minimum coarsening ratio. The aggregation stops if the ratio between the global matrix dimensions at @@ -777,23 +777,23 @@ two consecutive levels is lower than or equal to this threshold (see Note).






MAX_LEVS

integer integer

Any integer

number > 1

20 > 1

20

Maximum number of levels. The aggregation stops if the number of levels reaches this value (see Note).






PAR_AGGR_ALG

character(len=*) =*)

’DEC’, ’SYMDEC’, ’COUPLED’ ’COUPLED’

’DEC’ ’DEC’

Parallel aggregation algorithm.

the SYMDEC option applies decoupled @@ -821,7 +821,7 @@ class="cmmi-10x-x-109">AT .






AGGR_TYPE

character(len=*) =*)

SOC1, MATCHBOXP

SOC1

Type of aggregation algorithm: currently, for the decoupled aggregation we implement two @@ -862,13 +862,13 @@ package [9].






AGGR_SIZE

integer integer

Any integer

power of 2, with @@ -876,8 +876,8 @@ with class="cmtt-10x-x-109">aggr_size -2

4

4

Maximum size of aggregates when the coupled aggregation based on matching is applied. For aggressive coarsening @@ -889,7 +889,7 @@ and ’MATCHBOXP’






AGGR_PROL

character(len=*) =*)

SMOOTHED, UNSMOOTHED

SMOOTHED

Prolongator used by the aggregation algorithm: smoothed or unsmoothed (i.e., tentative prolongator).






Note. The aggregation algorithm stops when at least one of the following criteria is met: the coarse size threshold,
the minimum coarsening ratio, or the maximum number of levels is reached.
Therefore, the actual number of levels may be smaller than the specified maximum number of levels.





@@ -964,7 +964,7 @@ id="TBL-6-3">




what a type e

val val

dfault t

cnts






AGGR_ORD

character(len=*) =*)

’NATURAL’

’DEGREE’ ’DEGREE’

’NATURAL’ ’NATURAL’

Initial ordering of indices for the decoupled aggregation algorithm: either natural ordering or sorted by @@ -1022,7 +1022,7 @@ descending degrees of the nodes in the matrix graph.






AGGR_THRESH

real(kind_parameter) )

Any real

number  [0,1]

0.01 ,1]

0.01

The threshold θ in the strength of connection algorithm. See also the note at the bottom of this table.






AGGR_FILTER

character(len=*) =*)

’FILTER’

’NOFILTER’ ’NOFILTER’

’NOFILTER’ ’NOFILTER’

Matrix used in computing the smoothed prolongator: filtered or unfiltered.






Note. Different thresholds at different levels, such as those used in [33, Section 5.1], can be easily set by invoking the rou-
tine set with the parameter ilev.






Table 4:




what a type e

val val

dfault t

cnts






COARSE_MAT

character(len=*) =*)

DIST

REPL

REPL

Coarsest matrix layout: distributed among the processes or replicated on each of them.






COARSE_SOLVE

character(len=*) =*)

MUMPSL1-FBGS

See Note.’

See Note.

Solver used at the coarsest level: sequential LU from MUMPS, UMFPACK, or SuperLU (plus triangular solve); distributed LU from @@ -1261,7 +1261,7 @@ UMFPACK and SuperLU_Dist are available only in double precision.






COARSE_SUBSOLVE

character(len=*) =*)

ILU

AINV

See Note.’

See Note.

Solver for the diagonal blocks of the coarsest matrix, in case the block Jacobi solver is chosen as coarsest-level solver: ILU(






Note. Defaults for COARSE_SOLVE and COARSE_SUBSOLVE are chosen in the following order:
single precision version – MUMPS if installed, then SLU if installed, ILU otherwise;
double precision version – UMF if installed, then MUMPS if installed, then SLU if installed, ILU otherwise.





what a type e

val val

dfault t

cts






COARSE_SWEEPS

integer integer

Any integer

number > -0

10

10

Number of sweeps when JACOBI, GS or BJAC is chosen as coarsest-level solver.






COARSE_FILLIN

integer integer

Any integer

number -0

0

0

Fill-in level p of the ILU factorizations and first fill-in for the approximate inverses.






COARSE_ILUTHRS

real(kind_parameter) )

Any real

number -0

0

0

Drop tolerance t in the ILU(p,t) factorization and first drop-tolerance for the approximate inverses.






Note. Further options for coarse solvers are contained in Table 6.
For a first use it is suggested to use the default options obtained by simply selecting the solver type.





@@ -1499,7 +1499,7 @@ id="TBL-8-3">




what a type e

val val

dfault t

cnts






BJAC_STOP

character(len=*) =*)

FALSE

TRUE

FALSE

Select whether to use a stopping criterion for the Block-Jacobi method used as a coarse solver.






BJAC_TRACE

character(len=*) =*)

FALSE

TRUE

FALSE

Select whether to print a trace for the calculated residual for the Block-Jacobi method used as a coarse solver.






BJAC_ITRACE

integer integer

Any integer

> 0

-1 > 0

-1

Number of iterations after which a trace is to be printed.






BJAC_RESCHECK

integer integer

Any integer

> 0

-1 > 0

-1

Number of iterations after which a residual is to be calculated.






BJAC_STOPTOL

real(kind_parameter) )

Any real

< 1

0 < 1

0

Tolerance for the stopping criterion on the residual.






KRM_METHOD

character(len=*) =*)

CG

RGMRES

FCG

A string that defines the iterative method to be used when employing a Krylov method 20] for further information.






KRM_KPREC

character(len=*) =*)

Table 1 1

BJAC

The one-level preconditioners from the Table 1 can be used for the coarse Krylov solver.






KRM_SUB_SOLVE

character(len=*) =*)

Table 5 5

ILU

Solver for the diagonal blocks of the coarsest matrix preconditioner, in case the block Jacobi solver is chosen @@ -1777,7 +1777,7 @@ The same caveat from Table 5 applies here.






KRM_GLOBAL

character(len=*) =*)

TRUE, FALSE

FALSE

Choose between a global Krylov solver, all unknowns on a single node, or a distributed one. The default choice is the distributed solver.






KRM_EPS

real(kind_parameter) )

Real < 1 < 1

10-6 6

The stopping tolerance.






KRM_IRST

integer integer

Integer

1

30 ≥ 1

30

An integer specifying the restart parameter. This is employed for the BiCGSTABL or RGMRES methods, otherwise it is ignored.






KRM_ISTOPC

integer integer

Integers -1,2,3

2

2

If 1 then the method uses the normwise backward error in the infinity norm; if 20] guide for the details.






KRM_ITMAX

integer integer

Integer

1

40 ≥ 1

40

The maximum number of iterations to perform.






KRM_ITRACE

integer integer

Integer

0

-1 ≥ 0

-1

If > 0 print out an informational message about convergence @@ -1899,23 +1899,23 @@ class="cmtt-10x-x-109">’ iterations. If = 0 print a message in case of convergence failure.






KRM_FILLIN

integer integer

Integer

0

0 ≥ 0

0

Fill-in level p of the ILU factorizations and first fill-in for the approximate inverses.






@@ -1950,7 +1950,7 @@ id="TBL-9-3">




what a type e

val val

dfault t

cnts






SMOOTHER_TYPE

character(len=*) =*)

JACOBIL1-FBGS

FBGS

Type of smoother used in the multilevel -point-Jacobi and Additive Schwarz. class="cmr-10">It is ignored by one-level preconditioners.






SUB_SOLVE

character(len=*) =*)

JACOBI

AINV

GS and and Additive Schwarz one-level preconditioners preconditioners

The local solver to be used with the . See class="cmr-10">Note for details on hybrid Gauss-Seidel.






SMOOTHER_SWEEPS

integer integer

Any integer

number 00

1 1

Number of sweeps of the smoother or , class="cmr-10">respectively.






SUB_OVR

integer integer

Any integer

number 00

1 1

Number of overlap layers, for Additive Schwarz only.







Table 7:




what a type e

val val

dfault t

cnts






SUB_RESTR

character(len=*) =*)

HALO

NONE

HALO

Type of restriction operator, for Additive classical Addditive Schwarz smoother and class="cmr-10">its RAS variant.






SUB_PROL

character(len=*) =*)

SUM

NONE

NONE

Type of prolongation operator, for Additive for its RAS variant.






SUB_FILLIN

integer integer

Any integer

number 0 0

0 0

Fill-in level p of the incomplete LU class="cmr-10">factorizations.






SUB_ILUTHRS

real(kind_parameter) )

Any real number 0 0

0 0

Drop tolerance t ) class="cmr-10">factorization.






MUMPS_LOC_GLOB

character(len=*) =*)

LOCAL_SOLVER

GLOBAL_SOLVER

GLOBAL_SOLVER

Whether MUMPS should be used as a only on the part of the matrix local to each class="cmr-10">process.






MUMPS_IPAR_ENTRY

integer integer

Any integer number number

0 0

Set an entry in the MUMPS integer control optional class="cmr-10">argument.






MUMPS_RPAR_ENTRY

real real

Any real number Any real number

0 0

Set an entry in the MUMPS real control optional class="cmr-10">argument.







Table 8: