<div dir="ltr">Also, the coarsening algorithms may be different on the CPU and GPU runs (hypre does coarsening on the GPU). Even if the algorithms are nominally the same there could be differences in, for example, the vertex ordering in greedy coarsening algorithms that results in slightly different "C" point selection on the device, which will change the preconditioner slightly. </div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Nov 24, 2022 at 2:40 PM Barry Smith <<a href="mailto:bsmith@petsc.dev">bsmith@petsc.dev</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
  Probably some of these questions are best asked to the hypre folks. But I can answer some<br>
<br>
> On Nov 24, 2022, at 11:19 AM, nicola varini <<a href="mailto:nicola.varini@gmail.com" target="_blank">nicola.varini@gmail.com</a>> wrote:<br>
> <br>
> Dear all, I am comparing the HYPRE boomeramg preconditioner on CPU and GPU.<br>
> It looks like the defaults are different, therefore I tried to specify the match the options.<br>
> I have a few observations/questions:<br>
> 1) Why are the residuals at step 0 different?<br>
<br>
  By default, PETSc uses left preconditioning; thus, the norms reported are for the preconditioner residual and will be different for different preconditioner options (and possibly slightly different for numerical differences even if run with the same preconditioner options.  You can use -ksp_pc_side right to have the true residual norm printed, this should be the same except for possibly, hopefully, small numerics effects.<br>
<br>
> 2) If the options are the same the number of iterations should be the same?<br>
<br>
  Numerical changes could affect these. Hopefully, not much if all the algorithms are truly the same.<br>
<br>
> 3) Why on the GPU side the PCApply doesn't seem to be done on GPU?<br>
> I noticed that if I change certain options, like pc_hypre_boomeramg_relax_type_all symmetric SOR/Jacobi, the KSPSolve get slower and performs on CPU.<br>
<br>
   Hypre probably does not have, by default, a GPU version of SOR, so it must be run on a CPU (Petsc also does not currently have a GPU SOR).<br>
<br>
> However, how can I diagnose if the computations are perfomed on GPU or not?<br>
<br>
  Run with -log_view -log_view_gpu_time and look at the final columns that give some information on time and communication to the GPU. But since hypre does not log flops, the flop rates for computations done by hypre are meaningless.<br>
<br>
<br>
> <br>
> Thanks very much,<br>
> <br>
> Nicola<br>
> <log_cpu><log_gpu><br>
<br>
</blockquote></div>