<div dir="ltr"><div dir="ltr">On Sun, Oct 30, 2022 at 3:52 PM Barry Smith <<a href="mailto:bsmith@petsc.dev">bsmith@petsc.dev</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div><br></div>   In general you should expect similar but not identical conference behavior. <div><br></div><div>    I suggest running with all the monitoring you can. -ksp_monitor_true_residual -fieldsplit_0_monitor_true_residual -fieldsplit_1_monitor_true_residual and compare the various convergence between the CPU and GPU. Also run with -ksp_view and check that the various solver options are the same (they should be).</div></div></blockquote><div><br></div><div>Is the GPU using float or double?</div><div><br></div><div>   Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div>  Barry</div><div><br><div><br><blockquote type="cite"><div>On Oct 30, 2022, at 11:02 AM, Carl-Johan Thore via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a>> wrote:</div><br><div><div style="font-family:Helvetica;font-size:18px;font-style:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">Hi,<u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif"><u></u> <u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">I'm solving a topology optimization problem with Stokes flow discretized by a stabilized Q1-Q0 finite element method<u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">and using BiCGStab with the fieldsplit preconditioner to solve the linear systems. The implementation<u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">is based on DMStag, runs on Ubuntu via WSL2, and works fine with PETSc-3.18.1 on multiple CPU cores and the following<u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">options for the preconditioner:<u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif"><u></u> <u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">-fieldsplit_0_ksp_type preonly \<u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">-fieldsplit_0_pc_type gamg \<u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">-fieldsplit_0_pc_gamg_reuse_interpolation 0 \<u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">-fieldsplit_1_ksp_type preonly \<u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">-fieldsplit_1_pc_type jacobi<span> </span><u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif"><u></u> <u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">However, when I enable GPU computations by adding two options -<u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif"><u></u> <u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">...<u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">-dm_vec_type cuda \<u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">-dm_mat_type aijcusparse \<u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">-fieldsplit_0_ksp_type preonly \<u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">-fieldsplit_0_pc_type gamg \<u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">-fieldsplit_0_pc_gamg_reuse_interpolation 0 \<u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">-fieldsplit_1_ksp_type preonly \<u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">-fieldsplit_1_pc_type jacobi<span> </span><u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif"><u></u> <u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">- KSP still works fine the first couple of topology optimization iterations but then<u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">stops with "Linear solve did not converge due to DIVERGED_DTOL ..".<u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif"><u></u> <u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">My question is whether I should expect the GPU versions of the linear solvers and pre-conditioners<u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">to function exactly as their CPU counterparts (I got this impression from the documentation),<u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">in which case I've probably made some mistake in my own code, or whether there are other/additional<u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">settings or modifications I should use to run on the GPU (an NVIDIA Quadro T2000)?<u></u><u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif"><u></u> <u></u></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif"><span lang="SV">Kind regards,<u></u><u></u></span></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif"><span lang="SV"><u></u> <u></u></span></div><div style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif"><span lang="SV">Carl-Johan</span></div></div></div></blockquote></div><br></div></div></blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div>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><br></div><div><a href="http://www.cse.buffalo.edu/~knepley/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div></div></div></div>