Merged license updates and updates from Pasqua.

documentation
Salvatore Filippone 4 years ago
parent 3bfe62517b
commit 90bf65f117

@ -4,7 +4,7 @@
Algebraic Multigrid Package
based on PSBLAS (Parallel Sparse BLAS version 3.7)
(C) Copyright 2020
(C) Copyright 2021
Salvatore Filippone
Pasqua D'Ambra

Binary file not shown.

@ -1,5 +1,6 @@
/* start css.sty */
.cmr-7{font-size:63%;}
.cmr-10{font-size:90%;}
.cmmi-10{font-size:90%;font-style: italic;}
.cmsy-10{font-size:90%;}
@ -7,12 +8,14 @@
.cmbx-12x-x-144{font-size:157%; font-weight: bold;}
.cmbx-12x-x-144{ font-weight: bold;}
.cmbx-12x-x-144{ font-weight: bold;}
.cmbx-12x-x-144{ font-weight: bold;}
.cmti-10x-x-109{ font-style: italic;}
.cmti-12{font-size:109%; font-style: italic;}
.cmr-12{font-size:109%;}
.cmbx-12{font-size:109%; font-weight: bold;}
.cmbx-12{ 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;}
@ -39,7 +42,12 @@
.cmbx-10x-x-109{ font-weight: bold;}
.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%;}
.cmbx-10{font-size:90%; font-weight: bold;}
.cmbx-10{ font-weight: bold;}
.cmbx-10{ font-weight: bold;}
.cmbx-10{ font-weight: bold;}
.cmti-10{font-size:90%; font-style: italic;}
.small-caps{font-variant: small-caps; }
p{margin-top:0;margin-bottom:0}
@ -187,9 +195,9 @@ div.abstract {width:100%;}
#TBL-5{border-collapse:collapse;}
#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-5{border-collapse:collapse;}
td#TBL-5-9-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-5-10-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-5-11-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-5-12-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
#TBL-6 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-6{border-collapse:collapse;}
#TBL-6 colgroup{border-left: 1px solid black;border-right:1px solid black;}

@ -167,6 +167,31 @@ class="cmr-12">(2), 1999, 792&#8211;797.</span>
class="cmr-12">[7]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XMatchBoxP"></a><span
class="cmr-12">U..</span><span
class="cmr-12">&#x00A0;V.</span><span
class="cmr-12">&#x00A0;Catalyurek, F.</span><span
class="cmr-12">&#x00A0;Dobrian, A.</span><span
class="cmr-12">&#x00A0;Gebremedhin, M.</span><span
class="cmr-12">&#x00A0;Halappanavar,</span>
<span
class="cmr-12">and A.</span><span
class="cmr-12">&#x00A0;Pothen, </span><span
class="cmti-12">Distributed-memory parallel algorithms for matching and</span>
<span
class="cmti-12">coloring</span><span
class="cmr-12">, in PCO&#8217;11 New Trends in Parallel Computing and Optimization,</span>
<span
class="cmr-12">IEEE International Symposium on Parallel and Distributed Processing</span>
<span
class="cmr-12">Workshops, IEEE CS, 2011.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[8]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="Xapnum_07"></a><span
class="cmr-12">P.</span><span
@ -185,7 +210,7 @@ class="cmr-12">57 (11-12), 2007, 1181-1196.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[8]</span><span class="bibsp"><span
class="cmr-12">[9]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -203,8 +228,8 @@ class="cmti-12">Fortran 95</span><span
class="cmr-12">, ACM Trans. Math. Softw., 37(3), 2010, art. 30.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[9]</span><span class="bibsp"><span
<span
class="cmr-12">[10]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -223,7 +248,7 @@ class="cmr-12">, Appl. Algebra Engrg. Comm. Comput., 18(3), 2007, 223&#8211;239.
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[10]</span><span class="bibsp"><span
class="cmr-12">[11]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -242,7 +267,7 @@ class="cmr-12">.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[11]</span><span class="bibsp"><span
class="cmr-12">[12]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -260,10 +285,13 @@ class="cmr-12">, ACM Transactions on Mathematical Software, 30, 2004, 196&#8211;
class="cmr-12">(See also </span><span
class="cmtt-12">http://www.cise.ufl.edu/~davis/</span><span
class="cmr-12">)</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[12]</span><span class="bibsp"><span
class="cmr-12">[13]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -286,13 +314,10 @@ class="cmti-12">A supernodal approach to sparse partial pivoting</span><span
class="cmr-12">,</span>
<span
class="cmr-12">SIAM Journal on Matrix Analysis and Applications, 20 (3), 1999, 720&#8211;755.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[13]</span><span class="bibsp"><span
class="cmr-12">[14]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -313,7 +338,7 @@ class="cmr-12">Software, 16 (1) 1990, 1&#8211;17.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[14]</span><span class="bibsp"><span
class="cmr-12">[15]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -334,7 +359,7 @@ class="cmr-12">Transactions on Mathematical Software, 14 (1) 1988, 1&#8211;17.</
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[15]</span><span class="bibsp"><span
class="cmr-12">[16]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -352,7 +377,7 @@ class="cmr-12">.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[16]</span><span class="bibsp"><span
class="cmr-12">[17]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -370,7 +395,7 @@ class="cmr-12">&#x00A0;23.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[17]</span><span class="bibsp"><span
class="cmr-12">[18]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -387,7 +412,7 @@ class="cmr-12">Transactions on Mathematical Software, 26 (4), 2000, 527&#8211;55
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[18]</span><span class="bibsp"><span
class="cmr-12">[19]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -399,10 +424,13 @@ class="cmti-12">algebraic multigrid by aggregation</span><span
class="cmr-12">, Numerical Lin. Algebra with Applications,</span>
<span
class="cmr-12">2016, 23:501-518</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[19]</span><span class="bibsp"><span
class="cmr-12">[20]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -421,13 +449,10 @@ class="cmti-12">MPI: The Complete Reference. Volume 2 - The MPI-2</span>
<span
class="cmti-12">Extensions</span><span
class="cmr-12">, MIT Press, 1998.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[20]</span><span class="bibsp"><span
class="cmr-12">[21]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -449,7 +474,7 @@ class="cmr-12">Mathematical Software, 5 (3), 1979, 308&#8211;323.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[21]</span><span class="bibsp"><span
class="cmr-12">[22]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -469,7 +494,7 @@ class="cmr-12">ACM Transactions on Mathematical Software, 29 (2), 2003, 110&#821
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[22]</span><span class="bibsp"><span
class="cmr-12">[23]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -485,7 +510,7 @@ class="cmr-12">Numerical Linear Algebra with Applications, 15 (5), 2008, 473&#82
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[23]</span><span class="bibsp"><span
class="cmr-12">[24]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -499,7 +524,7 @@ class="cmr-12">2003.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[24]</span><span class="bibsp"><span
class="cmr-12">[25]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -517,7 +542,7 @@ class="cmr-12">University Press, 1996.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[25]</span><span class="bibsp"><span
class="cmr-12">[26]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -537,7 +562,7 @@ class="cmr-12">Press, 1998.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[26]</span><span class="bibsp"><span
class="cmr-12">[27]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -553,10 +578,13 @@ class="cmr-12">
class="cmr-12">U.</span><span
class="cmr-12">&#x00A0;Trottenberg, C.</span><span
class="cmr-12">&#x00A0;Oosterlee, Multigrid, Academic Press, 2001.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[27]</span><span class="bibsp"><span
class="cmr-12">[28]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -571,13 +599,10 @@ class="cmti-12">Aggregation Strategies on Massively Parallel Machines</span
class="cmr-12">, in J. Donnelley,</span>
<span
class="cmr-12">editor, Proceedings of SuperComputing 2000, Dallas, 2000.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[28]</span><span class="bibsp"><span
class="cmr-12">[29]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -596,7 +621,7 @@ class="cmr-12">(3) 1996, 179&#8211;196.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[29]</span><span class="bibsp"><span
class="cmr-12">[30]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -613,7 +638,7 @@ class="cmr-12">16, (2013) 59&#8211;76.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[30]</span><span class="bibsp"><span
class="cmr-12">[31]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a

@ -87,7 +87,7 @@ class="cmr-12">3</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#XStuben_01"><span
class="cmr-12">26</span></a><span
class="cmr-12">27</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">), to be used in the iterative solution of linear systems,</span>
<table
@ -118,19 +118,24 @@ class="cmr-12">3</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#XNotay2008"><span
class="cmr-12">22</span></a><span
class="cmr-12">23</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">are available, which can be</span>
<span
class="cmr-12">combined with weighted versions of Jacobi, hybrid forward/backward Gauss-Seidel,</span>
<span
class="cmr-12">block-Jacobi, and additive Schwarz smoothers. An algebraic approach is used to</span>
class="cmr-12">block-Jacobi, and additive Schwarz smoothers. Also </span><span
class="cmmi-12">&#x2113;</span><sub><span
class="cmr-8">1</span></sub> <span
class="cmr-12">versions of Jacobi, block-Jacobi</span>
<span
class="cmr-12">generate a hierarchy of coarse-level matrices and operators, without explicitly using</span>
class="cmr-12">and Gauss-Seidel smoothers are available. An algebraic approach is used to generate a</span>
<span
class="cmr-12">any information on the geometry of the original problem, e.g., the discretization of a</span>
class="cmr-12">hierarchy of coarse-level matrices and operators, without explicitly using any</span>
<span
class="cmr-12">PDE. To this end, two different coarsening strategies, based on aggregation, are</span>
class="cmr-12">information on the geometry of the original problem, e.g., the discretization of a PDE.</span>
<span
class="cmr-12">To this end, two different coarsening strategies, based on aggregation, are</span>
<span
class="cmr-12">available:</span>
<ul class="itemize1">
@ -145,7 +150,7 @@ class="cmr-12">2</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#XVANEK_MANDEL_BREZINA"><span
class="cmr-12">28</span></a><span
class="cmr-12">29</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">, and already included in the previous versions of the</span>
<span
@ -153,13 +158,16 @@ class="cmr-12">package</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XBDDF2007"><span
class="cmr-12">9</span></a><span
class="cmr-12">10</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#XMLD2P4_TOMS"><span
class="cmr-12">8</span></a><span
class="cmr-12">9</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">;</span>
</li>
<li class="itemize"><span
class="cmr-12">the first parallel implementation of a coupled version of Coarsening based</span>
@ -168,25 +176,22 @@ class="cmr-12">on Compatible Weighted Matching introduced in</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XDV2013"><span
class="cmr-12">29</span></a><span
class="cmr-12">30</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#XDFV2018"><span
class="cmr-12">30</span></a><span
class="cmr-12">31</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">and described in</span>
<span
class="cmr-12">details in</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XDDF2020"><span
class="cmr-12">10</span></a><span
class="cmr-12">11</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">;</span></li></ul>
<!--l. 31--><p class="indent" > <span
<!--l. 32--><p class="indent" > <span
class="cmr-12">Either exact or approximate solvers can be used on the coarsest-level system.</span>
<span
class="cmr-12">Specifically, different sparse LU factorizations from external packages, native</span>
@ -198,7 +203,7 @@ class="cmr-12">Gauss-Seidel, block-Jacobi solvers and recursive call to precondi
class="cmr-12">methods are available. All the smoothers can be also exploited as one-level</span>
<span
class="cmr-12">preconditioners.</span>
<!--l. 35--><p class="indent" > <span
<!--l. 36--><p class="indent" > <span
class="cmr-12">AMG4PSBLAS is written in Fortran</span><span
class="cmr-12">&#x00A0;2003, following an object-oriented design</span>
<span
@ -213,52 +218,69 @@ class="cmr-12">Single and double precision implementations of AMG4PSBLAS are ava
class="cmr-12">for both the real and the complex case, which can be used through a single</span>
<span
class="cmr-12">interface.</span>
<!--l. 45--><p class="indent" > <span
class="cmr-12">AMG4PSBLAS has been designed to implement scalable and easy-to-use multilevel</span>
<!--l. 46--><p class="indent" > <span
class="cmr-12">AMG4PSBLAS has been designed to implement scalable and easy-to-use</span>
<span
class="cmr-12">preconditioners in the context of the PSBLAS (Parallel Sparse BLAS) computational</span>
class="cmr-12">multilevel preconditioners in the context of the PSBLAS (Parallel Sparse BLAS)</span>
<span
class="cmr-12">framework</span><span
class="cmr-12">computational framework</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#Xpsblas_00"><span
class="cmr-12">17</span></a><span
class="cmr-12">18</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#XPSBLAS3"><span
class="cmr-12">16</span></a><span
class="cmr-12">17</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">. PSBLAS provides basic linear algebra operators and data</span>
class="cmr-12">. PSBLAS provides basic linear algebra operators</span>
<span
class="cmr-12">and data management facilities for distributed sparse matrices, kernels for</span>
<span
class="cmr-12">sequential incomplete factorizations needed for the parallel block-Jacobi and</span>
<span
class="cmr-12">additive Schwarz smoothers, and parallel Krylov solvers which can be used with</span>
<span
class="cmr-12">the AMG4PSBLAS preconditioners. The choice of PSBLAS has been mainly</span>
<span
class="cmr-12">motivated by the need of having a portable and efficient software infrastructure</span>
<span
class="cmr-12">implementing &#8220;de facto&#8221; standard parallel sparse linear algebra kernels, to</span>
<span
class="cmr-12">management facilities for distributed sparse matrices, as well as parallel Krylov solvers</span>
class="cmr-12">pursue goals such as performance, portability, modularity ed extensibility</span>
<span
class="cmr-12">which can be used with the AMG4PSBLAS preconditioners. The choice of PSBLAS</span>
class="cmr-12">in the development of the preconditioner package. On the other hand, the</span>
<span
class="cmr-12">has been mainly motivated by the need of having a portable and efficient</span>
class="cmr-12">implementation of AMG4PSBLAS, which was driven by the need to face the exascale</span>
<span
class="cmr-12">software infrastructure implementing &#8220;de facto&#8221; standard parallel sparse linear</span>
class="cmr-12">challenge, has led to some important revisions and extentions of the PSBLAS</span>
<span
class="cmr-12">algebra kernels, to pursue goals such as performance, portability, modularity</span>
class="cmr-12">infrastructure. The inter-process comunication required by AMG4PSBLAS</span>
<span
class="cmr-12">ed extensibility in the development of the preconditioner package. On the</span>
class="cmr-12">is encapsulated in the PSBLAS routines; therefore, AMG4PSBLAS can be</span>
<span
class="cmr-12">other hand, the implementation of AMG4PSBLAS, which was driven by the</span>
class="cmr-12">run on any parallel machine where PSBLAS implementations are available.</span>
<span
class="cmr-12">need to face the exascale challenge, has led to some important revisions and</span>
class="cmr-12">In the most recent version of PSBLAS (release 3.7), a plug-in for GPU is</span>
<span
class="cmr-12">extentions of the PSBLAS infrastructure. The inter-process comunication</span>
class="cmr-12">included; it includes CUDA versions of main vector operations and of sparse</span>
<span
class="cmr-12">required by AMG4PSBLAS is encapsulated in the PSBLAS routines; therefore,</span>
class="cmr-12">matrix-vector multiplication, so that Krylov methods coupled with AMG4PBLAS</span>
<span
class="cmr-12">AMG4PSBLAS can be run on any parallel machine where PSBLAS implementations</span>
class="cmr-12">preconditioners relying on Jacobi and block-Jacobi smoothers with sparse</span>
<span
class="cmr-12">are available.</span>
<!--l. 60--><p class="indent" > <span
class="cmr-12">approximate inverses on the blocks can be efficiently executed on cluster of</span>
<span
class="cmr-12">GPUs.</span>
<!--l. 64--><p class="indent" > <span
class="cmr-12">AMG4PSBLAS has a layered and modular software architecture where three main</span>
<span
class="cmr-12">layers can be identified. The lower layer consists of the PSBLAS kernels, the middle</span>
<span
class="cmr-12">one implements the construction and application phases of the preconditioners, and the</span>
<span
class="cmr-12">upper one provides a uniform interface to all the preconditioners. This architecture</span>
<span
@ -275,7 +297,7 @@ class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x29-330007"><span
class="cmr-12">7</span><!--tex4ht:ref: sec:adding --></a><span
class="cmr-12">).</span>
<!--l. 71--><p class="indent" > <span
<!--l. 75--><p class="indent" > <span
class="cmr-12">This guide is organized as follows. General information on the distribution of the</span>
<span
class="cmr-12">source code is reported in Section</span><span
@ -291,9 +313,6 @@ class="cmr-12">3</span><!--tex4ht:ref: sec:building --></a><span
class="cmr-12">. The basics for building and applying the</span>
<span
class="cmr-12">preconditioners with the Krylov solvers implemented in PSBLAS are reported</span>
<span
class="cmr-12">in</span><span
class="cmr-12">&#x00A0;Section</span><span

@ -97,11 +97,11 @@ class="cmr-12">3</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#XStuben_01"><span
class="cmr-12">26</span></a><span
class="cmr-12">27</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#Xdd2_96"><span
class="cmr-12">24</span></a><span
class="cmr-12">25</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">for</span>
<span
@ -116,7 +116,7 @@ class="cmr-12">2</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#XVANEK_MANDEL_BREZINA"><span
class="cmr-12">28</span></a><span
class="cmr-12">29</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">, for building the sequence of coarse matrices and transfer</span>
<span
@ -130,7 +130,7 @@ class="cmr-12">is implemented, where the smoothed aggregation is applied locally
class="cmr-12">submatrix </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XTUMINARO_TONG"><span
class="cmr-12">27</span></a><span
class="cmr-12">28</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">. A brief description of the AMG preconditioners implemented in</span>
<span
@ -153,11 +153,11 @@ class="cmr-12">5</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#Xapnum_07"><span
class="cmr-12">7</span></a><span
class="cmr-12">8</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#XMLD2P4_TOMS"><span
class="cmr-12">8</span></a><span
class="cmr-12">9</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span>
<!--l. 47--><p class="indent" > <span

@ -38,7 +38,7 @@ class="cmr-12">multilevel (i.e., AMG) preconditioners with the Krylov solvers in
<span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">15</span></a><span
class="cmr-12">16</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">. The following steps are required:</span>
<ol class="enumerate1" >

@ -52,7 +52,7 @@ class="cmr-12">PSBLAS error handling routines; for further details see the PSBLA
<span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">15</span></a><span
class="cmr-12">16</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span>

@ -31,25 +31,61 @@ class="cmr-12">] </span></p></div>
class="cmr-12">A </span></span> <a
id="x31-35000A"></a><span
class="cmr-12">License</span></h3>
<!--l. 5--><p class="noindent" ><span
class="cmbx-12">DA CONTROLLARE E MODIFICARE INCLUDENDO I CREDITS A</span>
<span
class="cmbx-12">MLD2P4</span>
<!--l. 7--><p class="indent" > <span
class="cmr-12">The AMG4PSBLAS is freely distributable under the following copyright</span>
<span
class="cmr-12">terms:</span>
<!--l. 6--><p class="noindent" ><span
class="cmr-12">AMG4PSBLAS is freely distributable under the following copyright terms:</span>
<pre class="verbatim" id="verbatim-11">
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;AMG4PSBLAS&#x00A0;&#x00A0;version&#x00A0;1.0
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;Algebraic&#x00A0;MultiGrid&#x00A0;Preconditioners&#x00A0;Package
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;AMG4PSBLAS&#x00A0;version&#x00A0;1.0
&#x00A0;&#x00A0;&#x00A0;&#x00A0;Algebraic&#x00A0;Multigrid&#x00A0;Package
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;based&#x00A0;on&#x00A0;PSBLAS&#x00A0;(Parallel&#x00A0;Sparse&#x00A0;BLAS&#x00A0;version&#x00A0;3.7)
&#x00A0;&#x00A0;&#x00A0;&#x00A0;(C)&#x00A0;Copyright&#x00A0;2021
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;Salvatore&#x00A0;Filippone
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;Pasqua&#x00A0;D&#8217;Ambra
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;Fabio&#x00A0;Durastante
&#x00A0;&#x00A0;&#x00A0;&#x00A0;Redistribution&#x00A0;and&#x00A0;use&#x00A0;in&#x00A0;source&#x00A0;and&#x00A0;binary&#x00A0;forms,&#x00A0;with&#x00A0;or&#x00A0;without
&#x00A0;&#x00A0;&#x00A0;&#x00A0;modification,&#x00A0;are&#x00A0;permitted&#x00A0;provided&#x00A0;that&#x00A0;the&#x00A0;following&#x00A0;conditions
&#x00A0;&#x00A0;&#x00A0;&#x00A0;are&#x00A0;met:
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;1.&#x00A0;Redistributions&#x00A0;of&#x00A0;source&#x00A0;code&#x00A0;must&#x00A0;retain&#x00A0;the&#x00A0;above&#x00A0;copyright
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;notice,&#x00A0;this&#x00A0;list&#x00A0;of&#x00A0;conditions&#x00A0;and&#x00A0;the&#x00A0;following&#x00A0;disclaimer.
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;2.&#x00A0;Redistributions&#x00A0;in&#x00A0;binary&#x00A0;form&#x00A0;must&#x00A0;reproduce&#x00A0;the&#x00A0;above&#x00A0;copyright
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;notice,&#x00A0;this&#x00A0;list&#x00A0;of&#x00A0;conditions,&#x00A0;and&#x00A0;the&#x00A0;following&#x00A0;disclaimer&#x00A0;in&#x00A0;the
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;documentation&#x00A0;and/or&#x00A0;other&#x00A0;materials&#x00A0;provided&#x00A0;with&#x00A0;the&#x00A0;distribution.
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;3.&#x00A0;The&#x00A0;name&#x00A0;of&#x00A0;the&#x00A0;AMG4PSBLAS&#x00A0;group&#x00A0;or&#x00A0;the&#x00A0;names&#x00A0;of&#x00A0;its&#x00A0;contributors&#x00A0;may
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;not&#x00A0;be&#x00A0;used&#x00A0;to&#x00A0;endorse&#x00A0;or&#x00A0;promote&#x00A0;products&#x00A0;derived&#x00A0;from&#x00A0;this
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;software&#x00A0;without&#x00A0;specific&#x00A0;written&#x00A0;permission.
&#x00A0;&#x00A0;&#x00A0;&#x00A0;THIS&#x00A0;SOFTWARE&#x00A0;IS&#x00A0;PROVIDED&#x00A0;BY&#x00A0;THE&#x00A0;COPYRIGHT&#x00A0;HOLDERS&#x00A0;AND&#x00A0;CONTRIBUTORS
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#8216;&#8216;AS&#x00A0;IS&#8217;&#8217;&#x00A0;AND&#x00A0;ANY&#x00A0;EXPRESS&#x00A0;OR&#x00A0;IMPLIED&#x00A0;WARRANTIES,&#x00A0;INCLUDING,&#x00A0;BUT&#x00A0;NOT&#x00A0;LIMITED
&#x00A0;&#x00A0;&#x00A0;&#x00A0;TO,&#x00A0;THE&#x00A0;IMPLIED&#x00A0;WARRANTIES&#x00A0;OF&#x00A0;MERCHANTABILITY&#x00A0;AND&#x00A0;FITNESS&#x00A0;FOR&#x00A0;A&#x00A0;PARTICULAR
&#x00A0;&#x00A0;&#x00A0;&#x00A0;PURPOSE&#x00A0;ARE&#x00A0;DISCLAIMED.&#x00A0;IN&#x00A0;NO&#x00A0;EVENT&#x00A0;SHALL&#x00A0;THE&#x00A0;AMG4PSBLAS&#x00A0;GROUP&#x00A0;OR&#x00A0;ITS&#x00A0;CONTRIBUTORS
&#x00A0;&#x00A0;&#x00A0;&#x00A0;BE&#x00A0;LIABLE&#x00A0;FOR&#x00A0;ANY&#x00A0;DIRECT,&#x00A0;INDIRECT,&#x00A0;INCIDENTAL,&#x00A0;SPECIAL,&#x00A0;EXEMPLARY,&#x00A0;OR
&#x00A0;&#x00A0;&#x00A0;&#x00A0;CONSEQUENTIAL&#x00A0;DAMAGES&#x00A0;(INCLUDING,&#x00A0;BUT&#x00A0;NOT&#x00A0;LIMITED&#x00A0;TO,&#x00A0;PROCUREMENT&#x00A0;OF
&#x00A0;&#x00A0;&#x00A0;&#x00A0;SUBSTITUTE&#x00A0;GOODS&#x00A0;OR&#x00A0;SERVICES;&#x00A0;LOSS&#x00A0;OF&#x00A0;USE,&#x00A0;DATA,&#x00A0;OR&#x00A0;PROFITS;&#x00A0;OR&#x00A0;BUSINESS
&#x00A0;&#x00A0;&#x00A0;&#x00A0;INTERRUPTION)&#x00A0;HOWEVER&#x00A0;CAUSED&#x00A0;AND&#x00A0;ON&#x00A0;ANY&#x00A0;THEORY&#x00A0;OF&#x00A0;LIABILITY,&#x00A0;WHETHER&#x00A0;IN
&#x00A0;&#x00A0;&#x00A0;&#x00A0;CONTRACT,&#x00A0;STRICT&#x00A0;LIABILITY,&#x00A0;OR&#x00A0;TORT&#x00A0;(INCLUDING&#x00A0;NEGLIGENCE&#x00A0;OR&#x00A0;OTHERWISE)
&#x00A0;&#x00A0;&#x00A0;&#x00A0;ARISING&#x00A0;IN&#x00A0;ANY&#x00A0;WAY&#x00A0;OUT&#x00A0;OF&#x00A0;THE&#x00A0;USE&#x00A0;OF&#x00A0;THIS&#x00A0;SOFTWARE,&#x00A0;EVEN&#x00A0;IF&#x00A0;ADVISED&#x00A0;OF&#x00A0;THE
&#x00A0;&#x00A0;&#x00A0;&#x00A0;POSSIBILITY&#x00A0;OF&#x00A0;SUCH&#x00A0;DAMAGE.
</pre>
<!--l. 45--><p class="nopar" >
<!--l. 48--><p class="indent" > <span
class="cmr-12">AMG4PSBLAS is an evolution (a rather substantial one) of MLD2P4, whose license</span>
<span
class="cmr-12">we reproduce here to abide by its terms:</span>
<pre class="verbatim" id="verbatim-12">
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;MLD2P4&#x00A0;&#x00A0;version&#x00A0;2.2
&#x00A0;&#x00A0;MultiLevel&#x00A0;Domain&#x00A0;Decomposition&#x00A0;Parallel&#x00A0;Preconditioners&#x00A0;Package
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;based&#x00A0;on&#x00A0;PSBLAS&#x00A0;(Parallel&#x00A0;Sparse&#x00A0;BLAS&#x00A0;version&#x00A0;3.5)
&#x00A0;&#x00A0;(C)&#x00A0;Copyright&#x00A0;2008,&#x00A0;2010,&#x00A0;2012,&#x00A0;2015,&#x00A0;2017
&#x00A0;&#x00A0;Pasqua&#x00A0;D&#8217;Ambra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;IAC-CNR,&#x00A0;IT
&#x00A0;&#x00A0;Fabio&#x00A0;Durastante&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;University&#x00A0;of&#x00A0;Pisa&#x00A0;and&#x00A0;IAC-CNR,&#x00A0;IT
&#x00A0;&#x00A0;Salvatore&#x00A0;Filippone&#x00A0;&#x00A0;&#x00A0;&#x00A0;University&#x00A0;of&#x00A0;Rome&#x00A0;Tor-Vergata&#x00A0;and&#x00A0;IAC-CNR,&#x00A0;IT
&#x00A0;&#x00A0;(C)&#x00A0;Copyright&#x00A0;2008-2018
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;Salvatore&#x00A0;Filippone
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;Pasqua&#x00A0;D&#8217;Ambra
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;Daniela&#x00A0;di&#x00A0;Serafino
&#x00A0;&#x00A0;Redistribution&#x00A0;and&#x00A0;use&#x00A0;in&#x00A0;source&#x00A0;and&#x00A0;binary&#x00A0;forms,&#x00A0;with&#x00A0;or&#x00A0;without
&#x00A0;&#x00A0;modification,&#x00A0;are&#x00A0;permitted&#x00A0;provided&#x00A0;that&#x00A0;the&#x00A0;following&#x00A0;conditions
&#x00A0;&#x00A0;are&#x00A0;met:
@ -73,7 +109,7 @@ class="cmr-12">terms:</span>
&#x00A0;&#x00A0;ARISING&#x00A0;IN&#x00A0;ANY&#x00A0;WAY&#x00A0;OUT&#x00A0;OF&#x00A0;THE&#x00A0;USE&#x00A0;OF&#x00A0;THIS&#x00A0;SOFTWARE,&#x00A0;EVEN&#x00A0;IF&#x00A0;ADVISED&#x00A0;OF&#x00A0;THE
&#x00A0;&#x00A0;POSSIBILITY&#x00A0;OF&#x00A0;SUCH&#x00A0;DAMAGE.
</pre>
<!--l. 45--><p class="nopar" >
<!--l. 89--><p class="nopar" >

@ -36,15 +36,15 @@ class="cmbx-12">BLAS</span> </dt><dd
class="description"><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#Xblas3"><span
class="cmr-12">13</span></a><span
class="cmr-12">14</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#Xblas2"><span
class="cmr-12">14</span></a><span
class="cmr-12">15</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#Xblas1"><span
class="cmr-12">20</span></a><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">Many vendors provide optimized versions of BLAS; if no</span>
<span
@ -90,11 +90,11 @@ class="cmbx-12">MPI</span> </dt><dd
class="description"><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XMPI2"><span
class="cmr-12">19</span></a><span
class="cmr-12">20</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#XMPI1"><span
class="cmr-12">25</span></a><span
class="cmr-12">26</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">A version of MPI is available on most high-performance computing</span>
<span
@ -105,11 +105,11 @@ class="cmbx-12">PSBLAS</span> </dt><dd
class="description"><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">15</span></a><span
class="cmr-12">16</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#Xpsblas_00"><span
class="cmr-12">17</span></a><span
class="cmr-12">18</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">Parallel Sparse BLAS (PSBLAS) is available from</span>
<a

File diff suppressed because it is too large Load Diff

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 561--><div class="crosslinks"><p class="noindent"><span
<!--l. 572--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu13.html" ><span
class="cmr-12">next</span></a><span
@ -34,12 +34,12 @@ class="cmr-12">Method hierarchy</span><span
class="cmr-12">_build</span></h4>
<div class="center"
>
<!--l. 563--><p class="noindent" >
<!--l. 564--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
<!--l. 574--><p class="noindent" >
<!--l. 575--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%hierarchy_build(a,desc_a,info)</span></span></span><br />
</div>
<!--l. 567--><p class="noindent" ><span
<!--l. 578--><p class="noindent" ><span
class="cmr-12">This method builds the hierarchy of matrices and restriction/prolongation operators for</span>
<span
class="cmr-12">the multilevel preconditioner </span><span class="obeylines-h"><span class="verb"><span
@ -51,7 +51,7 @@ class="cmtt-12">init</span></span></span> <span
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">set</span></span></span><span
class="cmr-12">.</span>
<!--l. 572--><p class="noindent" ><span
<!--l. 583--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-11" class="tabular"
cellspacing="0" cellpadding="0"
@ -59,9 +59,9 @@ cellspacing="0" cellpadding="0"
id="TBL-11-1"><col
id="TBL-11-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-11-1-"><td style="white-space:normal; text-align:left;" id="TBL-11-1-1"
class="td11"><!--l. 575--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 586--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">a</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-11-1-2"
class="td11"><!--l. 575--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 586--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">type(psb_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">spmat_type),</span><span
@ -69,8 +69,8 @@ class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-11-2-"><td style="white-space:normal; text-align:left;" id="TBL-11-2-1"
class="td11"><!--l. 576--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-2-2"
class="td11"><!--l. 576--><p class="noindent" ><span
class="td11"><!--l. 587--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-2-2"
class="td11"><!--l. 587--><p class="noindent" ><span
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
<span
class="cmr-12">to be preconditioned. Note that </span><span
@ -82,21 +82,21 @@ class="cmr-12">real/complex, single/double precision version of AMG4PSBLAS<
class="cmr-12">under use. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">15</span></a><span
class="cmr-12">16</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-11-3-"><td style="white-space:normal; text-align:left;" id="TBL-11-3-1"
class="td11"><!--l. 581--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 592--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">desc_a</span></span></span></td><td style="white-space:normal; text-align:left;" id="TBL-11-3-2"
class="td11"><!--l. 581--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 592--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">type(psb_desc_type),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-11-4-"><td style="white-space:normal; text-align:left;" id="TBL-11-4-1"
class="td11"><!--l. 582--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-4-2"
class="td11"><!--l. 582--><p class="noindent" ><span
class="td11"><!--l. 593--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-4-2"
class="td11"><!--l. 593--><p class="noindent" ><span
class="cmr-12">The communication descriptor of </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">a</span></span></span><span
class="cmr-12">. See the PSBLAS User&#8217;s Guide</span>
@ -104,21 +104,21 @@ class="cmr-12">. See the PSBLAS User&#8217;s Guide</span>
class="cmr-12">for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">15</span></a><span
class="cmr-12">16</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-11-5-"><td style="white-space:normal; text-align:left;" id="TBL-11-5-1"
class="td11"><!--l. 585--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 596--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">info</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-11-5-2"
class="td11"><!--l. 585--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 596--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-11-6-"><td style="white-space:normal; text-align:left;" id="TBL-11-6-1"
class="td11"><!--l. 586--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-6-2"
class="td11"><!--l. 586--><p class="noindent" ><span
class="td11"><!--l. 597--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-6-2"
class="td11"><!--l. 597--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span
@ -133,7 +133,7 @@ class="td11"> </td> </tr></table></div>
<!--l. 592--><div class="crosslinks"><p class="noindent"><span
<!--l. 603--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu13.html" ><span
class="cmr-12">next</span></a><span
@ -150,6 +150,6 @@ class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu12.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 592--><p class="indent" > <a
<!--l. 603--><p class="indent" > <a
id="tailuserhtmlsu12.html"></a>
</body></html>

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 592--><div class="crosslinks"><p class="noindent"><span
<!--l. 603--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu14.html" ><span
class="cmr-12">next</span></a><span
@ -34,12 +34,12 @@ class="cmr-12">Method smoothers</span><span
class="cmr-12">_build</span></h4>
<div class="center"
>
<!--l. 595--><p class="noindent" >
<!--l. 596--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
<!--l. 606--><p class="noindent" >
<!--l. 607--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%smoothers_build(a,desc_a,p,info[,amold,vmold,imold])</span></span></span><br />
</div>
<!--l. 599--><p class="noindent" ><span
<!--l. 610--><p class="noindent" ><span
class="cmr-12">This method builds the smoothers and the coarsest-level solvers for the multilevel</span>
<span
class="cmr-12">preconditioner </span><span class="obeylines-h"><span class="verb"><span
@ -57,7 +57,7 @@ class="cmr-12">&#x00A0;</span><a
href="userhtmlsu12.html#x22-210006.3"><span
class="cmr-12">6.3</span><!--tex4ht:ref: sec:hier_bld --></a><span
class="cmr-12">).</span>
<!--l. 606--><p class="noindent" ><span
<!--l. 617--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-12" class="tabular"
cellspacing="0" cellpadding="0"
@ -65,9 +65,9 @@ cellspacing="0" cellpadding="0"
id="TBL-12-1"><col
id="TBL-12-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-12-1-"><td style="white-space:normal; text-align:left;" id="TBL-12-1-1"
class="td11"><!--l. 609--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 620--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">a</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-1-2"
class="td11"><!--l. 609--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 620--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">type(psb_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">spmat_type),</span><span
@ -75,8 +75,8 @@ class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-2-"><td style="white-space:normal; text-align:left;" id="TBL-12-2-1"
class="td11"><!--l. 610--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-2-2"
class="td11"><!--l. 610--><p class="noindent" ><span
class="td11"><!--l. 621--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-2-2"
class="td11"><!--l. 621--><p class="noindent" ><span
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
<span
class="cmr-12">to be preconditioned. Note that </span><span
@ -88,21 +88,21 @@ class="cmr-12">real/complex, single/double precision version of AMG4PSBLAS<
class="cmr-12">under use. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">15</span></a><span
class="cmr-12">16</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-3-"><td style="white-space:normal; text-align:left;" id="TBL-12-3-1"
class="td11"><!--l. 614--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 625--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">desc_a</span></span></span></td><td style="white-space:normal; text-align:left;" id="TBL-12-3-2"
class="td11"><!--l. 614--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 625--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">type(psb_desc_type),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-4-"><td style="white-space:normal; text-align:left;" id="TBL-12-4-1"
class="td11"><!--l. 615--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-4-2"
class="td11"><!--l. 615--><p class="noindent" ><span
class="td11"><!--l. 626--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-4-2"
class="td11"><!--l. 626--><p class="noindent" ><span
class="cmr-12">The communication descriptor of </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">a</span></span></span><span
class="cmr-12">. See the PSBLAS User&#8217;s Guide</span>
@ -110,21 +110,21 @@ class="cmr-12">. See the PSBLAS User&#8217;s Guide</span>
class="cmr-12">for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">15</span></a><span
class="cmr-12">16</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-5-"><td style="white-space:normal; text-align:left;" id="TBL-12-5-1"
class="td11"><!--l. 617--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 628--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">info</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-5-2"
class="td11"><!--l. 617--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 628--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-6-"><td style="white-space:normal; text-align:left;" id="TBL-12-6-1"
class="td11"><!--l. 618--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-6-2"
class="td11"><!--l. 618--><p class="noindent" ><span
class="td11"><!--l. 629--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-6-2"
class="td11"><!--l. 629--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span
@ -132,9 +132,9 @@ class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-7-"><td style="white-space:normal; text-align:left;" id="TBL-12-7-1"
class="td11"><!--l. 619--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 630--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amold</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-7-2"
class="td11"><!--l. 619--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 630--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">class(psb_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">_base_sparse_mat),</span><span
@ -143,8 +143,8 @@ class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-8-"><td style="white-space:normal; text-align:left;" id="TBL-12-8-1"
class="td11"><!--l. 620--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-8-2"
class="td11"><!--l. 620--><p class="noindent" ><span
class="td11"><!--l. 631--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-8-2"
class="td11"><!--l. 631--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
<span
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
@ -152,14 +152,14 @@ class="cmr-12">allows e.g. running on GPUs; it needs not be the same
class="cmr-12">processes. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">15</span></a><span
class="cmr-12">16</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-9-"><td style="white-space:normal; text-align:left;" id="TBL-12-9-1"
class="td11"><!--l. 624--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 635--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">vmold</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-9-2"
class="td11"><!--l. 624--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 635--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">class(psb_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">_base_vect_type),</span><span
@ -168,24 +168,24 @@ class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-10-"><td style="white-space:normal; text-align:left;" id="TBL-12-10-1"
class="td11"><!--l. 625--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-10-2"
class="td11"><!--l. 625--><p class="noindent" ><span
class="td11"><!--l. 636--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-10-2"
class="td11"><!--l. 636--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal vector components; this</span>
<span
class="cmr-12">allows e.g. running on GPUs.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-11-"><td style="white-space:normal; text-align:left;" id="TBL-12-11-1"
class="td11"><!--l. 627--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 638--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">imold</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-11-2"
class="td11"><!--l. 627--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 638--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">class(psb_i_base_vect_type),</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-12-"><td style="white-space:normal; text-align:left;" id="TBL-12-12-1"
class="td11"><!--l. 628--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-12-2"
class="td11"><!--l. 628--><p class="noindent" ><span
class="td11"><!--l. 639--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-12-2"
class="td11"><!--l. 639--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal integer vector components;</span>
<span
class="cmr-12">this allows e.g. running on GPUs.</span> </td>
@ -198,7 +198,7 @@ class="td11"> </td> </tr></table></div>
<!--l. 634--><div class="crosslinks"><p class="noindent"><span
<!--l. 645--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu14.html" ><span
class="cmr-12">next</span></a><span
@ -215,6 +215,6 @@ class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu13.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 634--><p class="indent" > <a
<!--l. 645--><p class="indent" > <a
id="tailuserhtmlsu13.html"></a>
</body></html>

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 634--><div class="crosslinks"><p class="noindent"><span
<!--l. 645--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu15.html" ><span
class="cmr-12">next</span></a><span
@ -33,12 +33,12 @@ class="cmr-12">6.5 </span></span> <a
class="cmr-12">Method build</span></h4>
<div class="center"
>
<!--l. 636--><p class="noindent" >
<!--l. 637--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
<!--l. 647--><p class="noindent" >
<!--l. 648--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%build(a,desc_a,info[,amold,vmold,imold])</span></span></span><br />
</div>
<!--l. 640--><p class="noindent" ><span
<!--l. 651--><p class="noindent" ><span
class="cmr-12">This method builds the preconditioner </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">p</span></span></span> <span
class="cmr-12">according to the requirements made by the</span>
@ -67,7 +67,7 @@ class="cmtt-12">smoothers_build</span></span></span><span
class="cmr-12">, whose nomenclature would however be somewhat unnatural when</span>
<span
class="cmr-12">dealing with simple one-level preconditioners.</span>
<!--l. 650--><p class="noindent" ><span
<!--l. 661--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-13" class="tabular"
cellspacing="0" cellpadding="0"
@ -75,9 +75,9 @@ cellspacing="0" cellpadding="0"
id="TBL-13-1"><col
id="TBL-13-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-13-1-"><td style="white-space:normal; text-align:left;" id="TBL-13-1-1"
class="td11"><!--l. 653--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 664--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">a</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-1-2"
class="td11"><!--l. 653--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 664--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">type(psb_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">spmat_type),</span><span
@ -85,8 +85,8 @@ class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-2-"><td style="white-space:normal; text-align:left;" id="TBL-13-2-1"
class="td11"><!--l. 654--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-2-2"
class="td11"><!--l. 654--><p class="noindent" ><span
class="td11"><!--l. 665--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-2-2"
class="td11"><!--l. 665--><p class="noindent" ><span
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
<span
class="cmr-12">to be preconditioned. Note that </span><span
@ -98,21 +98,21 @@ class="cmr-12">real/complex, single/double precision version of AMG4PSBLAS<
class="cmr-12">under use. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">15</span></a><span
class="cmr-12">16</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-3-"><td style="white-space:normal; text-align:left;" id="TBL-13-3-1"
class="td11"><!--l. 658--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 669--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">desc_a</span></span></span></td><td style="white-space:normal; text-align:left;" id="TBL-13-3-2"
class="td11"><!--l. 658--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 669--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">type(psb_desc_type),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-4-"><td style="white-space:normal; text-align:left;" id="TBL-13-4-1"
class="td11"><!--l. 659--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-4-2"
class="td11"><!--l. 659--><p class="noindent" ><span
class="td11"><!--l. 670--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-4-2"
class="td11"><!--l. 670--><p class="noindent" ><span
class="cmr-12">The communication descriptor of </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">a</span></span></span><span
class="cmr-12">. See the PSBLAS User&#8217;s Guide</span>
@ -120,21 +120,21 @@ class="cmr-12">. See the PSBLAS User&#8217;s Guide</span>
class="cmr-12">for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">15</span></a><span
class="cmr-12">16</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-5-"><td style="white-space:normal; text-align:left;" id="TBL-13-5-1"
class="td11"><!--l. 661--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 672--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">info</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-5-2"
class="td11"><!--l. 661--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 672--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-6-"><td style="white-space:normal; text-align:left;" id="TBL-13-6-1"
class="td11"><!--l. 662--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-6-2"
class="td11"><!--l. 662--><p class="noindent" ><span
class="td11"><!--l. 673--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-6-2"
class="td11"><!--l. 673--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span
@ -142,9 +142,9 @@ class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-7-"><td style="white-space:normal; text-align:left;" id="TBL-13-7-1"
class="td11"><!--l. 663--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 674--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amold</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-7-2"
class="td11"><!--l. 663--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 674--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">class(psb_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">_base_sparse_mat),</span><span
@ -153,8 +153,8 @@ class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-8-"><td style="white-space:normal; text-align:left;" id="TBL-13-8-1"
class="td11"><!--l. 664--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-8-2"
class="td11"><!--l. 664--><p class="noindent" ><span
class="td11"><!--l. 675--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-8-2"
class="td11"><!--l. 675--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
<span
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
@ -162,14 +162,14 @@ class="cmr-12">allows e.g. running on GPUs; it needs not be the same
class="cmr-12">processes. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">15</span></a><span
class="cmr-12">16</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-9-"><td style="white-space:normal; text-align:left;" id="TBL-13-9-1"
class="td11"><!--l. 668--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 679--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">vmold</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-9-2"
class="td11"><!--l. 668--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 679--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">class(psb_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">_base_vect_type),</span><span
@ -178,31 +178,31 @@ class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-10-"><td style="white-space:normal; text-align:left;" id="TBL-13-10-1"
class="td11"><!--l. 669--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-10-2"
class="td11"><!--l. 669--><p class="noindent" ><span
class="td11"><!--l. 680--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-10-2"
class="td11"><!--l. 680--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal vector components; this</span>
<span
class="cmr-12">allows e.g. running on GPUs.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-11-"><td style="white-space:normal; text-align:left;" id="TBL-13-11-1"
class="td11"><!--l. 671--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 682--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">imold</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-11-2"
class="td11"><!--l. 671--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 682--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">class(psb_i_base_vect_type),</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-12-"><td style="white-space:normal; text-align:left;" id="TBL-13-12-1"
class="td11"><!--l. 672--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-12-2"
class="td11"><!--l. 672--><p class="noindent" ><span
class="td11"><!--l. 683--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-12-2"
class="td11"><!--l. 683--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal integer vector components;</span>
<span
class="cmr-12">this allows e.g. running on GPUs.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-13-"><td style="white-space:normal; text-align:left;" id="TBL-13-13-1"
class="td11"> </td> </tr></table></div>
<!--l. 677--><p class="noindent" ><span
<!--l. 688--><p class="noindent" ><span
class="cmr-12">The method can be used to build multilevel preconditioners too.</span>
@ -210,7 +210,7 @@ class="cmr-12">The method can be used to build multilevel preconditioners too.</
<!--l. 682--><div class="crosslinks"><p class="noindent"><span
<!--l. 693--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu15.html" ><span
class="cmr-12">next</span></a><span
@ -227,6 +227,6 @@ class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu14.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 682--><p class="indent" > <a
<!--l. 693--><p class="indent" > <a
id="tailuserhtmlsu14.html"></a>
</body></html>

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 682--><div class="crosslinks"><p class="noindent"><span
<!--l. 693--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu16.html" ><span
class="cmr-12">next</span></a><span
@ -33,13 +33,13 @@ class="cmr-12">6.6 </span></span> <a
class="cmr-12">Method apply</span></h4>
<div class="center"
>
<!--l. 684--><p class="noindent" >
<!--l. 685--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
<!--l. 695--><p class="noindent" >
<!--l. 696--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%apply(x,y,desc_a,info</span><span
class="cmtt-12">&#x00A0;[,trans,work])</span></span></span><br />
</div>
<!--l. 688--><p class="noindent" ><span
<!--l. 699--><p class="noindent" ><span
class="cmr-12">This method computes </span><span
class="cmmi-12">y </span><span
class="cmr-12">= </span><span
@ -71,7 +71,7 @@ class="cmtt-12">psb_krylov</span></span></span> <span
class="cmr-12">and hence it is</span>
<span
class="cmr-12">completely transparent to the user.</span>
<!--l. 697--><p class="noindent" ><span
<!--l. 708--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-14" class="tabular"
cellspacing="0" cellpadding="0"
@ -79,9 +79,9 @@ cellspacing="0" cellpadding="0"
id="TBL-14-1"><col
id="TBL-14-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-14-1-"><td style="white-space:normal; text-align:left;" id="TBL-14-1-1"
class="td11"><!--l. 700--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 711--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">x</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-1-2"
class="td11"><!--l. 700--><p class="noindent" ><span
class="td11"><!--l. 711--><p class="noindent" ><span
class="cmti-12">type</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">(</span></span></span><span
class="cmti-12">kind</span><span
@ -92,8 +92,8 @@ class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-2-"><td style="white-space:normal; text-align:left;" id="TBL-14-2-1"
class="td11"><!--l. 701--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-2-2"
class="td11"><!--l. 701--><p class="noindent" ><span
class="td11"><!--l. 712--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-2-2"
class="td11"><!--l. 712--><p class="noindent" ><span
class="cmr-12">The local part of the vector </span><span
class="cmmi-12">x</span><span
class="cmr-12">. Note that </span><span
@ -107,9 +107,9 @@ class="cmr-12">must be chosen according to the real/complex, single/doubl
class="cmr-12">precision version of AMG4PSBLAS under use.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-3-"><td style="white-space:normal; text-align:left;" id="TBL-14-3-1"
class="td11"><!--l. 704--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 715--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">y</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-3-2"
class="td11"><!--l. 704--><p class="noindent" ><span
class="td11"><!--l. 715--><p class="noindent" ><span
class="cmti-12">type</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">(</span></span></span><span
class="cmti-12">kind</span><span
@ -120,8 +120,8 @@ class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-4-"><td style="white-space:normal; text-align:left;" id="TBL-14-4-1"
class="td11"><!--l. 705--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-4-2"
class="td11"><!--l. 705--><p class="noindent" ><span
class="td11"><!--l. 716--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-4-2"
class="td11"><!--l. 716--><p class="noindent" ><span
class="cmr-12">The local part of the vector </span><span
class="cmmi-12">y</span><span
class="cmr-12">. Note that </span><span
@ -135,31 +135,31 @@ class="cmr-12">must be chosen according to the real/complex, single/doubl
class="cmr-12">precision version of AMG4PSBLAS under use.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-5-"><td style="white-space:normal; text-align:left;" id="TBL-14-5-1"
class="td11"><!--l. 708--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 719--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">desc_a</span></span></span></td><td style="white-space:normal; text-align:left;" id="TBL-14-5-2"
class="td11"><!--l. 708--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 719--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">type(psb_desc_type),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-6-"><td style="white-space:normal; text-align:left;" id="TBL-14-6-1"
class="td11"><!--l. 709--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-6-2"
class="td11"><!--l. 709--><p class="noindent" ><span
class="td11"><!--l. 720--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-6-2"
class="td11"><!--l. 720--><p class="noindent" ><span
class="cmr-12">The communication descriptor associated to the matrix to be</span>
<span
class="cmr-12">preconditioned.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-7-"><td style="white-space:normal; text-align:left;" id="TBL-14-7-1"
class="td11"><!--l. 711--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 722--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">info</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-7-2"
class="td11"><!--l. 711--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 722--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-8-"><td style="white-space:normal; text-align:left;" id="TBL-14-8-1"
class="td11"><!--l. 712--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-8-2"
class="td11"><!--l. 712--><p class="noindent" ><span
class="td11"><!--l. 723--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-8-2"
class="td11"><!--l. 723--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span
@ -167,16 +167,16 @@ class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-9-"><td style="white-space:normal; text-align:left;" id="TBL-14-9-1"
class="td11"><!--l. 713--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 724--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">trans</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-9-2"
class="td11"><!--l. 713--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 724--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">character(len=1),</span><span
class="cmtt-12">&#x00A0;optional,</span><span
class="cmtt-12">&#x00A0;intent(in).</span></span></span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-10-"><td style="white-space:normal; text-align:left;" id="TBL-14-10-1"
class="td11"><!--l. 714--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-10-2"
class="td11"><!--l. 714--><p class="noindent" ><span
class="td11"><!--l. 725--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-10-2"
class="td11"><!--l. 725--><p class="noindent" ><span
class="cmr-12">If </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">trans</span></span></span> <span
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span
@ -232,9 +232,9 @@ class="cmr-8">1</span></sup><span
class="cmr-12">).</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-11-"><td style="white-space:normal; text-align:left;" id="TBL-14-11-1"
class="td11"><!--l. 718--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 729--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">work</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-11-2"
class="td11"><!--l. 718--><p class="noindent" ><span
class="td11"><!--l. 729--><p class="noindent" ><span
class="cmti-12">type</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">(</span></span></span><span
class="cmti-12">kind</span><span
@ -246,8 +246,8 @@ class="cmtt-12">&#x00A0;target</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-12-"><td style="white-space:normal; text-align:left;" id="TBL-14-12-1"
class="td11"><!--l. 719--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-12-2"
class="td11"><!--l. 719--><p class="noindent" ><span
class="td11"><!--l. 730--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-12-2"
class="td11"><!--l. 730--><p class="noindent" ><span
class="cmr-12">Workspace. Its size should be at least </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">4</span><span
class="cmtt-12">&#x00A0;*</span><span
@ -272,7 +272,7 @@ class="td11"> </td> </tr></table></div>
<!--l. 728--><div class="crosslinks"><p class="noindent"><span
<!--l. 739--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu16.html" ><span
class="cmr-12">next</span></a><span
@ -289,6 +289,6 @@ class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu15.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 728--><p class="indent" > <a
<!--l. 739--><p class="indent" > <a
id="tailuserhtmlsu15.html"></a>
</body></html>

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 728--><div class="crosslinks"><p class="noindent"><span
<!--l. 739--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu17.html" ><span
class="cmr-12">next</span></a><span
@ -33,16 +33,16 @@ class="cmr-12">6.7 </span></span> <a
class="cmr-12">Method free</span></h4>
<div class="center"
>
<!--l. 730--><p class="noindent" >
<!--l. 731--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
<!--l. 741--><p class="noindent" >
<!--l. 742--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%free(p,info)</span></span></span><br />
</div>
<!--l. 734--><p class="noindent" ><span
<!--l. 745--><p class="noindent" ><span
class="cmr-12">This method deallocates the preconditioner data structure </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">p</span></span></span><span
class="cmr-12">.</span>
<!--l. 737--><p class="noindent" ><span
<!--l. 748--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-15" class="tabular"
cellspacing="0" cellpadding="0"
@ -50,16 +50,16 @@ cellspacing="0" cellpadding="0"
id="TBL-15-1"><col
id="TBL-15-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-15-1-"><td style="white-space:normal; text-align:left;" id="TBL-15-1-1"
class="td11"><!--l. 740--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 751--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">info</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-15-1-2"
class="td11"><!--l. 740--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 751--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-2-"><td style="white-space:normal; text-align:left;" id="TBL-15-2-1"
class="td11"><!--l. 741--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-2-2"
class="td11"><!--l. 741--><p class="noindent" ><span
class="td11"><!--l. 752--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-2-2"
class="td11"><!--l. 752--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span
@ -76,7 +76,7 @@ class="td11"> </td> </tr></table></div>
<!--l. 747--><div class="crosslinks"><p class="noindent"><span
<!--l. 758--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu17.html" ><span
class="cmr-12">next</span></a><span
@ -93,6 +93,6 @@ class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu16.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 747--><p class="indent" > <a
<!--l. 758--><p class="indent" > <a
id="tailuserhtmlsu16.html"></a>
</body></html>

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 747--><div class="crosslinks"><p class="noindent"><span
<!--l. 758--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu18.html" ><span
class="cmr-12">next</span></a><span
@ -33,13 +33,13 @@ class="cmr-12">6.8 </span></span> <a
class="cmr-12">Method descr</span></h4>
<div class="center"
>
<!--l. 749--><p class="noindent" >
<!--l. 750--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
<!--l. 760--><p class="noindent" >
<!--l. 761--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%descr(info,</span><span
class="cmtt-12">&#x00A0;[iout])</span></span></span><br />
</div>
<!--l. 753--><p class="noindent" ><span
<!--l. 764--><p class="noindent" ><span
class="cmr-12">This method prints a description of the preconditioner </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">p</span></span></span> <span
class="cmr-12">to the standard output or to a</span>
@ -53,7 +53,7 @@ class="cmtt-12">build</span></span></span><span
class="cmr-12">, have</span>
<span
class="cmr-12">been called.</span>
<!--l. 758--><p class="noindent" ><span
<!--l. 769--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-16" class="tabular"
cellspacing="0" cellpadding="0"
@ -61,16 +61,16 @@ cellspacing="0" cellpadding="0"
id="TBL-16-1"><col
id="TBL-16-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-16-1-"><td style="white-space:normal; text-align:left;" id="TBL-16-1-1"
class="td11"><!--l. 761--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 772--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">info</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-1-2"
class="td11"><!--l. 761--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 772--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-16-2-"><td style="white-space:normal; text-align:left;" id="TBL-16-2-1"
class="td11"><!--l. 762--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-2-2"
class="td11"><!--l. 762--><p class="noindent" ><span
class="td11"><!--l. 773--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-2-2"
class="td11"><!--l. 773--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span
@ -78,17 +78,17 @@ class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-16-3-"><td style="white-space:normal; text-align:left;" id="TBL-16-3-1"
class="td11"><!--l. 763--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 774--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">iout</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-3-2"
class="td11"><!--l. 763--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 774--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-16-4-"><td style="white-space:normal; text-align:left;" id="TBL-16-4-1"
class="td11"><!--l. 764--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-4-2"
class="td11"><!--l. 764--><p class="noindent" ><span
class="td11"><!--l. 775--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-4-2"
class="td11"><!--l. 775--><p class="noindent" ><span
class="cmr-12">The id of the file where the preconditioner description will be</span>
<span
class="cmr-12">printed; the default is the standard output.</span> </td>
@ -98,7 +98,7 @@ class="td11"> </td> </tr></table></div>
<!--l. 769--><div class="crosslinks"><p class="noindent"><span
<!--l. 780--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu18.html" ><span
class="cmr-12">next</span></a><span
@ -115,6 +115,6 @@ class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu17.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 769--><p class="indent" > <a
<!--l. 780--><p class="indent" > <a
id="tailuserhtmlsu17.html"></a>
</body></html>

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 769--><div class="crosslinks"><p class="noindent"><span
<!--l. 780--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu17.html" ><span
class="cmr-12">prev</span></a><span
@ -28,25 +28,25 @@ class="cmr-12">] </span></p></div>
class="cmr-12">6.9 </span></span> <a
id="x28-270006.9"></a><span
class="cmr-12">Auxiliary Methods</span></h4>
<!--l. 770--><p class="noindent" ><span
<!--l. 781--><p class="noindent" ><span
class="cmr-12">Various functionalities are implemented as additional methods of the preconditioner</span>
<span
class="cmr-12">object.</span>
<!--l. 773--><p class="noindent" >
<!--l. 784--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">6.9.1 </span></span> <a
id="x28-280006.9.1"></a><span
class="cmr-12">Method: dump</span></h5>
<div class="center"
>
<!--l. 775--><p class="noindent" >
<!--l. 776--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
<!--l. 786--><p class="noindent" >
<!--l. 787--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%dump(info[,istart,iend,prefix,head,ac,rp,smoother,solver,global_num])</span></span></span><br />
</div>
<!--l. 779--><p class="noindent" ><span
<!--l. 790--><p class="noindent" ><span
class="cmr-12">Dump on file.</span>
<!--l. 782--><p class="noindent" ><span
<!--l. 793--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-17" class="tabular"
cellspacing="0" cellpadding="0"
@ -54,16 +54,16 @@ cellspacing="0" cellpadding="0"
id="TBL-17-1"><col
id="TBL-17-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-17-1-"><td style="white-space:normal; text-align:left;" id="TBL-17-1-1"
class="td11"><!--l. 785--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 796--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">info</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-17-1-2"
class="td11"><!--l. 785--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 796--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-17-2-"><td style="white-space:normal; text-align:left;" id="TBL-17-2-1"
class="td11"><!--l. 786--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-2-2"
class="td11"><!--l. 786--><p class="noindent" ><span
class="td11"><!--l. 797--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-2-2"
class="td11"><!--l. 797--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span
@ -71,9 +71,9 @@ class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-17-3-"><td style="white-space:normal; text-align:left;" id="TBL-17-3-1"
class="td11"><!--l. 787--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 798--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amold</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-17-3-2"
class="td11"><!--l. 787--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 798--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">class(psb_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">_base_sparse_mat),</span><span
@ -82,8 +82,8 @@ class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-17-4-"><td style="white-space:normal; text-align:left;" id="TBL-17-4-1"
class="td11"><!--l. 788--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-4-2"
class="td11"><!--l. 788--><p class="noindent" ><span
class="td11"><!--l. 799--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-4-2"
class="td11"><!--l. 799--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
<span
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
@ -91,30 +91,30 @@ class="cmr-12">allows e.g. running on GPUs; it needs not be the same
class="cmr-12">processes. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">15</span></a><span
class="cmr-12">16</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-17-5-"><td style="white-space:normal; text-align:left;" id="TBL-17-5-1"
class="td11"> </td> </tr></table></div>
<!--l. 795--><p class="noindent" >
<!--l. 806--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">6.9.2 </span></span> <a
id="x28-290006.9.2"></a><span
class="cmr-12">Method: clone</span></h5>
<div class="center"
>
<!--l. 797--><p class="noindent" >
<!--l. 798--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
<!--l. 808--><p class="noindent" >
<!--l. 809--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%clone(pout,info)</span></span></span><br />
</div>
<!--l. 801--><p class="noindent" ><span
<!--l. 812--><p class="noindent" ><span
class="cmr-12">Create a (deep) copy of the preconditioner object.</span>
<!--l. 804--><p class="noindent" ><span
<!--l. 815--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-18" class="tabular"
cellspacing="0" cellpadding="0"
@ -122,9 +122,9 @@ cellspacing="0" cellpadding="0"
id="TBL-18-1"><col
id="TBL-18-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-18-1-"><td style="white-space:normal; text-align:left;" id="TBL-18-1-1"
class="td11"><!--l. 807--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 818--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">pout</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-18-1-2"
class="td11"><!--l. 807--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 818--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">type(amg_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">prec_type),</span><span
@ -132,8 +132,8 @@ class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-18-2-"><td style="white-space:normal; text-align:left;" id="TBL-18-2-1"
class="td11"><!--l. 808--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-18-2-2"
class="td11"><!--l. 808--><p class="noindent" ><span
class="td11"><!--l. 819--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-18-2-2"
class="td11"><!--l. 819--><p class="noindent" ><span
class="cmr-12">The copy of the preconditioner data structure. Note that </span><span
class="cmti-12">x </span><span
class="cmr-12">must</span>
@ -143,16 +143,16 @@ class="cmr-12">be chosen according to the real/complex, single/double precision<
class="cmr-12">version of AMG4PSBLAS under use.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-18-3-"><td style="white-space:normal; text-align:left;" id="TBL-18-3-1"
class="td11"><!--l. 811--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 822--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">info</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-18-3-2"
class="td11"><!--l. 811--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 822--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-18-4-"><td style="white-space:normal; text-align:left;" id="TBL-18-4-1"
class="td11"><!--l. 812--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-18-4-2"
class="td11"><!--l. 812--><p class="noindent" ><span
class="td11"><!--l. 823--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-18-4-2"
class="td11"><!--l. 823--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span
@ -161,23 +161,23 @@ class="cmr-12">for details.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-18-5-"><td style="white-space:normal; text-align:left;" id="TBL-18-5-1"
class="td11"> </td> </tr></table></div>
<!--l. 817--><p class="noindent" >
<!--l. 828--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">6.9.3 </span></span> <a
id="x28-300006.9.3"></a><span
class="cmr-12">Method: sizeof</span></h5>
<div class="center"
>
<!--l. 819--><p class="noindent" >
<!--l. 820--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
<!--l. 830--><p class="noindent" >
<!--l. 831--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">sz</span><span
class="cmtt-12">&#x00A0;=</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">&#x00A0;p%sizeof()</span></span></span><br />
</div>
<!--l. 823--><p class="noindent" ><span
<!--l. 834--><p class="noindent" ><span
class="cmr-12">Return memory footprint in bytes.</span>
<!--l. 826--><p class="noindent" >
<!--l. 837--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">6.9.4 </span></span> <a
id="x28-310006.9.4"></a><span
@ -185,13 +185,13 @@ class="cmr-12">Method: allocate</span><span
class="cmr-12">_wrk</span></h5>
<div class="center"
>
<!--l. 828--><p class="noindent" >
<!--l. 829--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
<!--l. 839--><p class="noindent" >
<!--l. 840--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%allocate_wrk(info[,</span><span
class="cmtt-12">&#x00A0;vmold])</span></span></span><br />
</div>
<!--l. 832--><p class="noindent" ><span
<!--l. 843--><p class="noindent" ><span
class="cmr-12">Allocate internal work vectors. Each application of the preconditioner uses a number of</span>
<span
class="cmr-12">work vectors which are allocated internally as necessary; therefore allocation and</span>
@ -223,7 +223,7 @@ class="cmr-12">argument to the </span><span class="obeylines-h"><span class="ver
class="cmtt-12">apply</span></span></span>
<span
class="cmr-12">method.</span>
<!--l. 848--><p class="noindent" ><span
<!--l. 859--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-19" class="tabular"
cellspacing="0" cellpadding="0"
@ -231,16 +231,16 @@ cellspacing="0" cellpadding="0"
id="TBL-19-1"><col
id="TBL-19-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-19-1-"><td style="white-space:normal; text-align:left;" id="TBL-19-1-1"
class="td11"><!--l. 851--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 862--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">info</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-19-1-2"
class="td11"><!--l. 851--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 862--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-19-2-"><td style="white-space:normal; text-align:left;" id="TBL-19-2-1"
class="td11"><!--l. 852--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-19-2-2"
class="td11"><!--l. 852--><p class="noindent" ><span
class="td11"><!--l. 863--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-19-2-2"
class="td11"><!--l. 863--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span
@ -248,9 +248,9 @@ class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-19-3-"><td style="white-space:normal; text-align:left;" id="TBL-19-3-1"
class="td11"><!--l. 853--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 864--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">vmold</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-19-3-2"
class="td11"><!--l. 853--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 864--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">class(psb_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">_base_vect_type),</span><span
@ -259,15 +259,15 @@ class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-19-4-"><td style="white-space:normal; text-align:left;" id="TBL-19-4-1"
class="td11"><!--l. 854--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-19-4-2"
class="td11"><!--l. 854--><p class="noindent" ><span
class="td11"><!--l. 865--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-19-4-2"
class="td11"><!--l. 865--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal vector components; this</span>
<span
class="cmr-12">allows e.g. running on GPUs.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-19-5-"><td style="white-space:normal; text-align:left;" id="TBL-19-5-1"
class="td11"> </td> </tr></table></div>
<!--l. 860--><p class="noindent" >
<!--l. 871--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">6.9.5 </span></span> <a
id="x28-320006.9.5"></a><span
@ -275,14 +275,14 @@ class="cmr-12">Method: free</span><span
class="cmr-12">_wrk</span></h5>
<div class="center"
>
<!--l. 862--><p class="noindent" >
<!--l. 863--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
<!--l. 873--><p class="noindent" >
<!--l. 874--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%free_wrk(info)</span></span></span><br />
</div>
<!--l. 866--><p class="noindent" ><span
<!--l. 877--><p class="noindent" ><span
class="cmr-12">Deallocate internal work vectors.</span>
<!--l. 869--><p class="noindent" ><span
<!--l. 880--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-20" class="tabular"
cellspacing="0" cellpadding="0"
@ -290,16 +290,16 @@ cellspacing="0" cellpadding="0"
id="TBL-20-1"><col
id="TBL-20-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-20-1-"><td style="white-space:normal; text-align:left;" id="TBL-20-1-1"
class="td11"><!--l. 872--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 883--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">info</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-20-1-2"
class="td11"><!--l. 872--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 883--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-20-2-"><td style="white-space:normal; text-align:left;" id="TBL-20-2-1"
class="td11"><!--l. 873--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-20-2-2"
class="td11"><!--l. 873--><p class="noindent" ><span
class="td11"><!--l. 884--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-20-2-2"
class="td11"><!--l. 884--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span

@ -44,7 +44,7 @@ class="cmbx-12">UMFPACK</span> </dt><dd
class="description"><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XUMFPACK"><span
class="cmr-12">11</span></a><span
class="cmr-12">12</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">A sparse LU factorization package included in the SuiteSparse</span>
<span
@ -86,7 +86,7 @@ class="cmbx-12">SuperLU</span> </dt><dd
class="description"><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XSUPERLU"><span
class="cmr-12">12</span></a><span
class="cmr-12">13</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">A sparse LU factorization package available from</span>
<a
@ -108,7 +108,7 @@ class="cmbx-12">_Dist</span> </dt><dd
class="description"><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XSUPERLUDIST"><span
class="cmr-12">21</span></a><span
class="cmr-12">22</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">A sparse LU factorization package available from the same</span>
<span

@ -349,7 +349,7 @@ class="cmr-12">denotes the preconditioner,</span>
class="cmr-12">usually within an iteration of a Krylov solver </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XSaad_book"><span
class="cmr-12">23</span></a><span
class="cmr-12">24</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">. An example of such a combination,</span>
<span
@ -377,7 +377,7 @@ class="cmr-12">in</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XNotay2008"><span
class="cmr-12">22</span></a><span
class="cmr-12">23</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span>

@ -48,7 +48,7 @@ class="cmr-12">2</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#XVANEK_MANDEL_BREZINA"><span
class="cmr-12">28</span></a><span
class="cmr-12">29</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">. The basic idea</span>
<span
@ -113,7 +113,7 @@ class="cmr-12">described in</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XVANEK_MANDEL_BREZINA"><span
class="cmr-12">28</span></a><span
class="cmr-12">29</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">is used. In this algorithm, each index </span><span
class="cmmi-12">j </span><span
@ -163,7 +163,7 @@ class="cmr-12">1] (see</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XVANEK_MANDEL_BREZINA"><span
class="cmr-12">28</span></a><span
class="cmr-12">29</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">for the details). Since this algorithm has a</span>
<span
@ -189,11 +189,11 @@ class="cmr-12">5</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#Xapnum_07"><span
class="cmr-12">7</span></a><span
class="cmr-12">8</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#XTUMINARO_TONG"><span
class="cmr-12">27</span></a><span
class="cmr-12">28</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span>
<!--l. 172--><p class="indent" > <span
@ -271,7 +271,7 @@ class="cmr-12">2</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#XStuben_01"><span
class="cmr-12">26</span></a><span
class="cmr-12">27</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">. A simple</span>
<span

@ -36,11 +36,11 @@ class="cmr-12">a hybrid version of the forward and backward Gauss-Seidel methods
class="cmr-12">Schwarz (AS) ones (see, e.g., </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XSaad_book"><span
class="cmr-12">23</span></a><span
class="cmr-12">24</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#Xdd2_96"><span
class="cmr-12">24</span></a><span
class="cmr-12">25</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">).</span>
<!--l. 222--><p class="indent" > <span

@ -87,7 +87,7 @@ class="cmr-12">PSBLAS User&#8217;s Guide</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">15</span></a><span
class="cmr-12">16</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span>
@ -203,41 +203,46 @@ class="cmr-12">post-smoother, and solves the coarsest-level system with 8 block-
<span
class="cmr-12">that the ILU(0) factorization (plus triangular solve) is used as local solver for the</span>
<span
class="cmr-12">block-Jacobi sweeps, since this is the default associated with block-Jacobi and set</span>
class="cmr-12">block-Jacobi sweeps, since this is the default associated with block-Jacobi</span>
<span
class="cmr-12">by</span><span
class="cmr-12">and set by</span><span
class="cmr-12">&#x00A0;</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">P%init</span></span></span><span
class="cmr-12">. Furthermore, specifying block-Jacobi as coarsest-level solver implies that</span>
class="cmr-12">. Furthermore, specifying block-Jacobi as coarsest-level</span>
<span
class="cmr-12">the coarsest-level matrix is distributed among the processes. Figure</span><span
class="cmr-12">solver implies that the coarsest-level matrix is distributed among the processes.</span>
<span
class="cmr-12">Figure</span><span
class="cmr-12">&#x00A0;</span><a
href="#x18-170034"><span
class="cmr-12">4</span><!--tex4ht:ref: fig:ex3 --></a> <span
class="cmr-12">shows how to set</span>
class="cmr-12">shows how to set a W-cycle preconditioner using the Coarsening</span>
<span
class="cmr-12">a W-cycle preconditioner which applies 2 hybrid Gauss-Seidel sweeps as pre- and</span>
class="cmr-12">based on Compatible Weighted Matching. It applies 2 hybrid Gauss-Seidel</span>
<span
class="cmr-12">post-smoother, and solves the coarsest-level system with the multifrontal LU</span>
class="cmr-12">sweeps as pre- and post-smoother, and solves the coarsest-level system with the</span>
<span
class="cmr-12">factorization implemented in MUMPS. It is specified that the coarsest-level matrix is</span>
class="cmr-12">multifrontal LU factorization implemented in MUMPS. It is specified that the</span>
<span
class="cmr-12">distributed, since MUMPS can be used on both replicated and distributed matrices,</span>
class="cmr-12">coarsest-level matrix is distributed, since MUMPS can be used on both replicated and</span>
<span
class="cmr-12">and by default it is used on replicated ones. The code fragments shown in</span>
class="cmr-12">distributed matrices, and by default it is used on replicated ones. The code</span>
<span
class="cmr-12">Figures</span><span
class="cmr-12">fragments shown in Figures</span><span
class="cmr-12">&#x00A0;</span><a
href="#x18-170023"><span
class="cmr-12">3</span><!--tex4ht:ref: fig:ex2 --></a> <span
class="cmr-12">and </span><a
href="#x18-170034"><span
class="cmr-12">4</span><!--tex4ht:ref: fig:ex3 --></a> <span
class="cmr-12">are included in the example program file </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amg_dexample_ml.f90</span></span></span>
class="cmr-12">are included in the example program file</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amg_dexample_ml.f90</span></span></span> <span
class="cmr-12">too. </span><span
class="cmbx-12">DA CORREGGERE NEL CODICE ESEMPIO</span>
<span
class="cmr-12">too.</span>
<!--l. 227--><p class="indent" > <span
class="cmbx-12">3</span>
<!--l. 228--><p class="indent" > <span
class="cmr-12">Finally, Figure</span><span
class="cmr-12">&#x00A0;</span><a
href="#x18-170045"><span
@ -252,7 +257,7 @@ class="cmr-12">nonsymmetric. The corresponding example program is available in t
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amg_dexample_1lev.f90</span></span></span><span
class="cmr-12">.</span>
<!--l. 234--><p class="indent" > <span
<!--l. 235--><p class="indent" > <span
class="cmr-12">For all the previous preconditioners, example programs where the sparse matrix and</span>
<span
class="cmr-12">the right-hand side are generated by discretizing a PDE with Dirichlet boundary</span>
@ -260,7 +265,7 @@ class="cmr-12">the right-hand side are generated by discretizing a PDE with Diri
class="cmr-12">conditions are also available in the directory </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">examples/pdegen</span></span></span><span
class="cmr-12">.</span>
<!--l. 238--><p class="indent" > <hr class="figure"><div class="figure"
<!--l. 239--><p class="indent" > <hr class="figure"><div class="figure"
>
@ -272,7 +277,7 @@ class="cmr-12">.</span>
<div class="center"
>
<!--l. 239--><p class="noindent" >
<!--l. 240--><p class="noindent" >
<div class="minipage"><pre class="verbatim" id="verbatim-7">
...&#x00A0;...
!&#x00A0;build&#x00A0;a&#x00A0;V-cycle&#x00A0;preconditioner&#x00A0;with&#x00A0;1&#x00A0;block-Jacobi&#x00A0;sweep&#x00A0;(with
@ -286,16 +291,16 @@ class="cmr-12">.</span>
&#x00A0;&#x00A0;call&#x00A0;P%smoothers_build(A,desc_A,info)
...&#x00A0;...
</pre>
<!--l. 254--><p class="nopar" ></div>
<br /> <div class="caption"
<!--l. 255--><p class="nopar" ></div>
<br /><div class="caption"
><span class="id">Figure&#x00A0;3: </span><span
class="content">setup of a multilevel preconditioner</span></div><!--tex4ht:label?: x18-170023 -->
class="content">setup of a multilevel preconditioner based on the default decoupled coarsening</span></div><!--tex4ht:label?: x18-170023 -->
</div>
<!--l. 260--><p class="indent" > </div><hr class="endfigure">
<!--l. 262--><p class="indent" > <hr class="figure"><div class="figure"
<!--l. 261--><p class="indent" > </div><hr class="endfigure">
<!--l. 263--><p class="indent" > <hr class="figure"><div class="figure"
>
@ -307,13 +312,14 @@ class="content">setup of a multilevel preconditioner</span></div><!--tex4ht:labe
<div class="center"
>
<!--l. 263--><p class="noindent" >
<!--l. 264--><p class="noindent" >
<div class="minipage"><pre class="verbatim" id="verbatim-8">
...&#x00A0;...
!&#x00A0;build&#x00A0;a&#x00A0;W-cycle&#x00A0;preconditioner&#x00A0;with&#x00A0;2&#x00A0;hybrid&#x00A0;Gauss-Seidel&#x00A0;sweeps
!&#x00A0;as&#x00A0;pre-&#x00A0;and&#x00A0;post-smoother,&#x00A0;a&#x00A0;distributed&#x00A0;coarsest
!&#x00A0;matrix,&#x00A0;and&#x00A0;MUMPS&#x00A0;as&#x00A0;coarsest-level&#x00A0;solver
&#x00A0;&#x00A0;call&#x00A0;P%init(&#8217;ML&#8217;,info)
&#x00A0;&#x00A0;call&#x00A0;P%set(&#8217;PAR_AGGR_ALG&#8217;,&#8217;COUPLED&#8217;,info)
&#x00A0;&#x00A0;call&#x00A0;P%set(&#8217;ML_CYCLE&#8217;,&#8217;WCYCLE&#8217;,info)
&#x00A0;&#x00A0;call&#x00A0;P%set(&#8217;SMOOTHER_TYPE&#8217;,&#8217;FBGS&#8217;,info)
&#x00A0;&#x00A0;call&#x00A0;P%set(&#8217;SMOOTHER_SWEEPS&#8217;,2,info)
@ -323,16 +329,17 @@ class="content">setup of a multilevel preconditioner</span></div><!--tex4ht:labe
&#x00A0;&#x00A0;call&#x00A0;P%smoothers_build(A,desc_A,info)
...&#x00A0;...
</pre>
<!--l. 280--><p class="nopar" ></div>
<!--l. 282--><p class="nopar" ></div>
<br /> <div class="caption"
><span class="id">Figure&#x00A0;4: </span><span
class="content">setup of a multilevel preconditioner</span></div><!--tex4ht:label?: x18-170034 -->
class="content">setup of a multilevel preconditioner based on the coupled coarsening based
on weighted matching</span></div><!--tex4ht:label?: x18-170034 -->
</div>
<!--l. 285--><p class="indent" > </div><hr class="endfigure">
<!--l. 287--><p class="indent" > <hr class="figure"><div class="figure"
<!--l. 287--><p class="indent" > </div><hr class="endfigure">
<!--l. 289--><p class="indent" > <hr class="figure"><div class="figure"
>
@ -344,7 +351,7 @@ class="content">setup of a multilevel preconditioner</span></div><!--tex4ht:labe
<div class="center"
>
<!--l. 288--><p class="noindent" >
<!--l. 290--><p class="noindent" >
<div class="minipage"><pre class="verbatim" id="verbatim-9">
...&#x00A0;...
!&#x00A0;set&#x00A0;RAS&#x00A0;with&#x00A0;overlap&#x00A0;2&#x00A0;and&#x00A0;ILU(0)&#x00A0;on&#x00A0;the&#x00A0;local&#x00A0;blocks
@ -355,7 +362,7 @@ class="content">setup of a multilevel preconditioner</span></div><!--tex4ht:labe
!&#x00A0;solve&#x00A0;Ax=b&#x00A0;with&#x00A0;preconditioned&#x00A0;BiCGSTAB
&#x00A0;&#x00A0;call&#x00A0;psb_krylov(&#8217;BICGSTAB&#8217;,A,P,b,x,tol,desc_A,info)
</pre>
<!--l. 300--><p class="nopar" ></div>
<!--l. 302--><p class="nopar" ></div>
<br /> <div class="caption"
><span class="id">Figure&#x00A0;5: </span><span
class="content">setup of a one-level Schwarz preconditioner.</span></div><!--tex4ht:label?: x18-170045 -->
@ -363,7 +370,7 @@ class="content">setup of a one-level Schwarz preconditioner.</span></div><!--tex
<!--l. 305--><p class="indent" > </div><hr class="endfigure">
<!--l. 307--><p class="indent" > </div><hr class="endfigure">

@ -43,10 +43,11 @@ 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{MatchBoxP}
U..~V.~Catalyurek, F.~Dobrian, A.~Gebremedhin, M.~Halappanavar, and A.~Pothen,
{\em Distributed-memory parallel algorithms for matching and coloring}, in PCO11 New Trends
in Parallel Computing and Optimization, IEEE International Symposium on Parallel and
Distributed Processing Workshops, IEEE CS, 2011.
%
%\bibitem{dd1_94}
%T.~Chan and T.~Mathew,

@ -211,8 +211,9 @@ with block-Jacobi and set by~\verb|P%init|.
Furthermore, specifying block-Jacobi as coarsest-level
solver implies that the coarsest-level matrix is distributed
among the processes.
Figure~\ref{fig:ex3} shows how to set a W-cycle preconditioner which
applies 2 hybrid Gauss-Seidel sweeps as pre- and post-smoother,
Figure~\ref{fig:ex3} shows how to set a W-cycle preconditioner using
the Coarsening based on Compatible Weighted Matching. It applies
2 hybrid Gauss-Seidel sweeps as pre- and post-smoother,
and solves the coarsest-level system with the multifrontal LU factorization
implemented in MUMPS. It is specified that the coarsest-level
matrix is distributed, since MUMPS can be used on both
@ -222,7 +223,7 @@ it is used on replicated ones.
%to specify a property only for the pre-smoother or the post-smoother
%(see Section~\ref{sec:precset} for more details).
The code fragments shown in Figures~\ref{fig:ex2} and \ref{fig:ex3} are
included in the example program file \verb|amg_dexample_ml.f90| too.
included in the example program file \verb|amg_dexample_ml.f90| too. \textbf{DA CORREGGERE NEL CODICE ESEMPIO 3}
Finally, Figure~\ref{fig:ex4} shows the setup of a one-level
additive Schwarz preconditioner, i.e., RAS with overlap 2.
@ -255,7 +256,7 @@ boundary conditions are also available in the directory \verb|examples/pdegen|.
}
\end{minipage}
\caption{setup of a multilevel preconditioner\label{fig:ex2}}
\caption{setup of a multilevel preconditioner based on the default decoupled coarsening\label{fig:ex2}}
\end{center}
\end{figure}
@ -269,6 +270,7 @@ boundary conditions are also available in the directory \verb|examples/pdegen|.
! 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('ML_CYCLE','WCYCLE',info)
call P%set('SMOOTHER_TYPE','FBGS',info)
call P%set('SMOOTHER_SWEEPS',2,info)
@ -280,7 +282,7 @@ boundary conditions are also available in the directory \verb|examples/pdegen|.
\end{verbatim}
}
\end{minipage}
\caption{setup of a multilevel preconditioner\label{fig:ex3}}
\caption{setup of a multilevel preconditioner based on the coupled coarsening based on weighted matching\label{fig:ex3}}
\end{center}
\end{figure}

@ -2,22 +2,66 @@
\markboth{\textsc{AMG4PSBLAS User's and Reference Guide}}
{\textsc{\ref{sec:license} License}}
{\bf DA CONTROLLARE E MODIFICARE INCLUDENDO I CREDITS A MLD2P4}
The AMG4PSBLAS is freely distributable under the following copyright
AMG4PSBLAS is freely distributable under the following copyright
terms: {\small
\begin{verbatim}
AMG4PSBLAS version 1.0
Algebraic Multigrid Package
based on PSBLAS (Parallel Sparse BLAS version 3.7)
(C) Copyright 2021
Salvatore Filippone
Pasqua D'Ambra
Fabio Durastante
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 AMG4PSBLAS 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 AMG4PSBLAS 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.5)
\end{verbatim}
}
\newpage
AMG4PSBLAS is an evolution (a rather substantial one) of MLD2P4, whose
license we reproduce here to abide by its terms:
{\small
\begin{verbatim}
(C) Copyright 2008, 2010, 2012, 2015, 2017
MLD2P4 version 2.2
MultiLevel Domain Decomposition Parallel Preconditioners Package
based on PSBLAS (Parallel Sparse BLAS version 3.5)
(C) Copyright 2008-2018
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
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:
@ -29,7 +73,7 @@ terms: {\small
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
@ -41,6 +85,6 @@ terms: {\small
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.
\end{verbatim}
}
}

@ -19,7 +19,8 @@ where $A$ is a square, real or complex, sparse symmetric positive definite (s.p.
The preconditioners implemented in AMG4PSBLAS are obtained by combining
3 different types of AMG cycles with smoothers and coarsest-level solvers. The V-, W-, and a version of a Krylov-type cycle (K-cycle)~\cite{Briggs2000,Notay2008} are available, which can be combined with weighted versions of Jacobi, hybrid
%\footnote{see Note 2 in Table~\ref{tab:p_coarse}, p.~28.}
forward/backward Gauss-Seidel, block-Jacobi, and additive Schwarz smoothers. An algebraic approach is used to generate a hierarchy of
forward/backward Gauss-Seidel, block-Jacobi, and additive Schwarz smoothers. Also $\ell_1$ versions of Jacobi, block-Jacobi and Gauss-Seidel smoothers are available.
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,
two different coarsening strategies, based on aggregation, are available:
@ -46,7 +47,8 @@ AMG4PSBLAS 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
operators and data management facilities for distributed sparse matrices,
as well as parallel Krylov solvers which can be used with the AMG4PSBLAS preconditioners.
kernels for sequential incomplete factorizations needed for the parallel block-Jacobi and additive Schwarz smoothers, and
parallel Krylov solvers which can be used with the AMG4PSBLAS 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,
@ -55,7 +57,9 @@ package. On the other hand, the implementation of AMG4PSBLAS, which was driven b
The inter-process comunication required by AMG4PSBLAS is encapsulated
in the PSBLAS routines;
therefore, AMG4PSBLAS can be run on any parallel machine where PSBLAS
implementations are available.
implementations are available. In the most recent version of PSBLAS (release 3.7), a plug-in for GPU is included; it includes CUDA versions of
main vector operations and of sparse matrix-vector multiplication, so that Krylov methods coupled with AMG4PBLAS preconditioners
relying on Jacobi and block-Jacobi smoothers with sparse approximate inverses on the blocks can be efficiently executed on cluster of GPUs.
AMG4PSBLAS 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

@ -137,7 +137,7 @@ by a suitable setting of the preconditioner parameters. These parameters
can be logically divided into four groups, i.e., parameters defining
\begin{enumerate}
\item the type of multilevel cycle and how many cycles must be applied;
\item the aggregation algorithm;
\item the coarsening algorithm;
\item the coarse-space correction at the coarsest level (for multilevel
preconditioners only);
\item the smoother of the multilevel preconditioners, or the one-level
@ -145,9 +145,7 @@ can be logically divided into four groups, i.e., parameters defining
\end{enumerate}
A list of the parameters that can be set, along with their allowed and
default values, is given in Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.
For a description of the meaning of the parameters, please
refer also to Section~\ref{sec:background}. \\
default values, is given in Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.\\
\textbf{Remark 2.} A smoother is usually obtained by combining two objects:
a smoother (\verb|SMOOTHER_TYPE|) and a local solver (\verb|SUB_SOLVE|),
@ -159,7 +157,7 @@ the hybrid Gauss-Seidel smoother (see Note in Table~\ref{tab:p_smoother})
is obtained by combining the block-Jacobi smoother object with a single sweep
of the Gauss-Seidel solver object, while the point-Jacobi smoother is the
result of combining the block-Jacobi smoother object with a single sweep
of the pointwise-Jacobi solver object. However, for simplicity, shortcuts are
of the point-Jacobi solver object. However, for simplicity, shortcuts are
provided to set point-Jacobi, hybrid (forward) Gauss-Seidel, and
hybrid backward Gauss-Seidel, i.e., the previous smoothers can be defined
by setting only \verb|SMOOTHER_TYPE| to appropriate values (see
@ -272,7 +270,7 @@ be applied.
& Any number \par $> 1$
& 1.5
& Minimum coarsening ratio. The aggregation stops
if the ratio between the matrix dimensions
if the ratio between the global matrix dimensions
at two consecutive levels is lower than or equal to this
threshold (see Note).\\ \hline
@ -285,9 +283,8 @@ be applied.
\verb|'PAR_AGGR_ALG'| & \verb|character(len=*)| \hspace*{-3mm}
& \texttt{'DEC'}, \texttt{'SYMDEC'}, \texttt{'COUPLED'}
& \texttt{'DEC'}
& Parallel aggregation algorithm. \par Currently, only the
decoupled aggregation (\verb|DEC|) is available; the
\verb|SYMDEC| option applies decoupled
& Parallel aggregation algorithm. \par the
\verb|SYMDEC| option applies decoupled
aggregation to the sparsity pattern
of $A+A^T$.\\ \hline
@ -297,10 +294,21 @@ be applied.
\textbf{\texttt{'SOC2'}},
\textbf{\texttt{'MATCHBOXP'}}
& Type of aggregation algorithm: currently,
we implement to measures of strength of
for the decoupled aggregation we implement two measures of strength of
connection, the one by Van\v{e}k, Mandel
and Brezina~\cite{VANEK_MANDEL_BREZINA},
and the one by Gratton et al~\cite{GrHeJi:16}. \\ \hline
and the one by Gratton et al~\cite{GrHeJi:16}. The coupled
aggregation is based on a parallel version of the half-approximate
matching implemented in the MatchBox-P software package
{\bf AGGIUNGERE LINK AL PACKAGE?}\\ \hline
\verb|'AGGR_SIZE'| & \verb|integer| \hspace*{-3mm}
& Any integer \par number power of $2$ and $> 2$
& 4
& Maximum size of aggregates when the coupled aggregation based on
matching is applied. For aggressive coarsening with size of
aggregate larger than $8$ we recommend the use of smoothed prolongators.
{\bf MODIFICARE CODICE}\\ \hline
\verb|'AGGR_PROL'| & \verb|character(len=*)| \hspace*{-3mm}
& \texttt{'SMOOTHED'}, \texttt{'UNSMOOTHED'} & \texttt{'SMOOTHED'}
@ -309,7 +317,7 @@ be applied.
\hline
\multicolumn{5}{|l|}{{\bfseries Note.} The aggregation algorithm stops when
at least one of the following criteria is met:
the coarse size threshold, the} \\
the coarse size threshold, the coarse size threshold per process, the} \\
\multicolumn{5}{|l|}{minimum coarsening ratio, or the maximum number
of levels is reached. Therefore, the actual number of levels may be} \\
\multicolumn{5}{|l|}{smaller than the specified maximum number
@ -332,7 +340,7 @@ of levels. } \\
\verb|'AGGR_ORD'| & \verb|character(len=*)|
& \texttt{'NATURAL'} \par \texttt{'DEGREE'}
& \texttt{'NATURAL'}
& Initial ordering of indices for the aggregation
& Initial ordering of indices for the decoupled aggregation
algorithm: either natural ordering or sorted by
descending degrees of the nodes in the
matrix graph. \\ \hline
@ -342,7 +350,7 @@ of levels. } \\
\verb|'AGGR_THRESH'| & \verb|real(|\emph{kind\_parameter}\verb|)|
& Any~real \par number~$\in [0, 1]$
& 0.01
& The threshold $\theta$ in the aggregation algorithm,
& The threshold $\theta$ in the decoupled aggregation algorithm,
see (\ref{eq:strongly_coup}) in Section~\ref{sec:aggregation}.
See also the note at the bottom of this table. \\ \hline
\verb|'AGGR_FILTER'|
@ -377,18 +385,20 @@ the parameter \texttt{ilev}.} \\
\verb|'COARSE_SOLVE'| & \verb|character(len=*)|
& \texttt{'MUMPS'} \par \texttt{'UMF'} \par
\texttt{'SLU'} \par \texttt{'SLUDIST'} \par
\texttt{'JACOBI'} \par \texttt{'GS'} \par \texttt{'BJAC'}
\texttt{'JACOBI'} \par \texttt{'GS'} \par \texttt{'BJAC'} \par \texttt{'PCG'}
& 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 or block-Jacobi. \par
point-Jacobi, hybrid Gauss-Seidel or block-Jacobi and related $\ell_1$-versions;
{\bf preconditioned Conjugate Gradient coupled with the block-Jacobi preconditioner
with ILU(0) on the blocks}. \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
distributed, and \texttt{MUMPS} can be used with either
\texttt{GS}, \texttt{BJAC} and \texttt{PCG} require it to be
distributed, \texttt{MUMPS} can be used with either
a replicated or a distributed matrix. When any of the previous
solvers is specified, the matrix layout is set to a default
value which allows the use of the solver (see Remark 3, p.~24).
@ -402,7 +412,7 @@ the parameter \texttt{ilev}.} \\
in case the block Jacobi solver
is chosen as coarsest-level solver: ILU($p$), ILU($p,t$),
MILU($p$), LU from MUMPS, SuperLU or UMFPACK
(plus triangular solve).
(plus triangular solve). {\bf Aggiungere Sparse Approssimate per GPU?}
Note that UMFPACK and SuperLU\_Dist
are available only in double precision. \\
\hline
@ -431,7 +441,7 @@ level.\label{tab:p_coarse}}
& Any integer \par number $> 0$
& 10
& Number of sweeps when \verb|JACOBI|, \verb|GS| or \verb|BJAC|
is chosen as coarsest-level solver. \\ \hline
is chosen as coarsest-level solver. {\bf Aggiungere criterio di arresto del PCG?}\\ \hline
\verb|'COARSE_FILLIN'| & \verb|integer|
& Any integer \par number $\ge 0$
& 0
@ -462,7 +472,7 @@ level (continued).\label{tab:p_coarse_1}}
& \verb|'FBGS'|
& Type of smoother used in the multilevel preconditioner:
point-Jacobi, hybrid (forward) Gauss-Seidel,
hybrid backward Gauss-Seidel, block-Jacobi, and
hybrid backward Gauss-Seidel, block-Jacobi, \textbf{$\ell_1$-versions?} and
Additive Schwarz. \par
It is ignored by one-level preconditioners. \\ \hline
\verb|'SUB_SOLVE'| & \verb|character(len=*)|
@ -474,6 +484,7 @@ level (continued).\label{tab:p_coarse_1}}
of multilevel preconditioners, respectively \par
\texttt{ILU} for block-Jacobi and Additive Schwarz
one-level preconditioners
\textbf{$\ell_1$-versions?}
& The local solver to be used with the smoother or one-level
preconditioner (see Remark~2, page~24): point-Jacobi,
hybrid (forward) Gauss-Seidel, hybrid backward

Loading…
Cancel
Save