mirror of
https://github.com/sfilippone/amg4psblas.git
synced 2026-10-06 22:55:12 +00:00
New GPU example
This commit is contained in:
+26
-20
@@ -34,7 +34,7 @@ class="cmr-12">The code discussed here shows how to set up a program exploiting
|
||||
class="cmr-12">capabilities of PSBLAS and AMG4PSBLAS. The code example is available in the</span>
|
||||
<span
|
||||
class="cmr-12">source distribution directory </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">amg4psblas/tests/gpu</span></span></span><span
|
||||
class="cmtt-12">amg4psblas/examples/gpu</span></span></span><span
|
||||
class="cmr-12">.</span>
|
||||
<!--l. 427--><p class="indent" > <span
|
||||
class="cmr-12">First of all, we need to include the appropriate modules and declare some auxiliary</span>
|
||||
@@ -51,19 +51,16 @@ class="cmr-12">variables:</span>
|
||||
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 451--><p class="noindent" >
|
||||
<!--l. 448--><p class="noindent" >
|
||||
<div class="minipage"><pre class="verbatim" id="verbatim-10">
|
||||
program amg_d_pde3d
|
||||
program amg_dexample_gpu
|
||||
  use psb_base_mod
|
||||
  use amg_prec_mod
|
||||
  use psb_krylov_mod
|
||||
  use psb_util_mod
|
||||
  use psb_gpu_mod
|
||||
  use data_input
|
||||
  use amg_d_pde3d_base_mod
|
||||
  use amg_d_pde3d_exp_mod
|
||||
  use amg_d_pde3d_gauss_mod
|
||||
  use amg_d_genpde_mod
|
||||
  use amg_d_pde_mod
|
||||
  implicit none
|
||||
  .......
|
||||
  ! GPU variables
|
||||
@@ -72,7 +69,7 @@ program amg_d_pde3d
|
||||
  type(psb_i_vect_gpu)       :: igmold
|
||||
 
|
||||
</pre>
|
||||
<!--l. 473--><p class="nopar" ></div></div>
|
||||
<!--l. 467--><p class="nopar" ></div></div>
|
||||
<br /> <div class="caption"
|
||||
><span class="id">Listing 5: </span><span
|
||||
class="content">setup of a GPU-enabled test program part one.</span></div><!--tex4ht:label?: x16-15001r5 -->
|
||||
@@ -80,7 +77,15 @@ class="content">setup of a GPU-enabled test program part one.</span></div><!--te
|
||||
|
||||
|
||||
</div><hr class="endfloat" />
|
||||
<!--l. 481--><p class="indent" > <span
|
||||
<!--l. 474--><p class="indent" > <span
|
||||
class="cmr-12">In this particular example we are choosing to employ a </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">HLG</span></span></span> <span
|
||||
class="cmr-12">data structure for</span>
|
||||
<span
|
||||
class="cmr-12">sparse matrices on GPUs; for more information please refer to the PSBLAS-EXT users’</span>
|
||||
<span
|
||||
class="cmr-12">guide.</span>
|
||||
<!--l. 478--><p class="indent" > <span
|
||||
class="cmr-12">We then have to initialize the GPU environment, and pass the appropriate MOLD</span>
|
||||
<span
|
||||
class="cmr-12">variables to the build methods (see also the PSBLAS and PSBLAS-EXT users’</span>
|
||||
@@ -89,7 +94,7 @@ class="cmr-12">guides).</span>
|
||||
|
||||
|
||||
|
||||
<!--l. 484--><p class="indent" > <a
|
||||
<!--l. 481--><p class="indent" > <a
|
||||
id="x16-15002r6"></a><hr class="float"><div class="float"
|
||||
>
|
||||
|
||||
@@ -97,7 +102,7 @@ class="cmr-12">guides).</span>
|
||||
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 500--><p class="noindent" >
|
||||
<!--l. 497--><p class="noindent" >
|
||||
<div class="minipage"><pre class="verbatim" id="verbatim-11">
|
||||
  call psb_init(ctxt)
|
||||
  call psb_info(ctxt,iam,np)
|
||||
@@ -111,7 +116,7 @@ class="cmr-12">guides).</span>
|
||||
  call prec%smoothers_build(a,desc_a,info, amold=agmold, vmold=vgmold, imold=igmold)
|
||||
 
|
||||
</pre>
|
||||
<!--l. 515--><p class="nopar" ></div></div>
|
||||
<!--l. 512--><p class="nopar" ></div></div>
|
||||
<br /> <div class="caption"
|
||||
><span class="id">Listing 6: </span><span
|
||||
class="content">setup of a GPU-enabled test program part two.</span></div><!--tex4ht:label?: x16-15002r6 -->
|
||||
@@ -119,7 +124,7 @@ class="content">setup of a GPU-enabled test program part two.</span></div><!--te
|
||||
|
||||
|
||||
</div><hr class="endfloat" />
|
||||
<!--l. 522--><p class="indent" > <span
|
||||
<!--l. 519--><p class="indent" > <span
|
||||
class="cmr-12">Finally, we convert the input matrix, the descriptor and the vectors to use a</span>
|
||||
<span
|
||||
class="cmr-12">GPU-enabled internal storage format. We then preallocate the preconditioner</span>
|
||||
@@ -130,7 +135,7 @@ class="cmr-12">GPU environment</span>
|
||||
|
||||
|
||||
|
||||
<!--l. 526--><p class="indent" > <a
|
||||
<!--l. 523--><p class="indent" > <a
|
||||
id="x16-15003r7"></a><hr class="float"><div class="float"
|
||||
>
|
||||
|
||||
@@ -138,7 +143,7 @@ class="cmr-12">GPU environment</span>
|
||||
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 555--><p class="noindent" >
|
||||
<!--l. 552--><p class="noindent" >
|
||||
<div class="minipage"><pre class="verbatim" id="verbatim-12">
|
||||
  call desc_a%cnv(mold=igmold)
|
||||
  call a%cscnv(info,mold=agmold)
|
||||
@@ -162,7 +167,7 @@ class="cmr-12">GPU environment</span>
|
||||
  stop
|
||||
 
|
||||
</pre>
|
||||
<!--l. 582--><p class="nopar" ></div></div>
|
||||
<!--l. 579--><p class="nopar" ></div></div>
|
||||
<br /> <div class="caption"
|
||||
><span class="id">Listing 7: </span><span
|
||||
class="content">setup of a GPU-enabled test program part three.</span></div><!--tex4ht:label?: x16-15003r7 -->
|
||||
@@ -170,7 +175,7 @@ class="content">setup of a GPU-enabled test program part three.</span></div><!--
|
||||
|
||||
|
||||
</div><hr class="endfloat" />
|
||||
<!--l. 590--><p class="indent" > <span
|
||||
<!--l. 587--><p class="indent" > <span
|
||||
class="cmr-12">It is very important to employ solvers that are suited to the GPU, i.e. solvers that</span>
|
||||
<span
|
||||
class="cmr-12">do NOT employ triangular system solve kernels. Solvers that satisfy this constraint</span>
|
||||
@@ -188,9 +193,10 @@ class="cmtt-12">INVT</span></span></span>
|
||||
</li>
|
||||
<li class="itemize"><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">AINV</span></span></span></li></ul>
|
||||
<!--l. 599--><p class="noindent" ><span
|
||||
class="cmr-12">and their </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">L1</span></span></span> <span
|
||||
<!--l. 596--><p class="noindent" ><span
|
||||
class="cmr-12">and their </span><span
|
||||
class="cmmi-12">ℓ</span><sub><span
|
||||
class="cmr-8">1</span></sub> <span
|
||||
class="cmr-12">variants.</span>
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user