<div class="gmail_quote">2011/6/6 Dürrwang, Jürgen <span dir="ltr">&lt;<a href="mailto:Juergen.Duerrwang@iosb.fraunhofer.de">Juergen.Duerrwang@iosb.fraunhofer.de</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;color:#1F497D">1.Load Matrix which should be solve to CPU and GPU</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;color:#1F497D">2.Decompose in blocks, so on each block an ILU(0) can run in “parallel”.              : CPU</span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;color:#1F497D">3.Loop until tolerance is reached              </span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;color:#1F497D">4.Solve each block in parallel to get an preconditioner                                                 : CPU</span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;color:#1F497D">5.Solve CG with preconditioner to break down iteration number                            :GPU</span></p></blockquote><div><br></div><div>Step 5 is not all on the GPU. You do a matrix multiple and a dot product on the GPU, then move the vector over to the CPU, put the pieces on different cores, solve, put it back on the GPU.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;color:#1F497D">6.End loop</span></p><p class="MsoNormal">
<span lang="EN-US" style="font-size:11.0pt;color:#1F497D"> </span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;color:#1F497D">There are about 4 copies between CPU /GPU per step, but that isn’t a problem</span></p>
</blockquote></div><br><div>You have a copy each way *per CG iteration*. I think it is a problem.</div>