Doc fixes

openacc
Salvatore Filippone 3 months ago
parent 9c4f4c4d15
commit 7187575915

@ -1,7 +1,7 @@
all: guide
guide:
cd src && $(MAKE)
cd src && $(MAKE) clean all
doxy:
doxygen doxypsb

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

@ -52,13 +52,13 @@ href="userhtmlse9.html#x14-1280009" id="QQ2-14-158">Utilities</a></span>
<br /> &#x00A0;<span class="sectionToc" >10 <a
href="userhtmlse10.html#x15-13500010" id="QQ2-15-165">Preconditioner routines</a></span>
<br /> &#x00A0;<span class="sectionToc" >11 <a
href="userhtmlse11.html#x17-14300011" id="QQ2-17-175">Iterative Methods</a></span>
href="userhtmlse11.html#x17-14300011" id="QQ2-17-174">Iterative Methods</a></span>
<br /> &#x00A0;<span class="sectionToc" >12 <a
href="userhtmlse12.html#x19-14600012" id="QQ2-19-178">Extensions</a></span>
href="userhtmlse12.html#x19-14600012" id="QQ2-19-177">Extensions</a></span>
<br /> &#x00A0;<span class="sectionToc" >13 <a
href="userhtmlse13.html#x20-15500013" id="QQ2-20-193">CUDA Environment Routines</a></span>
href="userhtmlse13.html#x20-15500013" id="QQ2-20-192">CUDA Environment Routines</a></span>
<br /> &#x00A0;<span class="likesectionToc" ><a
href="userhtmlli2.html#x21-170000" id="QQ2-21-222">References</a></span>
href="userhtmlli2.html#x21-170000" id="QQ2-21-221">References</a></span>
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

@ -3,7 +3,6 @@
.pplb7t-x-x-172{font-size:172%;font-weight: bold;}
.pplb7t-x-x-172{font-weight: bold;}
.pplb7t-x-x-172{font-weight: bold;}
.pplb7t-x-x-172{font-weight: bold;}
.pplri7t-{font-style: italic;}
.pplri7t-{font-style: italic;}
.pplri7t-x-x-120{font-size:120%;font-style: italic;}
@ -11,7 +10,6 @@
.pplb7t-{font-weight: bold;}
.pplb7t-{font-weight: bold;}
.pplb7t-{font-weight: bold;}
.pplb7t-{font-weight: bold;}
.cmtt-10{font-family: monospace,monospace;}
.cmtt-10{font-family: monospace,monospace;}
.cmtt-10{font-family: monospace,monospace;}
@ -38,7 +36,6 @@
.pplb7t-x-x-120{font-size:120%;font-weight: bold;}
.pplb7t-x-x-120{font-weight: bold;}
.pplb7t-x-x-120{font-weight: bold;}
.pplb7t-x-x-120{font-weight: bold;}
.cmtt-8{font-size:80%;font-family: monospace,monospace;}
.cmtt-8{font-family: monospace,monospace;}
.cmtt-8{font-family: monospace,monospace;}
@ -59,10 +56,6 @@
.zplmr7m-x-x-80{font-style: italic;}
.zplmr7t-x-x-80{font-size:80%;}
.pplrc7t-x-x-90{font-size:90%;}
.pplb7t-x-x-90{font-size:90%;font-weight: bold;}
.pplb7t-x-x-90{font-weight: bold;}
.pplb7t-x-x-90{font-weight: bold;}
.pplb7t-x-x-90{font-weight: bold;}
.small-caps{font-variant: small-caps; }
p{margin-top:0;margin-bottom:0}
p.indent{text-indent:0;}
@ -200,11 +193,5 @@ pre.lstinputlisting{ font-family: monospace,monospace; white-space: pre-wrap; }
#TBL-24-3{border-right:1px solid black;}
#TBL-24-4{border-right:1px solid black;}
#TBL-24-5{border-right:1px solid black;}
#TBL-25-1{border-left: 1px solid black;}
#TBL-25-1{border-right:1px solid black;}
#TBL-25-2{border-right:1px solid black;}
#TBL-25-3{border-right:1px solid black;}
#TBL-25-4{border-right:1px solid black;}
#TBL-25-5{border-right:1px solid black;}
/* end css.sty */

@ -52,13 +52,13 @@ href="userhtmlse9.html#x14-1280009" id="QQ2-14-158">Utilities</a></span>
<br /> &#x00A0;<span class="sectionToc" >10 <a
href="userhtmlse10.html#x15-13500010" id="QQ2-15-165">Preconditioner routines</a></span>
<br /> &#x00A0;<span class="sectionToc" >11 <a
href="userhtmlse11.html#x17-14300011" id="QQ2-17-175">Iterative Methods</a></span>
href="userhtmlse11.html#x17-14300011" id="QQ2-17-174">Iterative Methods</a></span>
<br /> &#x00A0;<span class="sectionToc" >12 <a
href="userhtmlse12.html#x19-14600012" id="QQ2-19-178">Extensions</a></span>
href="userhtmlse12.html#x19-14600012" id="QQ2-19-177">Extensions</a></span>
<br /> &#x00A0;<span class="sectionToc" >13 <a
href="userhtmlse13.html#x20-15500013" id="QQ2-20-193">CUDA Environment Routines</a></span>
href="userhtmlse13.html#x20-15500013" id="QQ2-20-192">CUDA Environment Routines</a></span>
<br /> &#x00A0;<span class="likesectionToc" ><a
href="userhtmlli2.html#x21-170000" id="QQ2-21-222">References</a></span>
href="userhtmlli2.html#x21-170000" id="QQ2-21-221">References</a></span>
</div>

@ -299,61 +299,61 @@ href="userhtmlse10.html#x15-13600010.1" id="QQ2-15-166">init &#8212; Initialize
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >10.2 <a
href="userhtmlse10.html#x15-13700010.2" id="QQ2-15-167">Set &#8212; set preconditioner parameters</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >10.3 <a
href="userhtmlse10.html#x15-13800010.3" id="QQ2-15-170">build &#8212; Builds a preconditioner</a></span>
href="userhtmlse10.html#x15-13800010.3" id="QQ2-15-169">build &#8212; Builds a preconditioner</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >10.4 <a
href="userhtmlse10.html#x15-13900010.4" id="QQ2-15-171">apply &#8212; Preconditioner application routine</a></span>
href="userhtmlse10.html#x15-13900010.4" id="QQ2-15-170">apply &#8212; Preconditioner application routine</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >10.5 <a
href="userhtmlse10.html#x15-14000010.5" id="QQ2-15-172">descr &#8212; Prints a description of current preconditioner</a></span>
href="userhtmlse10.html#x15-14000010.5" id="QQ2-15-171">descr &#8212; Prints a description of current preconditioner</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >10.6 <a
href="userhtmlse10.html#x15-14100010.6" id="QQ2-15-173">clone &#8212; clone current preconditioner</a></span>
href="userhtmlse10.html#x15-14100010.6" id="QQ2-15-172">clone &#8212; clone current preconditioner</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >10.7 <a
href="userhtmlse10.html#x15-14200010.7" id="QQ2-15-174">free &#8212; Free a preconditioner</a></span>
href="userhtmlse10.html#x15-14200010.7" id="QQ2-15-173">free &#8212; Free a preconditioner</a></span>
<br /> &#x00A0;<span class="sectionToc" >11 <a
href="userhtmlse11.html#x17-14300011">Iterative Methods</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >11.1 <a
href="userhtmlse11.html#x17-14400011.1" id="QQ2-17-176">psb_krylov &#8212; Krylov Methods Driver Routine</a></span>
href="userhtmlse11.html#x17-14400011.1" id="QQ2-17-175">psb_krylov &#8212; Krylov Methods Driver Routine</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >11.2 <a
href="userhtmlse11.html#x17-14500011.2" id="QQ2-17-177">psb_richardson &#8212; Richardson Iteration Driver Routine</a></span>
href="userhtmlse11.html#x17-14500011.2" id="QQ2-17-176">psb_richardson &#8212; Richardson Iteration Driver Routine</a></span>
<br /> &#x00A0;<span class="sectionToc" >12 <a
href="userhtmlse12.html#x19-14600012">Extensions</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >12.1 <a
href="userhtmlse12.html#x19-14700012.1" id="QQ2-19-179">Using the extensions</a></span>
href="userhtmlse12.html#x19-14700012.1" id="QQ2-19-178">Using the extensions</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >12.2 <a
href="userhtmlse12.html#x19-14800012.2" id="QQ2-19-180">Extensions&#8217; Data Structures</a></span>
href="userhtmlse12.html#x19-14800012.2" id="QQ2-19-179">Extensions&#8217; Data Structures</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >12.3 <a
href="userhtmlse12.html#x19-14900012.3" id="QQ2-19-183">CPU-class extensions</a></span>
href="userhtmlse12.html#x19-14900012.3" id="QQ2-19-182">CPU-class extensions</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >12.4 <a
href="userhtmlse12.html#x19-15400012.4" id="QQ2-19-192">CUDA-class extensions</a></span>
href="userhtmlse12.html#x19-15400012.4" id="QQ2-19-191">CUDA-class extensions</a></span>
<br /> &#x00A0;<span class="sectionToc" >13 <a
href="userhtmlse13.html#x20-15500013">CUDA Environment Routines</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
href="userhtmlse13.html#Q1-20-195">psb_cuda_init</a></span>
href="userhtmlse13.html#Q1-20-194">psb_cuda_init</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
href="userhtmlse13.html#Q1-20-197">psb_cuda_exit</a></span>
href="userhtmlse13.html#Q1-20-196">psb_cuda_exit</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
href="userhtmlse13.html#Q1-20-199">psb_cuda_DeviceSync</a></span>
href="userhtmlse13.html#Q1-20-198">psb_cuda_DeviceSync</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
href="userhtmlse13.html#Q1-20-201">psb_cuda_getDeviceCount</a></span>
href="userhtmlse13.html#Q1-20-200">psb_cuda_getDeviceCount</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
href="userhtmlse13.html#Q1-20-203">psb_cuda_getDevice</a></span>
href="userhtmlse13.html#Q1-20-202">psb_cuda_getDevice</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
href="userhtmlse13.html#Q1-20-205">psb_cuda_setDevice</a></span>
href="userhtmlse13.html#Q1-20-204">psb_cuda_setDevice</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
href="userhtmlse13.html#Q1-20-207">psb_cuda_DeviceHasUVA</a></span>
href="userhtmlse13.html#Q1-20-206">psb_cuda_DeviceHasUVA</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
href="userhtmlse13.html#Q1-20-209">psb_cuda_WarpSize</a></span>
href="userhtmlse13.html#Q1-20-208">psb_cuda_WarpSize</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
href="userhtmlse13.html#Q1-20-211">psb_cuda_MultiProcessors</a></span>
href="userhtmlse13.html#Q1-20-210">psb_cuda_MultiProcessors</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
href="userhtmlse13.html#Q1-20-213">psb_cuda_MaxThreadsPerMP</a></span>
href="userhtmlse13.html#Q1-20-212">psb_cuda_MaxThreadsPerMP</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
href="userhtmlse13.html#Q1-20-215">psb_cuda_MaxRegisterPerBlock</a></span>
href="userhtmlse13.html#Q1-20-214">psb_cuda_MaxRegisterPerBlock</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
href="userhtmlse13.html#Q1-20-217">psb_cuda_MemoryClockRate</a></span>
href="userhtmlse13.html#Q1-20-216">psb_cuda_MemoryClockRate</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
href="userhtmlse13.html#Q1-20-219">psb_cuda_MemoryBusWidth</a></span>
href="userhtmlse13.html#Q1-20-218">psb_cuda_MemoryBusWidth</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
href="userhtmlse13.html#Q1-20-221">psb_cuda_MemoryPeakBandwidth</a></span>
href="userhtmlse13.html#Q1-20-220">psb_cuda_MemoryPeakBandwidth</a></span>
</div>

@ -31,44 +31,52 @@ class="pplri7t-">for Forest Fires</span>, in J.&#x00A0;Dongarra, K.&#x
</p>
<p class="bibitem" ><span class="biblabel">
[2]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XBERTACCINIFILIPPONE"></a>D. Bertaccini&#x00A0;and&#x00A0;S. Filippone, <span
class="pplri7t-">Sparse approximate</span>
<span
class="pplri7t-">inverse preconditioners on high performance GPU platforms</span>, Comput. Math.
Appl., 71, (2016), no.&#x00A0;3, 693&#8211;711.
</p>
<p class="bibitem" ><span class="biblabel">
[3]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="X2007d"></a>A. Buttari, D. di Serafino, P. D&#8217;Ambra, S. Filippone, 2LEV-D2P4:
a package of high-performance preconditioners, Applicable Algebra in
Engineering, Communications and Computing, Volume 18, Number 3,
May, 2007, pp. 223-239
</p>
<p class="bibitem" ><span class="biblabel">
[3]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
[4]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="X2007c"></a>P. D&#8217;Ambra, S. Filippone, D. Di Serafino On the Development of
PSBLAS-based Parallel Two-level Schwarz Preconditioners Applied
Numerical Mathematics, Elsevier Science, Volume 57, Issues 11-12,
November-December 2007, Pages 1181-1196.
</p>
<p class="bibitem" ><span class="biblabel">
[4]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
[5]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XBLAS2"></a>Dongarra, J. J., DuCroz, J., Hammarling, S. and Hanson, R., An
Extended Set of Fortran Basic Linear Algebra Subprograms, ACM Trans.
Math. Softw. vol.&#x00A0;14, 1&#8211;17, 1988.
</p>
<p class="bibitem" ><span class="biblabel">
[5]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
[6]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XBLAS3"></a>Dongarra, J., DuCroz, J., Hammarling, S. and Duff, I., A Set of level
3 Basic Linear Algebra Subprograms, ACM Trans. Math. Softw. vol.&#x00A0;16,
1&#8211;17, 1990.
</p>
<p class="bibitem" ><span class="biblabel">
[6]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
[7]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XBLACS"></a>J.&#x00A0;J.&#x00A0;Dongarra and R.&#x00A0;C.&#x00A0;Whaley, <span
class="pplri7t-">A User&#8217;s Guide to the BLACS</span>
<span
class="pplri7t-">v.</span><span
class="pplri7t-">&#x00A0;1.1</span>, Lapack Working Note 94, Tech.&#x00A0;Rep.&#x00A0;UT-CS-95-281, University of
Tennessee, March 1995 (updated May 1997).
</p>
<p class="bibitem" ><span class="biblabel">
[7]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
[8]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="Xsblas97"></a>I.&#x00A0;Duff, M.&#x00A0;Marrone, G.&#x00A0;Radicati and C.&#x00A0;Vittoli, <span
class="pplri7t-">Level 3 Basic Linear</span>
<span
@ -76,7 +84,7 @@ class="pplri7t-">Algebra Subprograms for Sparse Matrices: a User Level I
Transactions on Mathematical Software, 23(3), pp.&#x00A0;379&#8211;401, 1997.
</p>
<p class="bibitem" ><span class="biblabel">
[8]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
[9]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="Xsblas02"></a>I.&#x00A0;Duff, M.&#x00A0;Heroux and R.&#x00A0;Pozo, <span
class="pplri7t-">An Overview of the Sparse Basic Linear</span>
<span
@ -84,7 +92,7 @@ class="pplri7t-">Algebra Subprograms: the New Standard from the BLAS Technical F
Transactions on Mathematical Software, 28(2), pp.&#x00A0;239&#8211;267, 2002.
</p>
<p class="bibitem" ><span class="biblabel">
[9]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
[10]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XPSBLAS"></a>S.&#x00A0;Filippone and M.&#x00A0;Colajanni, <span
class="pplri7t-">PSBLAS: A Library for Parallel</span>
<span
@ -92,7 +100,7 @@ class="pplri7t-">Linear Algebra Computation on Sparse Matrices</span>,
Mathematical Software, 26(4), pp.&#x00A0;527&#8211;550, 2000.
</p>
<p class="bibitem" ><span class="biblabel">
[10]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
[11]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XSparse03"></a>S.&#x00A0;Filippone and A.&#x00A0;Buttari, <span
class="pplri7t-">Object-Oriented Techniques for Sparse</span>
<span
@ -100,7 +108,7 @@ class="pplri7t-">Matrix Computations in Fortran 2003</span>, ACM Transactions o
Software, 38(4), 2012.
</p>
<p class="bibitem" ><span class="biblabel">
[11]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
[12]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XKIVA3PSBLAS"></a>S.&#x00A0;Filippone, P.&#x00A0;D&#8217;Ambra, M.&#x00A0;Colajanni, <span
class="pplri7t-">Using a Parallel Library of</span>
<span
@ -111,14 +119,14 @@ class="pplri7t-">Clusters</span>, in G.&#x00A0;Joubert, A.&#x00A0;Murli,
College Press, 2002.
</p>
<p class="bibitem" ><span class="biblabel">
[12]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
[13]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XDesignPatterns"></a> Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1995. <span
class="pplri7t-">Design</span>
<span
class="pplri7t-">Patterns: Elements of Reusable Object-Oriented Software</span>. Addison-Wesley.
</p>
<p class="bibitem" ><span class="biblabel">
[13]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
[14]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XMETIS"></a>Karypis, G. and Kumar, V., <span
class="pplri7t-">METIS: Unstructured Graph Partitioning</span>
<span
@ -126,18 +134,18 @@ class="pplri7t-">and Sparse Matrix Ordering System</span>. Minneapolis, MN
of Minnesota, Department of Computer Science, 1995. Internet Address:
<span class="obeylines-h"><span class="verb"><span
class="cmtt-10">http://www.cs.umn.edu/~karypis</span></span></span>.
</p>
<p class="bibitem" ><span class="biblabel">
[14]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
[15]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XBLAS1"></a>Lawson, C., Hanson, R., Kincaid, D. and Krogh, F., Basic Linear
Algebra Subprograms for Fortran usage, ACM Trans. Math. Softw. vol.&#x00A0;5,
38&#8211;329, 1979.
</p>
<p class="bibitem" ><span class="biblabel">
[15]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
[16]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="Xmachiels"></a>Machiels, L. and Deville, M. <span
class="pplri7t-">Fortran 90: An entry to object-oriented</span>
<span
@ -145,31 +153,31 @@ class="pplri7t-">programming for the solution of partial differential equ
Math. Softw. vol.&#x00A0;23, 32&#8211;49.
</p>
<p class="bibitem" ><span class="biblabel">
[16]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
[17]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="Xmetcalf"></a>Metcalf, M., Reid, J. and Cohen, M. <span
class="pplri7t-">Fortran 95/2003 explained. </span>Oxford
University Press, 2004.
</p>
<p class="bibitem" ><span class="biblabel">
[17]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
[18]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XMRC:11"></a>Metcalf, M., Reid, J. and Cohen, M. <span
class="pplri7t-">Modern Fortran explained. </span>Oxford
University Press, 2011.
</p>
<p class="bibitem" ><span class="biblabel">
[18]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
[19]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XRouXiaXu:11"></a>Rouson, D.W.I., Xia, J., Xu, X.: Scientific Software Design: The
Object-Oriented Way. Cambridge University Press (2011)
</p>
<p class="bibitem" ><span class="biblabel">
[19]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
[20]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XMPI1"></a>M.&#x00A0;Snir, S.&#x00A0;Otto, S.&#x00A0;Huss-Lederman, D.&#x00A0;Walker and J.&#x00A0;Dongarra,
<span
class="pplri7t-">MPI: The Complete Reference. Volume 1 - The MPI Core</span>, second edition, MIT
Press, 1998.
</p>
<p class="bibitem" ><span class="biblabel">
[20]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
[21]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XDesPat:11"></a>D.&#x00A0;Barbieri, V.&#x00A0;Cardellini,
S.&#x00A0;Filippone and D.&#x00A0;Rouson <span
class="pplri7t-">Design Patterns for Scientific Computations</span>
@ -179,7 +187,7 @@ class="pplri7t-">on Sparse Matrices</span>, HPSS 2011, Algorithms and Pro
2011
</p>
<p class="bibitem" ><span class="biblabel">
[21]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
[22]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XCaFiRo:2014"></a> Cardellini, V., Filippone, S., and Rouson, D. 2014, Design patterns
for sparse-matrix computations on hybrid CPU/GPU platforms, <span
class="pplri7t-">Scientific</span>
@ -187,11 +195,21 @@ class="pplri7t-">Scientific</span>
class="pplri7t-">Programming</span>&#x00A0;<span
class="pplri7t-">22,</span>&#x00A0;1, 1&#8211;19.
</p>
<p class="bibitem" ><span class="biblabel">
[22]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
[23]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XOurTechRep"></a>D.&#x00A0;Barbieri, V.&#x00A0;Cardellini, A.&#x00A0;Fanfarillo, S.&#x00A0;Filippone, Three storage
formats for sparse matrices on GPGPUs, Tech. Rep. DICII RR-15.6,
Università di Roma Tor Vergata (February 2015).
</p>
<p class="bibitem" ><span class="biblabel">
[24]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XFilippone:2017:SMM:3034774.3017994"></a>S.&#x00A0;Filippone, V.&#x00A0;Cardellini, D.&#x00A0;Barbieri, and A.&#x00A0;Fanfarillo. Sparse
matrix-vector multiplication on GPGPUs. <span
class="pplri7t-">ACM Trans. Math. Softw.</span>,
43(4):30:1&#8211;30:49, 2017.
</p>
</div>

@ -28,35 +28,35 @@ routines for dense matrix operations. The current implementation of PSBLAS
addresses a distributed memory execution model operating with message
passing.
<!--l. 14--><p class="indent" > The PSBLAS library version 3 is implemented in the Fortran&#x00A0;2003&#x00A0;<span class="cite">[<a
href="userhtmlli2.html#Xmetcalf">16</a>]</span>
href="userhtmlli2.html#Xmetcalf">17</a>]</span>
programming language, with reuse and/or adaptation of existing Fortran&#x00A0;77 and
Fortran&#x00A0;95 software, plus a handful of C routines.
<!--l. 19--><p class="indent" > The use of Fortran&#x00A0;2003 offers a number of advantages over Fortran&#x00A0;95, mostly
in the handling of requirements for evolution and adaptation of the library to new
computing architectures and integration of new algorithms. For a detailed
discussion of our design see&#x00A0;<span class="cite">[<a
href="userhtmlli2.html#XSparse03">10</a>]</span>; other works discussing advanced programming in
href="userhtmlli2.html#XSparse03">11</a>]</span>; other works discussing advanced programming in
Fortran&#x00A0;2003 include&#x00A0;<span class="cite">[<a
href="userhtmlli2.html#XDesPat:11">20</a>,&#x00A0;<a
href="userhtmlli2.html#XRouXiaXu:11">18</a>]</span>; sufficient support for Fortran&#x00A0;2003 is now available
href="userhtmlli2.html#XDesPat:11">21</a>,&#x00A0;<a
href="userhtmlli2.html#XRouXiaXu:11">19</a>]</span>; sufficient support for Fortran&#x00A0;2003 is now available
from many compilers, including the GNU Fortran compiler from the Free Software
Foundation (as of version 4.8).
<!--l. 30--><p class="indent" > Previous approaches have been based on mixing Fortran&#x00A0;95, with its support for
object-based design, with other languages; these have been advocated by a number
of authors, e.g.&#x00A0;<span class="cite">[<a
href="userhtmlli2.html#Xmachiels">15</a>]</span>. Moreover, the Fortran&#x00A0;95 facilities for dynamic memory
href="userhtmlli2.html#Xmachiels">16</a>]</span>. Moreover, the Fortran&#x00A0;95 facilities for dynamic memory
management and interface overloading greatly enhance the usability of the PSBLAS
subroutines. In this way, the library can take care of runtime memory requirements
that are quite difficult or even impossible to predict at implementation or
compilation time.
<!--l. 40--><p class="indent" > The presentation of the PSBLAS library follows the general structure of the
proposal for serial Sparse BLAS&#x00A0;<span class="cite">[<a
href="userhtmlli2.html#Xsblas97">7</a>,&#x00A0;<a
href="userhtmlli2.html#Xsblas02">8</a>]</span>, which in its turn is based on the proposal for
href="userhtmlli2.html#Xsblas97">8</a>,&#x00A0;<a
href="userhtmlli2.html#Xsblas02">9</a>]</span>, which in its turn is based on the proposal for
BLAS on dense matrices&#x00A0;<span class="cite">[<a
href="userhtmlli2.html#XBLAS1">14</a>,&#x00A0;<a
href="userhtmlli2.html#XBLAS2">4</a>,&#x00A0;<a
href="userhtmlli2.html#XBLAS3">5</a>]</span>.
href="userhtmlli2.html#XBLAS1">15</a>,&#x00A0;<a
href="userhtmlli2.html#XBLAS2">5</a>,&#x00A0;<a
href="userhtmlli2.html#XBLAS3">6</a>]</span>.
<!--l. 45--><p class="indent" > The applicability of sparse iterative solvers to many different areas causes
some terminology problems because the same concept may be denoted
through different names depending on the application area. The PSBLAS

@ -101,7 +101,7 @@ class="pplb7t-">inout</span>.<br
class="newline" />Specified as: a preconditioner data structure <a
href="userhtmlse3.html#precdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_prec</span><span
class="cmtt-10">_Tprec</span><span
class="cmtt-10">_type</span></a>.
@ -144,14 +144,12 @@ class="zplmr7m-">A</span>;
<span
class="pplb7t-">BJAC</span> </dt><dd
class="description">
<!--l. 79--><p class="noindent" >Precondition by a factorization of the block-diagonal of matrix <span
class="zplmr7m-">A</span>, where
block boundaries are determined by the data allocation boundaries
for each process; requires no communication. Only the incomplete
factorization <span
class="zplmr7m-">ILU</span><span
class="zplmr7t-">(</span>0<span
class="zplmr7t-">) </span>is currently implemented.</dd></dl>
<!--l. 79--><p class="noindent" >Precondition by a factorization or an approximante inverse of the
block-diagonal of matrix <span
class="zplmr7m-">A</span>, where block boundaries are determined
by the data allocation boundaries for each process; requires no
communication. See also Table-<a
href="#x15-137001r21">21<!--tex4ht:ref: tab:p_subsolve_1 --></a>.</dd></dl>
@ -159,13 +157,13 @@ class="zplmr7t-">) </span>is currently implemented.</dd></dl>
id="x15-13700010.2"></a>Set &#8212; set preconditioner parameters</h4>
<div class="center"
>
<!--l. 92--><p class="noindent" >
<!--l. 93--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">set</span><span style="color:#000000">(</span><span style="color:#000000">what</span><span style="color:#000000">,</span><span style="color:#000000">val</span><span style="color:#000000">,</span><span style="color:#000000">info</span><span style="color:#000000">)</span></code></div>
<!--l. 96--><p class="noindent" >This method sets the parameters defining the subdomain solver when the
<!--l. 91--><p class="noindent" >
<!--l. 92--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">set</span><span style="color:#000000">(</span><span style="color:#000000">what</span><span style="color:#000000">,</span><span style="color:#000000">val</span><span style="color:#000000">,</span><span style="color:#000000">info</span><span style="color:#000000">)</span></code></div>
<!--l. 95--><p class="noindent" >This method sets the parameters defining the subdomain solver when the
preconditioner type is <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">BJAC</span></span></span>. More precisely, the parameter identified by <code class="lstinline"><span style="color:#000000">what</span></code> is
assigned the value contained in <code class="lstinline"><span style="color:#000000">val</span></code>.
<!--l. 102--><p class="noindent" ><span
<!--l. 101--><p class="noindent" ><span
class="pplb7t-x-x-120">Arguments</span>
<div class="tabular"> <table id="TBL-23" class="tabular"
@ -173,51 +171,48 @@ class="pplb7t-x-x-120">Arguments</span>
id="TBL-23-1"><col
id="TBL-23-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-23-1-"><td style="white-space:normal; text-align:left;" id="TBL-23-1-1"
class="td11"><!--l. 105--><p class="noindent" ><code class="lstinline"><span style="color:#000000">what</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-23-1-2"
class="td11"><!--l. 105--><p class="noindent" ><code class="lstinline"><span style="color:#000000">character</span><span style="color:#000000">(</span><span style="color:#000000">len</span><span style="color:#000000">=*)</span></code>. </td>
class="td11"><!--l. 104--><p class="noindent" ><code class="lstinline"><span style="color:#000000">what</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-23-1-2"
class="td11"><!--l. 104--><p class="noindent" ><code class="lstinline"><span style="color:#000000">character</span><span style="color:#000000">(</span><span style="color:#000000">len</span><span style="color:#000000">=*)</span></code>. </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-23-2-"><td style="white-space:normal; text-align:left;" id="TBL-23-2-1"
class="td11"><!--l. 106--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-23-2-2"
class="td11"><!--l. 106--><p class="noindent" >The parameter to be set. It can be specified through its name; the string is
case-insensitive. See Tables&#x00A0;<span
class="pplb7t-">??</span>-<a
href="#x15-137002r22">22<!--tex4ht:ref: tab:p_smoother_1 --></a>. </td>
class="td11"><!--l. 105--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-23-2-2"
class="td11"><!--l. 105--><p class="noindent" >The parameter to be set. It can be specified through its name; the string is
case-insensitive. See Table&#x00A0;<a
href="#x15-137001r21">21<!--tex4ht:ref: tab:p_subsolve_1 --></a>. </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-23-3-"><td style="white-space:normal; text-align:left;" id="TBL-23-3-1"
class="td11"><!--l. 109--><p class="noindent" ><code class="lstinline"><span style="color:#000000">val</span><span style="color:#000000"> </span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-23-3-2"
class="td11"><!--l. 109--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span></code> <span
class="td11"><!--l. 108--><p class="noindent" ><code class="lstinline"><span style="color:#000000">val</span><span style="color:#000000"> </span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-23-3-2"
class="td11"><!--l. 108--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span></code> <span
class="pplri7t-">or </span><code class="lstinline"><span style="color:#000000">character</span><span style="color:#000000">(</span><span style="color:#000000">len</span><span style="color:#000000">=*)</span></code> <span
class="pplri7t-">or </span><code class="lstinline"><span style="color:#000000">real</span><span style="color:#000000">(</span><span style="color:#000000">psb_spk_</span><span style="color:#000000">)</span></code> <span
class="pplri7t-">or </span><code class="lstinline"><span style="color:#000000">real</span><span style="color:#000000">(</span><span style="color:#000000">psb_dpk_</span><span style="color:#000000">)</span></code>,
<code class="lstinline"><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">)</span></code>. </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-23-4-"><td style="white-space:normal; text-align:left;" id="TBL-23-4-1"
class="td11"><!--l. 112--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-23-4-2"
class="td11"><!--l. 112--><p class="noindent" >The value of the parameter to be set. The list of allowed values and the
corresponding data types is given in Tables&#x00A0;<span
class="pplb7t-">??</span>-<a
href="#x15-137002r22">22<!--tex4ht:ref: tab:p_smoother_1 --></a>. When the value is of type
class="td11"><!--l. 111--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-23-4-2"
class="td11"><!--l. 111--><p class="noindent" >The value of the parameter to be set. The list of allowed values and the
corresponding data types is given in Table&#x00A0;<a
href="#x15-137001r21">21<!--tex4ht:ref: tab:p_subsolve_1 --></a>. When the value is of type
<code class="lstinline"><span style="color:#000000">character</span><span style="color:#000000">(</span><span style="color:#000000">len</span><span style="color:#000000">=*)</span></code>, it is also treated as case insensitive. </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-23-5-"><td style="white-space:normal; text-align:left;" id="TBL-23-5-1"
class="td11"><!--l. 117--><p class="noindent" ><code class="lstinline"><span style="color:#000000">info</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-23-5-2"
class="td11"><!--l. 117--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code>. </td>
class="td11"><!--l. 116--><p class="noindent" ><code class="lstinline"><span style="color:#000000">info</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-23-5-2"
class="td11"><!--l. 116--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code>. </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-23-6-"><td style="white-space:normal; text-align:left;" id="TBL-23-6-1"
class="td11"><!--l. 118--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-23-6-2"
class="td11"><!--l. 118--><p class="noindent" >Error code. If no error, 0 is returned. See Section&#x00A0;<span
class="pplb7t-">??</span> for details. </td> </tr></table></div>
<!--l. 123--><p class="noindent" >A number of subdomain solvers can be chosen with this method; a list of the
class="td11"><!--l. 117--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-23-6-2"
class="td11"><!--l. 117--><p class="noindent" >Error code. If no error, 0 is returned. See Section&#x00A0;<a
href="userhtmlse8.html#x13-1230008">8<!--tex4ht:ref: sec:errors --></a> for details. </td> </tr></table></div>
<!--l. 122--><p class="noindent" >A number of subdomain solvers can be chosen with this method; a list of the
parameters that can be set, along with their allowed and default values, is given in
Tables&#x00A0;<span
class="pplb7t-">??</span>-<a
href="#x15-137002r22">22<!--tex4ht:ref: tab:p_smoother_1 --></a>.<br
Table-<a
href="#x15-137001r21">21<!--tex4ht:ref: tab:p_subsolve_1 --></a>.<br
class="newline" />
<div class="table">
<!--l. 130--><p class="indent" > <a
<!--l. 129--><p class="indent" > <a
id="x15-137001r21"></a><hr class="float"><div class="float"
>
@ -225,7 +220,7 @@ class="newline" />
<div class="center"
>
<!--l. 130--><p class="noindent" >
<!--l. 129--><p class="noindent" >
<div class="tabular"> <table id="TBL-24" class="tabular"
><colgroup id="TBL-24-1g"><col
@ -271,7 +266,7 @@ class="hline"><td><hr></td><td><hr></td><td><hr></td><td><hr></td><td><hr></td><
style="vertical-align:baseline;" id="TBL-24-2-"><td style="white-space:normal; text-align:left;" id="TBL-24-2-1"
class="td
11"><!--l. 137--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">SUB_SOLVE</span><span style="color:#000000">&#8217;</span></code> </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-2-2"
class="td11"><code class="lstinline"><!--l. 137--><p class="noindent" ><span style="color:#000000">character</span><span style="color:#000000">(</span><span style="color:#000000">len</span><span style="color:#000000">=*)</span> </code></td><td style="white-space:normal; text-align:left;" id="TBL-24-2-3"
class="td11"><code class="lstinline"><!--l. 137--><p class="noindent" ><span style="color:#000000">character</span><span style="color:#000000">(</span><span style="color:#000000">len</span><span style="color:#000000">=*)</span> </code> </td><td style="white-space:normal; text-align:left;" id="TBL-24-2-3"
class="td11"><!--l. 138--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">ILU</span><span style="color:#000000">&#8217;</span></code>
<!--l. 139--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">ILUT</span><span style="color:#000000">&#8217;</span></code>
<!--l. 140--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">INVT</span><span style="color:#000000">&#8217;</span></code>
@ -316,93 +311,26 @@ class="pplr7t-x-x-90">suited for GPUs since they do not employ</span>
<span
class="pplr7t-x-x-90">triangular system solve kernels, see</span><span
class="pplr7t-x-x-90">&#x00A0;</span><span class="cite"><span
class="pplr7t-x-x-90">[</span><span
class="pplb7t-x-x-90">?</span><span
class="pplr7t-x-x-90">[</span><a
href="userhtmlli2.html#XBERTACCINIFILIPPONE"><span
class="pplr7t-x-x-90">2</span></a><span
class="pplr7t-x-x-90">]</span></span><span
class="pplr7t-x-x-90">.</span> </td>
</tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td><td><hr></td><td><hr></td></tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-24-3-"><td style="white-space:normal; text-align:left;" id="TBL-24-3-1"
class="td11"> </td></tr></table> </div></div>
<br /> <div class="caption"
><span class="id">Table&#x00A0;21: </span><span
class="content">Parameters defining the solver or the details of the one-level
preconditioner. </span></div><!--tex4ht:label?: x15-137001r21 -->
</div><hr class="endfloat" />
</div>
<div class="table">
<!--l. 159--><p class="indent" > <a
id="x15-137002r22"></a><hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 159--><p class="noindent" >
<div class="tabular"> <table id="TBL-25" class="tabular"
><colgroup id="TBL-25-1g"><col
id="TBL-25-1"></colgroup><colgroup id="TBL-25-2g"><col
id="TBL-25-2"></colgroup><colgroup id="TBL-25-3g"><col
id="TBL-25-3"></colgroup><colgroup id="TBL-25-4g"><col
id="TBL-25-4"></colgroup><colgroup id="TBL-25-5g"><col
id="TBL-25-5"></colgroup><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-25-1-"><td style="white-space:normal; text-align:left;" id="TBL-25-1-1"
class="td11"><!--l. 163--><p class="noindent" ><code class="lstinline"><span style="color:#000000">what</span></code> </td><td style="white-space:nowrap; text-align:left;" id="TBL-25-1-2"
class="td11"><span
class="pplrc7t-x-x-90"><span
class="small-caps">d</span><span
class="small-caps">a</span><span
class="small-caps">t</span><span
class="small-caps">a</span> <span
class="small-caps">t</span><span
class="small-caps">y</span><span
class="small-caps">p</span><span
class="small-caps">e</span> </span></td><td style="white-space:normal; text-align:left;" id="TBL-25-1-3"
class="td11"><!--l. 163--><p class="noindent" ><code class="lstinline"><span style="color:#000000">val</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-25-1-4"
class="td11"><!--l. 163--><p class="noindent" ><span
class="pplrc7t-x-x-90"><span
class="small-caps">d</span><span
class="small-caps">e</span><span
class="small-caps">f</span><span
class="small-caps">a</span><span
class="small-caps">u</span><span
class="small-caps">l</span><span
class="small-caps">t</span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-25-1-5"
class="td11"><!--l. 164--><p class="noindent" ><span
class="pplrc7t-x-x-90"><span
class="small-caps">c</span><span
class="small-caps">o</span><span
class="small-caps">m</span><span
class="small-caps">m</span><span
class="small-caps">e</span><span
class="small-caps">n</span><span
class="small-caps">t</span><span
class="small-caps">s</span></span> </td></tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-25-2-"><td style="white-space:normal; text-align:left;" id="TBL-25-2-1"
class="td
11"><!--l. 165--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">SUB_FILLIN</span><span style="color:#000000">&#8217;</span></code> </td><td style="white-space:nowrap; text-align:left;" id="TBL-25-2-2"
class="td11"><code class="lstinline"><!--l. 165--><p class="noindent" ><span style="color:#000000">integer</span> </code> </td><td style="white-space:normal; text-align:left;" id="TBL-25-2-3"
class="td11"><!--l. 166--><p class="noindent" ><span
class="td11"><!--l. 151--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">SUB_FILLIN</span><span style="color:#000000">&#8217;</span></code> </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-3-2"
class="td11"><code class="lstinline"><!--l. 151--><p class="noindent" ><span style="color:#000000">integer</span> </code> </td><td style="white-space:normal; text-align:left;" id="TBL-24-3-3"
class="td11"><!--l. 152--><p class="noindent" ><span
class="pplr7t-x-x-90">Any integer</span>
<!--l. 166--><p class="noindent" ><span
<!--l. 152--><p class="noindent" ><span
class="pplr7t-x-x-90">number</span><span
class="pplr7t-x-x-90">&#x00A0;</span><span
class="zplmr7y-x-x-90">&#x2265; </span><span
class="pplr7t-x-x-90">0</span> </td><td style="white-space:normal; text-align:left;" id="TBL-25-2-4"
class="td11"><!--l. 167--><p class="noindent" ><span
class="pplr7t-x-x-90">0</span> </td><td style="white-space:normal; text-align:left;" id="TBL-25-2-5"
class="td11"><!--l. 168--><p class="noindent" ><span
class="pplr7t-x-x-90">0</span> </td><td style="white-space:normal; text-align:left;" id="TBL-24-3-4"
class="td11"><!--l. 153--><p class="noindent" ><span
class="pplr7t-x-x-90">0</span> </td><td style="white-space:normal; text-align:left;" id="TBL-24-3-5"
class="td11"><!--l. 154--><p class="noindent" ><span
class="pplr7t-x-x-90">Fill-in level </span><span
class="zplmr7m-x-x-90">p </span><span
class="pplr7t-x-x-90">of the incomplete LU</span>
@ -410,19 +338,19 @@ class="pplr7t-x-x-90">of the incomplete LU</span>
class="pplr7t-x-x-90">factorizations.</span> </td>
</tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-25-3-"><td style="white-space:normal; text-align:left;" id="TBL-25-3-1"
class="td11"><!--l. 169--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">SUB_ILUTHRS</span><span style="color:#000000">&#8217;</span></code> </td><td style="white-space:nowrap; text-align:left;" id="TBL-25-3-2"
class="td11"><code class="lstinline"><!--l. 169--><p class="noindent" ><span style="color:#000000">real</span><span style="color:#000000">(</span><span style="color:#000000">kind_parameter</span><span style="color:#000000">)</span> </code></td><td style="white-space:normal; text-align:left;" id="TBL-25-3-3"
class="td11"><!--l. 170--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-24-4-"><td style="white-space:normal; text-align:left;" id="TBL-24-4-1"
class="td11"><!--l. 155--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">SUB_ILUTHRS</span><span style="color:#000000">&#8217;</span></code> </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-4-2"
class="td11"><code class="lstinline"><!--l. 155--><p class="noindent" ><span style="color:#000000">real</span><span style="color:#000000">(</span><span style="color:#000000">kind_parameter</span><span style="color:#000000">)</span> </code></td><td style="white-space:normal; text-align:left;" id="TBL-24-4-3"
class="td11"><!--l. 156--><p class="noindent" ><span
class="pplr7t-x-x-90">Any real</span>
<span
class="pplr7t-x-x-90">number</span><span
class="pplr7t-x-x-90">&#x00A0;</span><span
class="zplmr7y-x-x-90">&#x2265; </span><span
class="pplr7t-x-x-90">0</span> </td><td style="white-space:normal; text-align:left;" id="TBL-25-3-4"
class="td11"><!--l. 171--><p class="noindent" ><span
class="pplr7t-x-x-90">0</span> </td><td style="white-space:normal; text-align:left;" id="TBL-25-3-5"
class="td11"><!--l. 172--><p class="noindent" ><span
class="pplr7t-x-x-90">0</span> </td><td style="white-space:normal; text-align:left;" id="TBL-24-4-4"
class="td11"><!--l. 157--><p class="noindent" ><span
class="pplr7t-x-x-90">0</span> </td><td style="white-space:normal; text-align:left;" id="TBL-24-4-5"
class="td11"><!--l. 158--><p class="noindent" ><span
class="pplr7t-x-x-90">Drop tolerance </span><span
class="zplmr7m-x-x-90">t </span><span
class="pplr7t-x-x-90">in the ILU(</span><span
@ -432,13 +360,94 @@ class="zplmr7m-x-x-90">t</span><span
class="pplr7t-x-x-90">) factorization.</span> </td>
</tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-24-5-"><td style="white-space:normal; text-align:left;" id="TBL-24-5-1"
class="td11"><!--l. 159--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">ILU_ALG</span><span style="color:#000000">&#8217;</span></code> </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-5-2"
class="td11"><code class="lstinline"><!--l. 159--><p class="noindent" ><span style="color:#000000">character</span><span style="color:#000000">(</span><span style="color:#000000">len</span><span style="color:#000000">=*)</span> </code> </td><td style="white-space:normal; text-align:left;" id="TBL-24-5-3"
class="td11"><!--l. 160--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">MILU</span><span style="color:#000000">&#8217;</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-24-5-4"
class="td11"><!--l. 161--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">NONE</span><span style="color:#000000">&#8217;</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-24-5-5"
class="td11"><!--l. 162--><p class="noindent" ><span
class="pplr7t-x-x-90">ILU algorithmic variant</span> </td>
</tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-24-6-"><td style="white-space:normal; text-align:left;" id="TBL-24-6-1"
class="td11"><!--l. 163--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">ILUT_SCALE</span><span style="color:#000000">&#8217;</span></code> </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-6-2"
class="td11"><code class="lstinline"><!--l. 163--><p class="noindent" ><span style="color:#000000">character</span><span style="color:#000000">(</span><span style="color:#000000">len</span><span style="color:#000000">=*)</span> </code> </td><td style="white-space:normal; text-align:left;" id="TBL-24-6-3"
class="td11"><!--l. 164--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">MAXVAL</span><span style="color:#000000">&#8217;</span></code>
<!--l. 165--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">DIAG</span><span style="color:#000000">&#8217;</span></code>
<!--l. 166--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">ARSWUM</span><span style="color:#000000">&#8217;</span></code>
<!--l. 167--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">ARCSUM</span><span style="color:#000000">&#8217;</span></code>
<!--l. 168--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">ACLSUM</span><span style="color:#000000">&#8217;</span></code>
<!--l. 169--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">NONE</span><span style="color:#000000">&#8217;</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-24-6-4"
class="td11"><!--l. 170--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">NONE</span><span style="color:#000000">&#8217;</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-24-6-5"
class="td11"><!--l. 171--><p class="noindent" ><span
class="pplr7t-x-x-90">ILU scaling strategy</span> </td>
</tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-25-4-"><td style="white-space:normal; text-align:left;" id="TBL-25-4-1"
style="vertical-align:baseline;" id="TBL-24-7-"><td style="white-space:normal; text-align:left;" id="TBL-24-7-1"
class="td11"><!--l. 172--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">INV_FILLIN</span><span style="color:#000000">&#8217;</span></code> </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-7-2"
class="td11"><code class="lstinline"><!--l. 172--><p class="noindent" ><span style="color:#000000">integer</span> </code> </td><td style="white-space:normal; text-align:left;" id="TBL-24-7-3"
class="td11"><!--l. 173--><p class="noindent" ><span
class="pplr7t-x-x-90">Any integer</span>
<!--l. 173--><p class="noindent" ><span
class="pplr7t-x-x-90">number</span><span
class="pplr7t-x-x-90">&#x00A0;</span><span
class="zplmr7y-x-x-90">&#x2265; </span><span
class="pplr7t-x-x-90">0</span> </td><td style="white-space:normal; text-align:left;" id="TBL-24-7-4"
class="td11"><!--l. 174--><p class="noindent" ><span
class="pplr7t-x-x-90">0</span> </td><td style="white-space:normal; text-align:left;" id="TBL-24-7-5"
class="td11"><!--l. 175--><p class="noindent" ><span
class="pplr7t-x-x-90">Second fill-in level </span><span
class="zplmr7m-x-x-90">q </span><span
class="pplr7t-x-x-90">of the INVK(</span><span
class="zplmr7m-x-x-90">p</span><span
class="pplr7t-x-x-90">, </span><span
class="zplmr7m-x-x-90">q</span><span
class="pplr7t-x-x-90">)</span>
<span
class="pplr7t-x-x-90">approximate inverse.</span> </td>
</tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-24-8-"><td style="white-space:normal; text-align:left;" id="TBL-24-8-1"
class="td11"><!--l. 177--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">INV_ILUTHRS</span><span style="color:#000000">&#8217;</span></code> </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-8-2"
class="td11"><code class="lstinline"><!--l. 177--><p class="noindent" ><span style="color:#000000">real</span><span style="color:#000000">(</span><span style="color:#000000">kind_parameter</span><span style="color:#000000">)</span> </code></td><td style="white-space:normal; text-align:left;" id="TBL-24-8-3"
class="td11"><!--l. 178--><p class="noindent" ><span
class="pplr7t-x-x-90">Any real</span>
<span
class="pplr7t-x-x-90">number</span><span
class="pplr7t-x-x-90">&#x00A0;</span><span
class="zplmr7y-x-x-90">&#x2265; </span><span
class="pplr7t-x-x-90">0</span> </td><td style="white-space:normal; text-align:left;" id="TBL-24-8-4"
class="td11"><!--l. 179--><p class="noindent" ><span
class="pplr7t-x-x-90">0</span> </td><td style="white-space:normal; text-align:left;" id="TBL-24-8-5"
class="td11"><!--l. 180--><p class="noindent" ><span
class="pplr7t-x-x-90">Second drop tolerance </span><span
class="zplmr7m-x-x-90">s </span><span
class="pplr7t-x-x-90">in the INVT(</span><span
class="zplmr7m-x-x-90">t</span><span
class="pplr7t-x-x-90">, </span><span
class="zplmr7m-x-x-90">s</span><span
class="pplr7t-x-x-90">)</span>
<span
class="pplr7t-x-x-90">approximate inverse.</span> </td>
</tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-24-9-"><td style="white-space:normal; text-align:left;" id="TBL-24-9-1"
class="td11"><!--l. 182--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">AINV_ALG</span><span style="color:#000000">&#8217;</span></code> </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-9-2"
class="td11"><code class="lstinline"><!--l. 182--><p class="noindent" ><span style="color:#000000">character</span><span style="color:#000000">(</span><span style="color:#000000">len</span><span style="color:#000000">=*)</span> </code> </td><td style="white-space:normal; text-align:left;" id="TBL-24-9-3"
class="td11"><!--l. 183--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">LLK</span><span style="color:#000000">&#8217;</span></code>
<!--l. 184--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">SYM</span><span style="color:#000000">-</span><span style="color:#000000">LLK</span><span style="color:#000000">&#8217;</span></code>
<!--l. 185--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">STAB</span><span style="color:#000000">-</span><span style="color:#000000">LLK</span><span style="color:#000000">&#8217;</span></code>
<!--l. 186--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">MLK</span><span style="color:#000000">,</span><span style="color:#000000">LMX</span><span style="color:#000000">&#8217;</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-24-9-4"
class="td11"><!--l. 187--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">LLK</span><span style="color:#000000">&#8217;</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-24-9-5"
class="td11"><!--l. 188--><p class="noindent" ><span
class="pplr7t-x-x-90">AINV algorithmic strategy.</span> </td>
</tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-24-10-"><td style="white-space:normal; text-align:left;" id="TBL-24-10-1"
class="td11"> </td></tr></table> </div></div>
<br /> <div class="caption"
><span class="id">Table&#x00A0;22: </span><span
class="content">Parameters defining the smoother or the details of the one-level
preconditioner (continued).</span></div><!--tex4ht:label?: x15-137002r22 -->
><span class="id">Table&#x00A0;21: </span><span
class="content">Parameters defining the solver of the BJAC preconditioner.</span></div><!--tex4ht:label?: x15-137001r21 -->
@ -455,26 +464,26 @@ preconditioner (continued).</span></div><!--tex4ht:label?: x15-137002r22 -->
<pre class="verbatim" id="verbatim-98">
call&#x00A0;prec%build(a,&#x00A0;desc_a,&#x00A0;info[,amold,vmold,imold])
</pre>
<!--l. 187--><p class="nopar" >
<!--l. 189--><p class="indent" >
<!--l. 202--><p class="nopar" >
<!--l. 204--><p class="indent" >
<dl class="description"><dt class="description">
<!--l. 190--><p class="noindent" >
<!--l. 205--><p class="noindent" >
<span
class="pplb7t-">Type:</span> </dt><dd
class="description">
<!--l. 190--><p class="noindent" >Synchronous.
<!--l. 205--><p class="noindent" >Synchronous.
</dd><dt class="description">
<!--l. 191--><p class="noindent" >
<!--l. 206--><p class="noindent" >
<span
class="pplb7t-">On Entry</span> </dt><dd
class="description">
<!--l. 191--><p class="noindent" >
<!--l. 206--><p class="noindent" >
</dd><dt class="description">
<!--l. 192--><p class="noindent" >
<!--l. 207--><p class="noindent" >
<span
class="pplb7t-">a</span> </dt><dd
class="description">
<!--l. 192--><p class="noindent" >the system sparse matrix. Scope: <span
<!--l. 207--><p class="noindent" >the system sparse matrix. Scope: <span
class="pplb7t-">local </span><br
class="newline" />Type: <span
class="pplb7t-">required</span><br
@ -486,11 +495,11 @@ class="cmtt-10">psb</span><span
class="cmtt-10">_Tspmat</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<!--l. 197--><p class="noindent" >
<!--l. 212--><p class="noindent" >
<span
class="pplb7t-">prec</span> </dt><dd
class="description">
<!--l. 197--><p class="noindent" >the preconditioner.<br
<!--l. 212--><p class="noindent" >the preconditioner.<br
class="newline" />Scope: <span
class="pplb7t-">local </span><br
class="newline" />Type: <span
@ -501,16 +510,16 @@ class="newline" />Specified as: an already initialized precondtioner
<a
href="userhtmlse3.html#precdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_prec</span><span
class="cmtt-10">_Tprec</span><span
class="cmtt-10">_type</span></a><br
class="newline" />
</dd><dt class="description">
<!--l. 202--><p class="noindent" >
<!--l. 217--><p class="noindent" >
<span
class="pplb7t-">desc</span><span
class="pplb7t-">_a</span> </dt><dd
class="description">
<!--l. 202--><p class="noindent" >the problem communication descriptor. Scope: <span
<!--l. 217--><p class="noindent" >the problem communication descriptor. Scope: <span
class="pplb7t-">local </span><br
class="newline" />Type: <span
class="pplb7t-">required</span><br
@ -522,14 +531,14 @@ class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<!--l. 212--><p class="noindent" >
<!--l. 227--><p class="noindent" >
<span
class="pplb7t-">amold</span> </dt><dd
class="description">
<!--l. 212--><p class="noindent" >The desired dynamic type for the internal matrix storage.<br
<!--l. 227--><p class="noindent" >The desired dynamic type for the internal matrix storage.<br
class="newline" />Scope: <span
class="pplb7t-">local</span>.<br
class="newline" />Type: <span
@ -544,11 +553,11 @@ class="cmtt-10">_base</span><span
class="cmtt-10">_sparse</span><span
class="cmtt-10">_mat</span>.
</dd><dt class="description">
<!--l. 217--><p class="noindent" >
<!--l. 232--><p class="noindent" >
<span
class="pplb7t-">vmold</span> </dt><dd
class="description">
<!--l. 217--><p class="noindent" >The desired dynamic type for the internal vector storage.<br
<!--l. 232--><p class="noindent" >The desired dynamic type for the internal vector storage.<br
class="newline" />Scope: <span
class="pplb7t-">local</span>.<br
class="newline" />Type: <span
@ -563,11 +572,11 @@ class="cmtt-10">_base</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span>.
</dd><dt class="description">
<!--l. 222--><p class="noindent" >
<!--l. 237--><p class="noindent" >
<span
class="pplb7t-">imold</span> </dt><dd
class="description">
<!--l. 222--><p class="noindent" >The desired dynamic type for the internal integer vector storage.<br
<!--l. 237--><p class="noindent" >The desired dynamic type for the internal integer vector storage.<br
class="newline" />Scope: <span
class="pplb7t-">local</span>.<br
class="newline" />Type: <span
@ -582,19 +591,19 @@ class="cmtt-10">_T</span><span
class="cmtt-10">_base</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span>.</dd></dl>
<!--l. 229--><p class="indent" >
<!--l. 244--><p class="indent" >
<dl class="description"><dt class="description">
<!--l. 230--><p class="noindent" >
<!--l. 245--><p class="noindent" >
<span
class="pplb7t-">On Return</span> </dt><dd
class="description">
<!--l. 230--><p class="noindent" >
<!--l. 245--><p class="noindent" >
</dd><dt class="description">
<!--l. 231--><p class="noindent" >
<!--l. 246--><p class="noindent" >
<span
class="pplb7t-">prec</span> </dt><dd
class="description">
<!--l. 231--><p class="noindent" >the preconditioner.<br
<!--l. 246--><p class="noindent" >the preconditioner.<br
class="newline" />Scope: <span
class="pplb7t-">local </span><br
class="newline" />Type: <span
@ -604,15 +613,15 @@ class="pplb7t-">inout</span>.<br
class="newline" />Specified as: a precondtioner data structure <a
href="userhtmlse3.html#precdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_prec</span><span
class="cmtt-10">_Tprec</span><span
class="cmtt-10">_type</span></a><br
class="newline" />
</dd><dt class="description">
<!--l. 236--><p class="noindent" >
<!--l. 251--><p class="noindent" >
<span
class="pplb7t-">info</span> </dt><dd
class="description">
<!--l. 236--><p class="noindent" >Error code.<br
<!--l. 251--><p class="noindent" >Error code.<br
class="newline" />Scope: <span
class="pplb7t-">local </span><br
class="newline" />Type: <span
@ -623,7 +632,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
<!--l. 242--><p class="noindent" >The <span class="obeylines-h"><span class="verb"><span
<!--l. 257--><p class="noindent" >The <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">amold</span></span></span>, <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vmold</span></span></span> and <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">imold</span></span></span> arguments may be employed to interface with special
@ -640,26 +649,26 @@ devices, such as GPUs and other accelerators.
call&#x00A0;prec%apply(x,y,desc_a,info,trans,work)
call&#x00A0;prec%apply(x,desc_a,info,trans)
</pre>
<!--l. 254--><p class="nopar" >
<!--l. 256--><p class="indent" >
<!--l. 269--><p class="nopar" >
<!--l. 271--><p class="indent" >
<dl class="description"><dt class="description">
<!--l. 257--><p class="noindent" >
<!--l. 272--><p class="noindent" >
<span
class="pplb7t-">Type:</span> </dt><dd
class="description">
<!--l. 257--><p class="noindent" >Synchronous.
<!--l. 272--><p class="noindent" >Synchronous.
</dd><dt class="description">
<!--l. 258--><p class="noindent" >
<!--l. 273--><p class="noindent" >
<span
class="pplb7t-">On Entry</span> </dt><dd
class="description">
<!--l. 258--><p class="noindent" >
<!--l. 273--><p class="noindent" >
</dd><dt class="description">
<!--l. 259--><p class="noindent" >
<!--l. 274--><p class="noindent" >
<span
class="pplb7t-">prec</span> </dt><dd
class="description">
<!--l. 259--><p class="noindent" >the preconditioner. Scope: <span
<!--l. 274--><p class="noindent" >the preconditioner. Scope: <span
class="pplb7t-">local </span><br
class="newline" />Type: <span
class="pplb7t-">required</span><br
@ -668,14 +677,14 @@ class="pplb7t-">in</span>.<br
class="newline" />Specified as: a preconditioner data structure <a
href="userhtmlse3.html#precdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_prec</span><span
class="cmtt-10">_Tprec</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<!--l. 264--><p class="noindent" >
<!--l. 279--><p class="noindent" >
<span
class="pplb7t-">x</span> </dt><dd
class="description">
<!--l. 264--><p class="noindent" >the source vector. Scope: <span
<!--l. 279--><p class="noindent" >the source vector. Scope: <span
class="pplb7t-">local </span><br
class="newline" />Type: <span
class="pplb7t-">required</span><br
@ -688,12 +697,12 @@ class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<!--l. 269--><p class="noindent" >
<!--l. 284--><p class="noindent" >
<span
class="pplb7t-">desc</span><span
class="pplb7t-">_a</span> </dt><dd
class="description">
<!--l. 269--><p class="noindent" >the problem communication descriptor. Scope: <span
<!--l. 284--><p class="noindent" >the problem communication descriptor. Scope: <span
class="pplb7t-">local </span><br
class="newline" />Type: <span
class="pplb7t-">required</span><br
@ -705,11 +714,11 @@ class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<!--l. 274--><p class="noindent" >
<!--l. 289--><p class="noindent" >
<span
class="pplb7t-">trans</span> </dt><dd
class="description">
<!--l. 274--><p class="noindent" >Scope: <br
<!--l. 289--><p class="noindent" >Scope: <br
class="newline" />Type: <span
class="pplb7t-">optional</span><br
class="newline" />Intent: <span
@ -719,30 +728,30 @@ class="newline" />Specified as: a character.
</dd><dt class="description">
<!--l. 279--><p class="noindent" >
<!--l. 294--><p class="noindent" >
<span
class="pplb7t-">work</span> </dt><dd
class="description">
<!--l. 279--><p class="noindent" >an optional work space Scope: <span
<!--l. 294--><p class="noindent" >an optional work space Scope: <span
class="pplb7t-">local </span><br
class="newline" />Type: <span
class="pplb7t-">optional</span><br
class="newline" />Intent: <span
class="pplb7t-">inout</span>.<br
class="newline" />Specified as: a double precision array.</dd></dl>
<!--l. 286--><p class="indent" >
<!--l. 301--><p class="indent" >
<dl class="description"><dt class="description">
<!--l. 287--><p class="noindent" >
<!--l. 302--><p class="noindent" >
<span
class="pplb7t-">On Return</span> </dt><dd
class="description">
<!--l. 287--><p class="noindent" >
<!--l. 302--><p class="noindent" >
</dd><dt class="description">
<!--l. 288--><p class="noindent" >
<!--l. 303--><p class="noindent" >
<span
class="pplb7t-">y</span> </dt><dd
class="description">
<!--l. 288--><p class="noindent" >the destination vector. Scope: <span
<!--l. 303--><p class="noindent" >the destination vector. Scope: <span
class="pplb7t-">local </span><br
class="newline" />Type: <span
class="pplb7t-">required</span><br
@ -755,11 +764,11 @@ class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<!--l. 293--><p class="noindent" >
<!--l. 308--><p class="noindent" >
<span
class="pplb7t-">info</span> </dt><dd
class="description">
<!--l. 293--><p class="noindent" >Error code.<br
<!--l. 308--><p class="noindent" >Error code.<br
class="newline" />Scope: <span
class="pplb7t-">local </span><br
class="newline" />Type: <span
@ -779,26 +788,26 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
call&#x00A0;prec%descr(info)
call&#x00A0;prec%descr(info,iout,&#x00A0;root)
</pre>
<!--l. 308--><p class="nopar" >
<!--l. 310--><p class="indent" >
<!--l. 323--><p class="nopar" >
<!--l. 325--><p class="indent" >
<dl class="description"><dt class="description">
<!--l. 311--><p class="noindent" >
<!--l. 326--><p class="noindent" >
<span
class="pplb7t-">Type:</span> </dt><dd
class="description">
<!--l. 311--><p class="noindent" >Asynchronous.
<!--l. 326--><p class="noindent" >Asynchronous.
</dd><dt class="description">
<!--l. 312--><p class="noindent" >
<!--l. 327--><p class="noindent" >
<span
class="pplb7t-">On Entry</span> </dt><dd
class="description">
<!--l. 312--><p class="noindent" >
<!--l. 327--><p class="noindent" >
</dd><dt class="description">
<!--l. 313--><p class="noindent" >
<!--l. 328--><p class="noindent" >
<span
class="pplb7t-">prec</span> </dt><dd
class="description">
<!--l. 313--><p class="noindent" >the preconditioner. Scope: <span
<!--l. 328--><p class="noindent" >the preconditioner. Scope: <span
class="pplb7t-">local </span><br
class="newline" />Type: <span
class="pplb7t-">required</span><br
@ -807,14 +816,14 @@ class="pplb7t-">in</span>.<br
class="newline" />Specified as: a preconditioner data structure <a
href="userhtmlse3.html#precdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_prec</span><span
class="cmtt-10">_Tprec</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<!--l. 318--><p class="noindent" >
<!--l. 333--><p class="noindent" >
<span
class="pplb7t-">iout</span> </dt><dd
class="description">
<!--l. 318--><p class="noindent" >output unit. Scope: <span
<!--l. 333--><p class="noindent" >output unit. Scope: <span
class="pplb7t-">local </span><br
class="newline" />Type: <span
class="pplb7t-">optional</span><br
@ -822,11 +831,11 @@ class="newline" />Intent: <span
class="pplb7t-">in</span>.<br
class="newline" />Specified as: an integer number. Default: default output unit.
</dd><dt class="description">
<!--l. 323--><p class="noindent" >
<!--l. 338--><p class="noindent" >
<span
class="pplb7t-">root</span> </dt><dd
class="description">
<!--l. 323--><p class="noindent" >Process from which to print Scope: <span
<!--l. 338--><p class="noindent" >Process from which to print Scope: <span
class="pplb7t-">local </span><br
class="newline" />Type: <span
class="pplb7t-">optional</span><br
@ -839,20 +848,20 @@ class="zplmr7y-">- </span>1, in which case
class="zplmr7y-">-</span>1, in which case all
processes will print. Default: 0.
</dd><dt class="description">
<!--l. 330--><p class="noindent" >
<!--l. 345--><p class="noindent" >
<span
class="pplb7t-">On Return</span> </dt><dd
class="description">
<!--l. 330--><p class="noindent" >
<!--l. 345--><p class="noindent" >
</dd><dt class="description">
<!--l. 331--><p class="noindent" >
<!--l. 346--><p class="noindent" >
<span
class="pplb7t-">info</span> </dt><dd
class="description">
<!--l. 331--><p class="noindent" >Error code.<br
<!--l. 346--><p class="noindent" >Error code.<br
class="newline" />Scope: <span
class="pplb7t-">local </span><br
class="newline" />Type: <span
@ -871,48 +880,48 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
<pre class="verbatim" id="verbatim-101">
call&#x00A0;&#x00A0;prec%clone(precout,info)
</pre>
<!--l. 344--><p class="nopar" >
<!--l. 346--><p class="indent" >
<!--l. 359--><p class="nopar" >
<!--l. 361--><p class="indent" >
<dl class="description"><dt class="description">
<!--l. 347--><p class="noindent" >
<!--l. 362--><p class="noindent" >
<span
class="pplb7t-">Type:</span> </dt><dd
class="description">
<!--l. 347--><p class="noindent" >Asynchronous.
<!--l. 362--><p class="noindent" >Asynchronous.
</dd><dt class="description">
<!--l. 348--><p class="noindent" >
<!--l. 363--><p class="noindent" >
<span
class="pplb7t-">On Entry</span> </dt><dd
class="description">
<!--l. 348--><p class="noindent" >
<!--l. 363--><p class="noindent" >
</dd><dt class="description">
<!--l. 349--><p class="noindent" >
<!--l. 364--><p class="noindent" >
<span
class="pplb7t-">prec</span> </dt><dd
class="description">
<!--l. 349--><p class="noindent" >the preconditioner.<br
<!--l. 364--><p class="noindent" >the preconditioner.<br
class="newline" />Scope: <span
class="pplb7t-">local</span>.<br
class="newline" /></dd></dl>
<!--l. 356--><p class="indent" >
<!--l. 371--><p class="indent" >
<dl class="description"><dt class="description">
<!--l. 357--><p class="noindent" >
<!--l. 372--><p class="noindent" >
<span
class="pplb7t-">On Return</span> </dt><dd
class="description">
<!--l. 357--><p class="noindent" >
<!--l. 372--><p class="noindent" >
</dd><dt class="description">
<!--l. 358--><p class="noindent" >
<!--l. 373--><p class="noindent" >
<span
class="pplb7t-">precout</span> </dt><dd
class="description">
<!--l. 358--><p class="noindent" >A copy of the input object.
<!--l. 373--><p class="noindent" >A copy of the input object.
</dd><dt class="description">
<!--l. 359--><p class="noindent" >
<!--l. 374--><p class="noindent" >
<span
class="pplb7t-">info</span> </dt><dd
class="description">
<!--l. 359--><p class="noindent" >Return code.</dd></dl>
<!--l. 374--><p class="noindent" >Return code.</dd></dl>
@ -924,26 +933,26 @@ class="description">
<pre class="verbatim" id="verbatim-102">
call&#x00A0;prec%free(info)
</pre>
<!--l. 367--><p class="nopar" >
<!--l. 369--><p class="indent" >
<!--l. 382--><p class="nopar" >
<!--l. 384--><p class="indent" >
<dl class="description"><dt class="description">
<!--l. 370--><p class="noindent" >
<!--l. 385--><p class="noindent" >
<span
class="pplb7t-">Type:</span> </dt><dd
class="description">
<!--l. 370--><p class="noindent" >Asynchronous.
<!--l. 385--><p class="noindent" >Asynchronous.
</dd><dt class="description">
<!--l. 371--><p class="noindent" >
<!--l. 386--><p class="noindent" >
<span
class="pplb7t-">On Entry</span> </dt><dd
class="description">
<!--l. 371--><p class="noindent" >
<!--l. 386--><p class="noindent" >
</dd><dt class="description">
<!--l. 372--><p class="noindent" >
<!--l. 387--><p class="noindent" >
<span
class="pplb7t-">prec</span> </dt><dd
class="description">
<!--l. 372--><p class="noindent" >the preconditioner.<br
<!--l. 387--><p class="noindent" >the preconditioner.<br
class="newline" />Scope: <span
class="pplb7t-">local</span>.<br
class="newline" />Type: <span
@ -953,20 +962,20 @@ class="pplb7t-">inout</span>.<br
class="newline" />Specified as: a preconditioner data structure <a
href="userhtmlse3.html#precdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_prec</span><span
class="cmtt-10">_Tprec</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<!--l. 385--><p class="noindent" >
<!--l. 400--><p class="noindent" >
<span
class="pplb7t-">On Exit</span> </dt><dd
class="description">
<!--l. 385--><p class="noindent" >
<!--l. 400--><p class="noindent" >
</dd><dt class="description">
<!--l. 387--><p class="noindent" >
<!--l. 402--><p class="noindent" >
<span
class="pplb7t-">prec</span> </dt><dd
class="description">
<!--l. 387--><p class="noindent" >Scope: <span
<!--l. 402--><p class="noindent" >Scope: <span
class="pplb7t-">local </span><br
class="newline" />Type: <span
class="pplb7t-">required</span><br
@ -975,21 +984,21 @@ class="pplb7t-">inout</span>.<br
class="newline" />Specified as: a preconditioner data structure <a
href="userhtmlse3.html#precdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_prec</span><span
class="cmtt-10">_Tprec</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<!--l. 392--><p class="noindent" >
<!--l. 407--><p class="noindent" >
<span
class="pplb7t-">info</span> </dt><dd
class="description">
<!--l. 392--><p class="noindent" >Scope: <span
<!--l. 407--><p class="noindent" >Scope: <span
class="pplb7t-">global </span><br
class="newline" />Type: <span
class="pplb7t-">required</span><br
class="newline" />Intent: <span
class="pplb7t-">out</span>.<br
class="newline" />Error code: if no error, 0 is returned.</dd></dl>
<!--l. 398--><p class="noindent" ><span
<!--l. 413--><p class="noindent" ><span
class="pplb7t-x-x-120">Notes </span>Releases all internal storage.

@ -82,7 +82,7 @@ iteration.
<pre class="lstlisting" id="listing-196"><span class="label"><a
<pre class="lstlisting" id="listing-218"><span class="label"><a
id="x17-144001r1"></a></span><span style="color:#000000"><span
class="cmtt-10">call</span></span><span style="color:#000000"> </span><span style="color:#000000"><span
class="cmtt-10">psb_krylov</span></span><span style="color:#000000"><span
@ -231,7 +231,7 @@ class="pplb7t-">in</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlse3.html#precdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_prec</span><span
class="cmtt-10">_Tprec</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<!--l. 71--><p class="noindent" >
@ -524,7 +524,7 @@ class="zplmr7m-x-x-76">i</span></sub> the corresponding residual at the <span
class="zplmr7m-">i</span>-th
iteration.
<!--l. 179-->
<pre class="lstlisting" id="listing-197"><span class="label"><a
<pre class="lstlisting" id="listing-219"><span class="label"><a
id="x17-145001r1"></a></span><span style="color:#000000"><span
class="cmtt-10">call</span></span><span style="color:#000000"> </span><span style="color:#000000"><span
class="cmtt-10">psb_richardson</span></span><span style="color:#000000"><span
@ -607,7 +607,7 @@ class="pplb7t-">in</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlse3.html#precdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_prec</span><span
class="cmtt-10">_Tprec</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<!--l. 198--><p class="noindent" >

@ -42,11 +42,11 @@ class="cmtt-10">http://sourceforge.net/projects/librsb/</span></a>, for comput
multicore parallel machines.</dd></dl>
<!--l. 14--><p class="noindent" >The infrastructure laid out in the base library to allow for these extensions is detailed in
the references&#x00A0;<span class="cite">[<a
href="userhtmlli2.html#XDesPat:11">20</a>,&#x00A0;<a
href="userhtmlli2.html#XCaFiRo:2014">21</a>,&#x00A0;<a
href="userhtmlli2.html#XSparse03">10</a>]</span>; the CUDA-specific data formats are described
href="userhtmlli2.html#XDesPat:11">21</a>,&#x00A0;<a
href="userhtmlli2.html#XCaFiRo:2014">22</a>,&#x00A0;<a
href="userhtmlli2.html#XSparse03">11</a>]</span>; the CUDA-specific data formats are described
in&#x00A0;<span class="cite">[<a
href="userhtmlli2.html#XOurTechRep">22</a>]</span>.
href="userhtmlli2.html#XOurTechRep">23</a>]</span>.
<!--l. 19--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">12.1 </span> <a
id="x19-14700012.1"></a>Using the extensions</h4>
@ -149,120 +149,120 @@ the base classes in PSBLAS, through the Fortran&#x00A0;2003 mechanism of <span
class="pplri7t-">type</span>
<span
class="pplri7t-">extension</span>&#x00A0;<span class="cite">[<a
href="userhtmlli2.html#XMRC:11">17</a>]</span>.
href="userhtmlli2.html#XMRC:11">18</a>]</span>.
<!--l. 155--><p class="indent" > The data classes are divided between the general purpose CPU extensions, the
GPU interfaces and the RSB interfaces. In the description we will make use of the
notation introduced in Table&#x00A0;<a
href="#x19-148001r23">23<!--tex4ht:ref: tab:notation --></a>.
href="#x19-148001r22">22<!--tex4ht:ref: tab:notation --></a>.
<div class="table">
<!--l. 160--><p class="indent" > <a
id="x19-148001r23"></a><hr class="float"><div class="float"
id="x19-148001r22"></a><hr class="float"><div class="float"
>
<div class="caption"
><span class="id">Table&#x00A0;23: </span><span
class="content">Notation for parameters describing a sparse matrix</span></div><!--tex4ht:label?: x19-148001r23 -->
><span class="id">Table&#x00A0;22: </span><span
class="content">Notation for parameters describing a sparse matrix</span></div><!--tex4ht:label?: x19-148001r22 -->
<div class="center"
>
<!--l. 162--><p class="noindent" >
<div class="tabular"> <table id="TBL-26" class="tabular"
<div class="tabular"> <table id="TBL-25" class="tabular"
><colgroup id="TBL-26-1g"><col
id="TBL-26-1"><col
id="TBL-26-2"></colgroup><tr
><colgroup id="TBL-25-1g"><col
id="TBL-25-1"><col
id="TBL-25-2"></colgroup><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-26-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-1-1"
style="vertical-align:baseline;" id="TBL-25-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-1-1"
class="td11"><span
class="pplr7t-x-x-80">Name </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-1-2"
class="pplr7t-x-x-80">Name </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-1-2"
class="td11"><span
class="pplr7t-x-x-80">Description </span></td>
</tr><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-26-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-2-1"
style="vertical-align:baseline;" id="TBL-25-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-2-1"
class="td11"><span
class="pplr7t-x-x-80">M </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-2-2"
class="pplr7t-x-x-80">M </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-2-2"
class="td11"><span
class="pplr7t-x-x-80">Number of rows in matrix </span></td></tr><tr
style="vertical-align:baseline;" id="TBL-26-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-3-1"
style="vertical-align:baseline;" id="TBL-25-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-3-1"
class="td
11"><span
class="pplr7t-x-x-80">N </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-3-2"
class="pplr7t-x-x-80">N </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-3-2"
class="td11"><span
class="pplr7t-x-x-80">Number of columns in matrix </span></td></tr><tr
style="vertical-align:baseline;" id="TBL-26-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-4-1"
style="vertical-align:baseline;" id="TBL-25-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-4-1"
class="td
11"><span
class="pplr7t-x-x-80">NZ </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-4-2"
class="pplr7t-x-x-80">NZ </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-4-2"
class="td11"><span
class="pplr7t-x-x-80">Number of nonzeros in matrix </span></td></tr><tr
style="vertical-align:baseline;" id="TBL-26-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-5-1"
style="vertical-align:baseline;" id="TBL-25-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-5-1"
class="td
11"><span
class="pplr7t-x-x-80">AVGNZR </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-5-2"
class="pplr7t-x-x-80">AVGNZR </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-5-2"
class="td11"><span
class="pplr7t-x-x-80">Average number of nonzeros per row </span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-26-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-6-1"
style="vertical-align:baseline;" id="TBL-25-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-6-1"
class="td11"><span
class="pplr7t-x-x-80">MAXNZR</span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-6-2"
class="pplr7t-x-x-80">MAXNZR</span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-6-2"
class="td11"><span
class="pplr7t-x-x-80">Maximum number of nonzeros per row</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-26-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-7-1"
style="vertical-align:baseline;" id="TBL-25-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-7-1"
class="td11"><span
class="pplr7t-x-x-80">NDIAG </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-7-2"
class="pplr7t-x-x-80">NDIAG </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-7-2"
class="td11"><span
class="pplr7t-x-x-80">Numero of nonzero diagonals </span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-26-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-8-1"
style="vertical-align:baseline;" id="TBL-25-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-8-1"
class="td11"><span
class="pplr7t-x-x-80">AS </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-8-2"
class="pplr7t-x-x-80">AS </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-8-2"
class="td11"><span
class="pplr7t-x-x-80">Coefficients array </span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-26-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-9-1"
style="vertical-align:baseline;" id="TBL-25-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-9-1"
class="td11"><span
class="pplr7t-x-x-80">IA </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-9-2"
class="pplr7t-x-x-80">IA </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-9-2"
class="td11"><span
class="pplr7t-x-x-80">Row indices array </span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-26-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-10-1"
style="vertical-align:baseline;" id="TBL-25-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-10-1"
class="td11"><span
class="pplr7t-x-x-80">JA </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-10-2"
class="pplr7t-x-x-80">JA </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-10-2"
class="td11"><span
class="pplr7t-x-x-80">Column indices array </span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-26-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-11-1"
style="vertical-align:baseline;" id="TBL-25-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-11-1"
class="td11"><span
class="pplr7t-x-x-80">IRP </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-11-2"
class="pplr7t-x-x-80">IRP </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-11-2"
class="td11"><span
class="pplr7t-x-x-80">Row start pointers array </span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-26-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-12-1"
style="vertical-align:baseline;" id="TBL-25-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-12-1"
class="td11"><span
class="pplr7t-x-x-80">JCP </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-12-2"
class="pplr7t-x-x-80">JCP </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-12-2"
class="td11"><span
class="pplr7t-x-x-80">Column start pointers array </span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-26-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-13-1"
style="vertical-align:baseline;" id="TBL-25-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-13-1"
class="td11"><span
class="pplr7t-x-x-80">NZR </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-13-2"
class="pplr7t-x-x-80">NZR </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-13-2"
class="td11"><span
class="pplr7t-x-x-80">Number of nonzeros per row array </span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-26-14-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-14-1"
style="vertical-align:baseline;" id="TBL-25-14-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-14-1"
class="td11"><span
class="pplr7t-x-x-80">OFFSET </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-14-2"
class="pplr7t-x-x-80">OFFSET </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-14-2"
class="td11"><span
class="pplr7t-x-x-80">Offset for diagonals </span></td>
</tr><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-26-15-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-15-1"
style="vertical-align:baseline;" id="TBL-25-15-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-15-1"
class="td11"> </td></tr></table> </div>
</div>
@ -343,7 +343,7 @@ href="#x19-148002r5">5<!--tex4ht:ref: fig:dense --></a></span></div><!--tex4ht:l
<!--l. 231-->
<pre class="lstlisting" id="listing-198"><span class="label"><a
<pre class="lstlisting" id="listing-220"><span class="label"><a
id="x19-150003r1"></a></span><span
class="cmtt-9">&#x00A0;</span><span
class="cmtt-9">&#x00A0;</span><span

@ -21,7 +21,7 @@ href="userhtml.html# " >up</a>] </p></div>
<h4 class="likesubsectionHead"><a
id="x20-156000"></a>psb_cuda_init &#8212; Initializes PSBLAS-CUDA environment</h4>
<a
id="Q1-20-195"></a>
id="Q1-20-194"></a>
<div class="center"
>
<!--l. 99--><p class="noindent" >
@ -70,7 +70,7 @@ class="pplb7t-x-x-120">Notes</span>
<h4 class="likesubsectionHead"><a
id="x20-157000"></a>psb_cuda_exit &#8212; Exit from PSBLAS-CUDA environment</h4>
<a
id="Q1-20-197"></a>
id="Q1-20-196"></a>
<div class="center"
>
<!--l. 137--><p class="noindent" >
@ -108,7 +108,7 @@ class="newline" />Specified as: an integer variable.</dd></dl>
<h4 class="likesubsectionHead"><a
id="x20-158000"></a>psb_cuda_DeviceSync &#8212; Synchronize CUDA device</h4>
<a
id="Q1-20-199"></a>
id="Q1-20-198"></a>
@ -125,7 +125,7 @@ CUDA-side code, have completed.
<h4 class="likesubsectionHead"><a
id="x20-159000"></a>psb_cuda_getDeviceCount </h4>
<a
id="Q1-20-201"></a>
id="Q1-20-200"></a>
<div class="center"
>
<!--l. 190--><p class="noindent" >
@ -138,7 +138,7 @@ ngpus&#x00A0;=&#x00A0;&#x00A0;psb_cuda_getDeviceCount()
<h4 class="likesubsectionHead"><a
id="x20-160000"></a>psb_cuda_getDevice </h4>
<a
id="Q1-20-203"></a>
id="Q1-20-202"></a>
<div class="center"
>
<!--l. 209--><p class="noindent" >
@ -154,7 +154,7 @@ ngpus&#x00A0;=&#x00A0;&#x00A0;psb_cuda_getDevice()
<h4 class="likesubsectionHead"><a
id="x20-161000"></a>psb_cuda_setDevice </h4>
<a
id="Q1-20-205"></a>
id="Q1-20-204"></a>
<div class="center"
>
<!--l. 228--><p class="noindent" >
@ -167,7 +167,7 @@ info&#x00A0;=&#x00A0;psb_cuda_setDevice(dev)
<h4 class="likesubsectionHead"><a
id="x20-162000"></a>psb_cuda_DeviceHasUVA </h4>
<a
id="Q1-20-207"></a>
id="Q1-20-206"></a>
<div class="center"
>
<!--l. 247--><p class="noindent" >
@ -180,7 +180,7 @@ hasUva&#x00A0;=&#x00A0;psb_cuda_DeviceHasUVA()
<h4 class="likesubsectionHead"><a
id="x20-163000"></a>psb_cuda_WarpSize </h4>
<a
id="Q1-20-209"></a>
id="Q1-20-208"></a>
<div class="center"
>
<!--l. 267--><p class="noindent" >
@ -196,7 +196,7 @@ nw&#x00A0;=&#x00A0;psb_cuda_WarpSize()
<h4 class="likesubsectionHead"><a
id="x20-164000"></a>psb_cuda_MultiProcessors </h4>
<a
id="Q1-20-211"></a>
id="Q1-20-210"></a>
<div class="center"
>
<!--l. 287--><p class="noindent" >
@ -209,7 +209,7 @@ nmp&#x00A0;=&#x00A0;psb_cuda_MultiProcessors()
<h4 class="likesubsectionHead"><a
id="x20-165000"></a>psb_cuda_MaxThreadsPerMP </h4>
<a
id="Q1-20-213"></a>
id="Q1-20-212"></a>
<div class="center"
>
<!--l. 306--><p class="noindent" >
@ -222,7 +222,7 @@ nt&#x00A0;=&#x00A0;psb_cuda_MaxThreadsPerMP()
<h4 class="likesubsectionHead"><a
id="x20-166000"></a>psb_cuda_MaxRegistersPerBlock </h4>
<a
id="Q1-20-215"></a>
id="Q1-20-214"></a>
<div class="center"
>
<!--l. 326--><p class="noindent" >
@ -238,7 +238,7 @@ nr&#x00A0;=&#x00A0;psb_cuda_MaxRegistersPerBlock()
<h4 class="likesubsectionHead"><a
id="x20-167000"></a>psb_cuda_MemoryClockRate </h4>
<a
id="Q1-20-217"></a>
id="Q1-20-216"></a>
<div class="center"
>
<!--l. 346--><p class="noindent" >
@ -251,7 +251,7 @@ cl&#x00A0;=&#x00A0;psb_cuda_MemoryClockRate()
<h4 class="likesubsectionHead"><a
id="x20-168000"></a>psb_cuda_MemoryBusWidth </h4>
<a
id="Q1-20-219"></a>
id="Q1-20-218"></a>
<div class="center"
>
<!--l. 365--><p class="noindent" >
@ -264,7 +264,7 @@ nb&#x00A0;=&#x00A0;psb_cuda_MemoryBusWidth()
<h4 class="likesubsectionHead"><a
id="x20-169000"></a>psb_cuda_MemoryPeakBandwidth </h4>
<a
id="Q1-20-221"></a>
id="Q1-20-220"></a>
<div class="center"
>
<!--l. 384--><p class="noindent" >
@ -282,6 +282,10 @@ bw&#x00A0;=&#x00A0;psb_cuda_MemoryPeakBandwidth()
<!--l. 134--><p class="indent" >

@ -35,7 +35,7 @@ process are executed through calls to the serial sparse BLAS subroutines. In a
similar way, the inter-process message exchanges are encapsulated in an
applicaiton layer that has been strongly inspired by the Basic Linear Algebra
Communication Subroutines (BLACS) library&#x00A0;<span class="cite">[<a
href="userhtmlli2.html#XBLACS">6</a>]</span>. Usually there is no need to deal
href="userhtmlli2.html#XBLACS">7</a>]</span>. Usually there is no need to deal
directly with MPI; however, in some cases, MPI routines are used directly
to improve efficiency. For further details on our communication layer see
Sec.&#x00A0;<a
@ -85,7 +85,7 @@ class="cmtt-10">BLOCK</span></span></span>, as well as completely
arbitrary assignments of equation indices to processes. In particular it is
consistent with the usage of graph partitioning tools commonly available in
the literature, e.g. METIS&#x00A0;<span class="cite">[<a
href="userhtmlli2.html#XMETIS">13</a>]</span>. Dense vectors conform to sparse matrices,
href="userhtmlli2.html#XMETIS">14</a>]</span>. Dense vectors conform to sparse matrices,
that is, the entries of a vector follow the same distribution of the matrix
rows.
<!--l. 146--><p class="indent" > We assume that the sparse matrix is built in parallel, where each process generates
@ -164,8 +164,8 @@ class="description">
<!--l. 202--><p class="noindent" >Overlap points do not usually exist in the basic data distributions; however they are a
feature of Domain Decomposition Schwarz preconditioners which are the subject of
related research work&#x00A0;<span class="cite">[<a
href="userhtmlli2.html#X2007c">3</a>,&#x00A0;<a
href="userhtmlli2.html#X2007d">2</a>]</span>.
href="userhtmlli2.html#X2007c">4</a>,&#x00A0;<a
href="userhtmlli2.html#X2007d">3</a>]</span>.
<!--l. 207--><p class="indent" > We denote the sets of internal, boundary and halo points for a given subdomain
by <span
class="zplmr7y-"><img

@ -1055,8 +1055,8 @@ class="cmtt-10">_Tspmat</span><span
class="cmtt-10">_type </span>class contains all information about the local portion of the
sparse matrix and its storage mode. Its design is based on the STATE design
pattern&#x00A0;<span class="cite">[<a
href="userhtmlli2.html#XDesignPatterns">12</a>]</span> as detailed in&#x00A0;<span class="cite">[<a
href="userhtmlli2.html#XSparse03">10</a>]</span>; the type declaration is shown in figure&#x00A0;<a
href="userhtmlli2.html#XDesignPatterns">13</a>]</span> as detailed in&#x00A0;<span class="cite">[<a
href="userhtmlli2.html#XSparse03">11</a>]</span>; the type declaration is shown in figure&#x00A0;<a
href="#x8-26001r2">2<!--tex4ht:ref: fig:spmattype --></a> where <code class="lstinline"><span style="color:#000000">T</span></code> is
a placeholder for the data type and precision variants
<dl class="description"><dt class="description">

@ -3843,7 +3843,7 @@ class="pplb7t-">in</span>.<br
class="newline" />Specified as: a preconditioner data structure <a
href="userhtmlse3.html#precdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_prec</span><span
class="cmtt-10">_Tprec</span><span
class="cmtt-10">_type</span></a>.

Binary file not shown.

After

Width:  |  Height:  |  Size: 325 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

File diff suppressed because it is too large Load Diff

@ -8,6 +8,11 @@ in J.~Dongarra, K.~Madsen, J.~Wasniewski, editors,
Proceedings of PARA~04 Workshop on State of the Art
in Scientific Computing, pp.~546--553, Lecture Notes in Computer Science,
Springer, 2005.
\bibitem{BERTACCINIFILIPPONE}
D. Bertaccini\ and\ S. Filippone,
{\em Sparse approximate inverse preconditioners on high performance GPU platforms},
Comput. Math. Appl., 71, (2016), no.~3, 693--711.
%
\bibitem{2007d} A. Buttari, D. di Serafino, P. D'Ambra, S. Filippone,\newblock
2LEV-D2P4: a package of high-performance preconditioners,\newblock
Applicable Algebra in Engineering, Communications and Computing,
@ -183,7 +188,14 @@ MIT Press, 1998.
{\em Scientific Programming\/}~{\em 22,\/}~1, 1--19.
\bibitem{OurTechRep}
D.~Barbieri, V.~Cardellini, A.~Fanfarillo, S.~Filippone, Three storage formats
for sparse matrices on {GPGPUs}, Tech. Rep. DICII RR-15.6, Universit\`a di
for sparse matrices on {GPGPUs}, Tech. Rep. DICII RR-15.6,
Universit\`a di
Roma Tor Vergata (February 2015).
\bibitem{Filippone:2017:SMM:3034774.3017994}
S.~Filippone, V.~Cardellini, D.~Barbieri, and A.~Fanfarillo.
Sparse matrix-vector multiplication on {GPGPUs}.
{\em ACM Trans. Math. Softw.}, 43(4):30:1--30:49, 2017.
\end{thebibliography}

@ -1,6 +1,6 @@
\section{Error handling}
\section{Error handling\label{sec:errors}}
The PSBLAS library error handling policy has been completely rewritten
in version 2.0. The idea behind the design of this new error handling

@ -76,11 +76,10 @@ $ptype$ string as follows\footnote{The string is case-insensitive}:
\item[DIAG] Diagonal scaling; each entry of the input vector is
multiplied by the reciprocal of the sum of the absolute values of
the coefficients in the corresponding row of matrix $A$;
\item[BJAC] Precondition by a factorization of the
block-diagonal of matrix $A$, where block boundaries are determined
by the data allocation boundaries for each process; requires no
communication. Only the incomplete factorization $ILU(0)$ is
currently implemented.
\item[BJAC] Precondition by a factorization or an approximante inverse
of the block-diagonal of matrix $A$, where block boundaries are
determined by the data allocation boundaries for each process;
requires no communication. See also Table-\ref{tab:p_subsolve_1}.
\end{description}
@ -105,13 +104,13 @@ contained in \fortinline|val|.
\fortinline|what| & \fortinline|character(len=*)|. \\
& The parameter to be set. It can be specified through its name;
the string is case-insensitive. See
Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.\\
Table~\ref{tab:p_subsolve_1}.\\
\fortinline|val | & \fortinline|integer| \emph{or} \fortinline|character(len=*)| \emph{or}
\fortinline|real(psb_spk_)| \emph{or} \fortinline|real(psb_dpk_)|,
\fortinline|intent(in)|.\\
& The value of the parameter to be set. The list of allowed
values and the corresponding data types is given in
Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.
Table~\ref{tab:p_subsolve_1}.
When the value is of type \fortinline|character(len=*)|,
it is also treated as case insensitive.\\
\fortinline|info| & \fortinline|integer, intent(out)|.\\
@ -123,13 +122,14 @@ contained in \fortinline|val|.
\noindent
A number of subdomain solvers can be chosen with this method;
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}.\\
default values, is given in Table-\ref{tab:p_subsolve_1}.\\
\bsideways
\begin{center}
\small
\begin{tabular}{|p{3.6cm}|l|p{1.9cm}|p{3.6cm}|p{6.5cm}|}
% \begin{tabular}{|p{3.6cm}|l|p{1.9cm}|p{3.6cm}|p{6.5cm}|}
\begin{tabular}{|p{3.2cm}|l|p{2.6cm}|p{2.6cm}|p{6.7cm}|}
\hline
\fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} &
\textsc{comments} \\ \hline
@ -148,20 +148,6 @@ default values, is given in Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.\\
do not employ triangular system solve
kernels,
see~\cite{BERTACCINIFILIPPONE}.\\ \hline
\hline
\end{tabular}
\end{center}
\caption{Parameters defining the solver or the details of the one-level preconditioner.
\label{tab:p_smoother}}
\esideways
\bsideways
\begin{center}
\small
\begin{tabular}{|p{3.2cm}|l|p{2.6cm}|p{2.6cm}|p{6.7cm}|}
\hline
\fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} &
\textsc{comments} \\ \hline
\fortinline|'SUB_FILLIN'| & \fortinline|integer|
& Any integer \par number~$\ge 0$
& 0
@ -170,12 +156,41 @@ default values, is given in Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.\\
& Any real number~$\ge 0$
& 0
& Drop tolerance $t$ in the ILU($p,t$) factorization. \\ \hline
\hline
\fortinline|'ILU_ALG'| & \fortinline|character(len=*)|
& \fortinline|'MILU'|
& \fortinline|'NONE'|
& ILU algorithmic variant \\ \hline
\fortinline|'ILUT_SCALE'| & \fortinline|character(len=*)|
& \fortinline|'MAXVAL'| \par
\fortinline|'DIAG'| \par
\fortinline|'ARSWUM'| \par
\fortinline|'ARCSUM'| \par
\fortinline|'ACLSUM'| \par
\fortinline|'NONE'|
& \fortinline|'NONE'|
& ILU scaling strategy \\ \hline
\fortinline|'INV_FILLIN'| & \fortinline|integer|
& Any integer \par number~$\ge 0$
& 0
& Second fill-in level $q$ of the INVK($p,q$)
approximate inverse. \\ \hline
\fortinline|'INV_ILUTHRS'| & \fortinline|real(kind_parameter)|
& Any real number~$\ge 0$
& 0
& Second drop tolerance $s$ in the
INVT($t,s$) approximate inverse. \\ \hline
\fortinline|'AINV_ALG'| & \fortinline|character(len=*)|
& \fortinline|'LLK'| \par
\fortinline|'SYM-LLK'| \par
\fortinline|'STAB-LLK'| \par
\fortinline|'MLK,LMX'|
& \fortinline|'LLK'|
& AINV algorithmic strategy. \\ \hline
\end{tabular}
\end{center}
\caption{Parameters defining the smoother or the details of the one-level preconditioner
(continued).\label{tab:p_smoother_1}}
\esideways
\caption{Parameters defining the solver of the BJAC
preconditioner.\label{tab:p_subsolve_1}}
\esideways

@ -93,7 +93,7 @@
\newcommand{\example}{\stepcounter{example}%
\section*{\examplename~\theexample}}
\newcommand{\precdata}{\hyperlink{precdata}{{\tt psb\_prec\_type}}}
\newcommand{\precdata}{\hyperlink{precdata}{{\tt psb\_Tprec\_type}}}
\newcommand{\descdata}{\hyperlink{descdata}{{\tt psb\_desc\_type}}}
\newcommand{\spdata}{\hyperlink{spdata}{{\tt psb\_Tspmat\_type}}}
\newcommand{\vdata}{\hyperlink{vdata}{{\tt psb\_T\_vect\_type}}}

@ -84,7 +84,7 @@
\newcommand{\example}{\stepcounter{example}%
\section*{\examplename~\theexample}}
\newcommand{\precdata}{\hyperlink{precdata}{{\tt psb\_prec\_type}}}
\newcommand{\precdata}{\hyperlink{precdata}{{\tt psb\_Tprec\_type}}}
\newcommand{\descdata}{\hyperlink{descdata}{{\tt psb\_desc\_type}}}
\newcommand{\spdata}{\hyperlink{spdata}{{\tt psb\_Tspmat\_type}}}
\newcommand{\vdata}{\hyperlink{vdata}{{\tt psb\_T\_vect\_type}}}

Loading…
Cancel
Save