Doc fixes
@@ -1,7 +1,7 @@
|
||||
all: guide
|
||||
|
||||
guide:
|
||||
cd src && $(MAKE)
|
||||
cd src && $(MAKE) clean all
|
||||
|
||||
doxy:
|
||||
doxygen doxypsb
|
||||
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 58 KiB |
|
After Width: | Height: | Size: 61 KiB |
@@ -52,13 +52,13 @@ href="userhtmlse9.html#x14-1280009" id="QQ2-14-158">Utilities</a></span>
|
||||
<br />  <span class="sectionToc" >10 <a
|
||||
href="userhtmlse10.html#x15-13500010" id="QQ2-15-165">Preconditioner routines</a></span>
|
||||
<br />  <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 />  <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 />  <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 />  <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>
|
||||
|
||||
|
||||
|
||||
|
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 />  <span class="sectionToc" >10 <a
|
||||
href="userhtmlse10.html#x15-13500010" id="QQ2-15-165">Preconditioner routines</a></span>
|
||||
<br />  <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 />  <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 />  <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 />  <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 — Initialize
|
||||
<br />   <span class="subsectionToc" >10.2 <a
|
||||
href="userhtmlse10.html#x15-13700010.2" id="QQ2-15-167">Set — set preconditioner parameters</a></span>
|
||||
<br />   <span class="subsectionToc" >10.3 <a
|
||||
href="userhtmlse10.html#x15-13800010.3" id="QQ2-15-170">build — Builds a preconditioner</a></span>
|
||||
href="userhtmlse10.html#x15-13800010.3" id="QQ2-15-169">build — Builds a preconditioner</a></span>
|
||||
<br />   <span class="subsectionToc" >10.4 <a
|
||||
href="userhtmlse10.html#x15-13900010.4" id="QQ2-15-171">apply — Preconditioner application routine</a></span>
|
||||
href="userhtmlse10.html#x15-13900010.4" id="QQ2-15-170">apply — Preconditioner application routine</a></span>
|
||||
<br />   <span class="subsectionToc" >10.5 <a
|
||||
href="userhtmlse10.html#x15-14000010.5" id="QQ2-15-172">descr — Prints a description of current preconditioner</a></span>
|
||||
href="userhtmlse10.html#x15-14000010.5" id="QQ2-15-171">descr — Prints a description of current preconditioner</a></span>
|
||||
<br />   <span class="subsectionToc" >10.6 <a
|
||||
href="userhtmlse10.html#x15-14100010.6" id="QQ2-15-173">clone — clone current preconditioner</a></span>
|
||||
href="userhtmlse10.html#x15-14100010.6" id="QQ2-15-172">clone — clone current preconditioner</a></span>
|
||||
<br />   <span class="subsectionToc" >10.7 <a
|
||||
href="userhtmlse10.html#x15-14200010.7" id="QQ2-15-174">free — Free a preconditioner</a></span>
|
||||
href="userhtmlse10.html#x15-14200010.7" id="QQ2-15-173">free — Free a preconditioner</a></span>
|
||||
<br />  <span class="sectionToc" >11 <a
|
||||
href="userhtmlse11.html#x17-14300011">Iterative Methods</a></span>
|
||||
<br />   <span class="subsectionToc" >11.1 <a
|
||||
href="userhtmlse11.html#x17-14400011.1" id="QQ2-17-176">psb_krylov — Krylov Methods Driver Routine</a></span>
|
||||
href="userhtmlse11.html#x17-14400011.1" id="QQ2-17-175">psb_krylov — Krylov Methods Driver Routine</a></span>
|
||||
<br />   <span class="subsectionToc" >11.2 <a
|
||||
href="userhtmlse11.html#x17-14500011.2" id="QQ2-17-177">psb_richardson — Richardson Iteration Driver Routine</a></span>
|
||||
href="userhtmlse11.html#x17-14500011.2" id="QQ2-17-176">psb_richardson — Richardson Iteration Driver Routine</a></span>
|
||||
<br />  <span class="sectionToc" >12 <a
|
||||
href="userhtmlse12.html#x19-14600012">Extensions</a></span>
|
||||
<br />   <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 />   <span class="subsectionToc" >12.2 <a
|
||||
href="userhtmlse12.html#x19-14800012.2" id="QQ2-19-180">Extensions’ Data Structures</a></span>
|
||||
href="userhtmlse12.html#x19-14800012.2" id="QQ2-19-179">Extensions’ Data Structures</a></span>
|
||||
<br />   <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 />   <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 />  <span class="sectionToc" >13 <a
|
||||
href="userhtmlse13.html#x20-15500013">CUDA Environment Routines</a></span>
|
||||
<br />   <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 />   <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 />   <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 />   <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 />   <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 />   <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 />   <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 />   <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 />   <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 />   <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 />   <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 />   <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 />   <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 />   <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. Dongarra, K.&#x
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
[2]<span class="bibsp">   </span></span><a
|
||||
id="XBERTACCINIFILIPPONE"></a>D. Bertaccini and 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. 3, 693–711.
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
[3]<span class="bibsp">   </span></span><a
|
||||
id="X2007d"></a>A. Buttari, D. di Serafino, P. D’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">   </span></span><a
|
||||
[4]<span class="bibsp">   </span></span><a
|
||||
id="X2007c"></a>P. D’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">   </span></span><a
|
||||
[5]<span class="bibsp">   </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. 14, 1–17, 1988.
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
[5]<span class="bibsp">   </span></span><a
|
||||
[6]<span class="bibsp">   </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. 16,
|
||||
1–17, 1990.
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
[6]<span class="bibsp">   </span></span><a
|
||||
id="XBLACS"></a>J. J. Dongarra and R. C. Whaley, <span
|
||||
class="pplri7t-">A User’s Guide to the BLACS</span>
|
||||
<span
|
||||
class="pplri7t-">v.</span><span
|
||||
class="pplri7t-"> 1.1</span>, Lapack Working Note 94, Tech. Rep. UT-CS-95-281, University of
|
||||
Tennessee, March 1995 (updated May 1997).
|
||||
|
||||
|
||||
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
[7]<span class="bibsp">   </span></span><a
|
||||
id="XBLACS"></a>J. J. Dongarra and R. C. Whaley, <span
|
||||
class="pplri7t-">A User’s Guide to the BLACS</span>
|
||||
<span
|
||||
class="pplri7t-">v.</span><span
|
||||
class="pplri7t-"> 1.1</span>, Lapack Working Note 94, Tech. Rep. UT-CS-95-281, University of
|
||||
Tennessee, March 1995 (updated May 1997).
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
[8]<span class="bibsp">   </span></span><a
|
||||
id="Xsblas97"></a>I. Duff, M. Marrone, G. Radicati and C. 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. 379–401, 1997.
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
[8]<span class="bibsp">   </span></span><a
|
||||
[9]<span class="bibsp">   </span></span><a
|
||||
id="Xsblas02"></a>I. Duff, M. Heroux and R. 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. 239–267, 2002.
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
[9]<span class="bibsp">   </span></span><a
|
||||
[10]<span class="bibsp">   </span></span><a
|
||||
id="XPSBLAS"></a>S. Filippone and M. 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. 527–550, 2000.
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
[10]<span class="bibsp">   </span></span><a
|
||||
[11]<span class="bibsp">   </span></span><a
|
||||
id="XSparse03"></a>S. Filippone and A. 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">   </span></span><a
|
||||
[12]<span class="bibsp">   </span></span><a
|
||||
id="XKIVA3PSBLAS"></a>S. Filippone, P. D’Ambra, M. Colajanni, <span
|
||||
class="pplri7t-">Using a Parallel Library of</span>
|
||||
<span
|
||||
@@ -111,14 +119,14 @@ class="pplri7t-">Clusters</span>, in G. Joubert, A. Murli,
|
||||
College Press, 2002.
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
[12]<span class="bibsp">   </span></span><a
|
||||
[13]<span class="bibsp">   </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">   </span></span><a
|
||||
[14]<span class="bibsp">   </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">   </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. 5,
|
||||
38–329, 1979.
|
||||
|
||||
|
||||
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
[15]<span class="bibsp">   </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. 5,
|
||||
38–329, 1979.
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
[16]<span class="bibsp">   </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. 23, 32–49.
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
[16]<span class="bibsp">   </span></span><a
|
||||
[17]<span class="bibsp">   </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">   </span></span><a
|
||||
[18]<span class="bibsp">   </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">   </span></span><a
|
||||
[19]<span class="bibsp">   </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">   </span></span><a
|
||||
[20]<span class="bibsp">   </span></span><a
|
||||
id="XMPI1"></a>M. Snir, S. Otto, S. Huss-Lederman, D. Walker and J. 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">   </span></span><a
|
||||
[21]<span class="bibsp">   </span></span><a
|
||||
id="XDesPat:11"></a>D. Barbieri, V. Cardellini,
|
||||
S. Filippone and D. 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">   </span></span><a
|
||||
[22]<span class="bibsp">   </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> <span
|
||||
class="pplri7t-">22,</span> 1, 1–19.
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
[22]<span class="bibsp">   </span></span><a
|
||||
[23]<span class="bibsp">   </span></span><a
|
||||
id="XOurTechRep"></a>D. Barbieri, V. Cardellini, A. Fanfarillo, S. 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">   </span></span><a
|
||||
id="XFilippone:2017:SMM:3034774.3017994"></a>S. Filippone, V. Cardellini, D. Barbieri, and A. Fanfarillo. Sparse
|
||||
matrix-vector multiplication on GPGPUs. <span
|
||||
class="pplri7t-">ACM Trans. Math. Softw.</span>,
|
||||
43(4):30:1–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 2003 <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 77 and
|
||||
Fortran 95 software, plus a handful of C routines.
|
||||
<!--l. 19--><p class="indent" > The use of Fortran 2003 offers a number of advantages over Fortran 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 <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 2003 include <span class="cite">[<a
|
||||
href="userhtmlli2.html#XDesPat:11">20</a>, <a
|
||||
href="userhtmlli2.html#XRouXiaXu:11">18</a>]</span>; sufficient support for Fortran 2003 is now available
|
||||
href="userhtmlli2.html#XDesPat:11">21</a>, <a
|
||||
href="userhtmlli2.html#XRouXiaXu:11">19</a>]</span>; sufficient support for Fortran 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 95, with its support for
|
||||
object-based design, with other languages; these have been advocated by a number
|
||||
of authors, e.g. <span class="cite">[<a
|
||||
href="userhtmlli2.html#Xmachiels">15</a>]</span>. Moreover, the Fortran 95 facilities for dynamic memory
|
||||
href="userhtmlli2.html#Xmachiels">16</a>]</span>. Moreover, the Fortran 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 <span class="cite">[<a
|
||||
href="userhtmlli2.html#Xsblas97">7</a>, <a
|
||||
href="userhtmlli2.html#Xsblas02">8</a>]</span>, which in its turn is based on the proposal for
|
||||
href="userhtmlli2.html#Xsblas97">8</a>, <a
|
||||
href="userhtmlli2.html#Xsblas02">9</a>]</span>, which in its turn is based on the proposal for
|
||||
BLAS on dense matrices <span class="cite">[<a
|
||||
href="userhtmlli2.html#XBLAS1">14</a>, <a
|
||||
href="userhtmlli2.html#XBLAS2">4</a>, <a
|
||||
href="userhtmlli2.html#XBLAS3">5</a>]</span>.
|
||||
href="userhtmlli2.html#XBLAS1">15</a>, <a
|
||||
href="userhtmlli2.html#XBLAS2">5</a>, <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 — 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 <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 <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 <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 <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 <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 <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 <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
|
||||
@@ -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"> </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 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">’</span><span style="color:#000000">SUB_FILLIN</span><span style="color:#000000">’</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">’</span><span style="color:#000000">SUB_FILLIN</span><span style="color:#000000">’</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"> </span><span
|
||||
class="zplmr7y-x-x-90">≥ </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">’</span><span style="color:#000000">SUB_ILUTHRS</span><span style="color:#000000">’</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">’</span><span style="color:#000000">SUB_ILUTHRS</span><span style="color:#000000">’</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"> </span><span
|
||||
class="zplmr7y-x-x-90">≥ </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">’</span><span style="color:#000000">ILU_ALG</span><span style="color:#000000">’</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">’</span><span style="color:#000000">MILU</span><span style="color:#000000">’</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">’</span><span style="color:#000000">NONE</span><span style="color:#000000">’</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-25-4-"><td style="white-space:normal; text-align:left;" id="TBL-25-4-1"
|
||||
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">’</span><span style="color:#000000">ILUT_SCALE</span><span style="color:#000000">’</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">’</span><span style="color:#000000">MAXVAL</span><span style="color:#000000">’</span></code>
|
||||
<!--l. 165--><p class="noindent" ><code class="lstinline"><span style="color:#000000">’</span><span style="color:#000000">DIAG</span><span style="color:#000000">’</span></code>
|
||||
<!--l. 166--><p class="noindent" ><code class="lstinline"><span style="color:#000000">’</span><span style="color:#000000">ARSWUM</span><span style="color:#000000">’</span></code>
|
||||
<!--l. 167--><p class="noindent" ><code class="lstinline"><span style="color:#000000">’</span><span style="color:#000000">ARCSUM</span><span style="color:#000000">’</span></code>
|
||||
<!--l. 168--><p class="noindent" ><code class="lstinline"><span style="color:#000000">’</span><span style="color:#000000">ACLSUM</span><span style="color:#000000">’</span></code>
|
||||
<!--l. 169--><p class="noindent" ><code class="lstinline"><span style="color:#000000">’</span><span style="color:#000000">NONE</span><span style="color:#000000">’</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">’</span><span style="color:#000000">NONE</span><span style="color:#000000">’</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-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">’</span><span style="color:#000000">INV_FILLIN</span><span style="color:#000000">’</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"> </span><span
|
||||
class="zplmr7y-x-x-90">≥ </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">’</span><span style="color:#000000">INV_ILUTHRS</span><span style="color:#000000">’</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"> </span><span
|
||||
class="zplmr7y-x-x-90">≥ </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">’</span><span style="color:#000000">AINV_ALG</span><span style="color:#000000">’</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">’</span><span style="color:#000000">LLK</span><span style="color:#000000">’</span></code>
|
||||
<!--l. 184--><p class="noindent" ><code class="lstinline"><span style="color:#000000">’</span><span style="color:#000000">SYM</span><span style="color:#000000">-</span><span style="color:#000000">LLK</span><span style="color:#000000">’</span></code>
|
||||
<!--l. 185--><p class="noindent" ><code class="lstinline"><span style="color:#000000">’</span><span style="color:#000000">STAB</span><span style="color:#000000">-</span><span style="color:#000000">LLK</span><span style="color:#000000">’</span></code>
|
||||
<!--l. 186--><p class="noindent" ><code class="lstinline"><span style="color:#000000">’</span><span style="color:#000000">MLK</span><span style="color:#000000">,</span><span style="color:#000000">LMX</span><span style="color:#000000">’</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">’</span><span style="color:#000000">LLK</span><span style="color:#000000">’</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 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 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 prec%build(a, desc_a, 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 prec%apply(x,y,desc_a,info,trans,work)
|
||||
call 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 prec%descr(info)
|
||||
call prec%descr(info,iout, 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  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 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 <span class="cite">[<a
|
||||
href="userhtmlli2.html#XDesPat:11">20</a>, <a
|
||||
href="userhtmlli2.html#XCaFiRo:2014">21</a>, <a
|
||||
href="userhtmlli2.html#XSparse03">10</a>]</span>; the CUDA-specific data formats are described
|
||||
href="userhtmlli2.html#XDesPat:11">21</a>, <a
|
||||
href="userhtmlli2.html#XCaFiRo:2014">22</a>, <a
|
||||
href="userhtmlli2.html#XSparse03">11</a>]</span>; the CUDA-specific data formats are described
|
||||
in <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 2003 mechanism of <span
|
||||
class="pplri7t-">type</span>
|
||||
<span
|
||||
class="pplri7t-">extension</span> <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 <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 23: </span><span
|
||||
class="content">Notation for parameters describing a sparse matrix</span></div><!--tex4ht:label?: x19-148001r23 -->
|
||||
><span class="id">Table 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"> </span><span
|
||||
class="cmtt-9"> </span><span
|
||||
|
||||
@@ -21,7 +21,7 @@ href="userhtml.html# " >up</a>] </p></div>
|
||||
<h4 class="likesubsectionHead"><a
|
||||
id="x20-156000"></a>psb_cuda_init — 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 — 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 — 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 =  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 =  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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 <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. <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 <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 <span class="cite">[<a
|
||||
href="userhtmlli2.html#X2007c">3</a>, <a
|
||||
href="userhtmlli2.html#X2007d">2</a>]</span>.
|
||||
href="userhtmlli2.html#X2007c">4</a>, <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 <span class="cite">[<a
|
||||
href="userhtmlli2.html#XDesignPatterns">12</a>]</span> as detailed in <span class="cite">[<a
|
||||
href="userhtmlli2.html#XSparse03">10</a>]</span>; the type declaration is shown in figure <a
|
||||
href="userhtmlli2.html#XDesignPatterns">13</a>]</span> as detailed in <span class="cite">[<a
|
||||
href="userhtmlli2.html#XSparse03">11</a>]</span>; the type declaration is shown in figure <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>.
|
||||
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 325 B |
|
After Width: | Height: | Size: 378 B |
|
After Width: | Height: | Size: 290 B |
@@ -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,11 +156,40 @@ 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}}
|
||||
\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}}}
|
||||
|
||||