<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, May 19, 2014 at 3:16 PM, Jonathan Wong <span dir="ltr"><<a href="mailto:jon.the.wong@gmail.com" target="_blank">jon.the.wong@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Matthew: Thanks for clarifying about the block-jacobi.<div><br></div><div>Paul: I'm only using bjacobi with PETSc to show that the problem is solvable, and to provide some "estimation" as to the performance of the jacobi preconditioner. On the GPU, I am using CUSP to do cg+jacobi which works fine for this 50k node mesh.</div>
</div></blockquote><div><br></div><div>Its possible the GPU CG code is just ignoring breakdown and continuing the solve. This may work sometimes, but</div><div>could give incorrect answers.</div><div><br></div><div>Also, it seems simply beyond belief that CG+Jacobi could solve any FEM problem other than the identity. For example,</div>
<div>the Laplacian has a condition number that is proportional to h^{-2}, so it grows like N for linear finite elements in 2D.</div><div>Are you trying to solve something with an extremely small timestep so that it looks like the identity?</div>
<div><br></div><div>   Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div class="gmail_extra"><div class="gmail_quote">On Mon, May 19, 2014 at 12:07 PM, Paul Mullowney <span dir="ltr"><<a href="mailto:paulmullowney@gmail.com" target="_blank">paulmullowney@gmail.com</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>I don't think bjacobi is working on GPUs. I know Dominic made a pull request a few months ago, but I don't know if its been integrated into next.<span><font color="#888888"><br>


</font></span></div><span><font color="#888888">-Paul<br></font></span></div><div><div><div class="gmail_extra">
<br><br><div class="gmail_quote">On Mon, May 19, 2014 at 12:45 PM, Matthew Knepley <span dir="ltr"><<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>On Mon, May 19, 2014 at 1:42 PM, Jonathan Wong <span dir="ltr"><<a href="mailto:jon.the.wong@gmail.com" target="_blank">jon.the.wong@gmail.com</a>></span> wrote:<br>




<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Thanks for the input. To clarify, I'm trying to compare GPU algorithms to Petsc, and they only have cg/jacobi for what I'm comparing at the moment. This is why I'm not using gmres (which also works well). <br>





<br>I can solve the problem with the GPU (custom code) using CG + jacobi for all the meshes. On the CPU side, I can solve everything with cg/bjacobi and almost all of my meshes with cg/jacobi except for my 50k node mesh. I can solve the problem with my finite element built-in direct solver (just takes awhile) on one processor. I've been reading that by default the bjacobi pc uses one block per processor. So I had assumed that for one processor block-jacobi and jacobi would give similar results. cg+bjacobi works fine. cg+jacobi does not.<br>




</div></div></blockquote><div><br></div></div><div>"Jacobi" means preconditioning by the inverse of the diagonal of the matrix. Block-Jacobi means using a preconditioner</div><div>formed from each of the blocks, in this case 1 block. By default the inner preconditioner is ILU(0), not jacobi. You can</div>




<div>make them equivalent using -sub_pc_type jacobi.</div><div><br></div><div>   Matt</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">



<div>
</div>I'll just look into the preconditioner code and use KSPview to try to figure out what the differences are for one processor. I'm not sure why the GPU can consistently solve the problem with cg/jacobi. I'm assuming this is due to the way round-off or the order of operations differences between the two.<br>





</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, May 19, 2014 at 6:35 AM, Jed Brown <span dir="ltr"><<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div>Matthew Knepley <<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>> writes:<br>
> No, Block-Jacobi and Jacobi are completely different. If you are not<br>
> positive definite, you should be using MINRES.<br>
<br>
</div>MINRES requires an SPD preconditioner.<br>
</blockquote></div><br></div>
</blockquote></div></div><br><br clear="all"><span class="HOEnZb"><font color="#888888"><div><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>




-- Norbert Wiener
</div></font></span></div></div><span class="HOEnZb"><font color="#888888">
</font></span></blockquote></div><span class="HOEnZb"><font color="#888888"><br></font></span></div>
</div></div></blockquote></div><br></div></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener
</div></div>