[petsc-users] Number of levels of multigrid : 2-3 is sufficient ??

Matthew Knepley knepley at gmail.com
Thu Oct 15 06:07:24 CDT 2015


On Wed, Oct 14, 2015 at 9:32 PM, Timothée Nicolas <
timothee.nicolas at gmail.com> wrote:

> Thank you Barry for pointing this out. Indeed on a system with no
> debugging the Jacobian evaluations no longer dominate the time (less than
> 10%). However the rest is similar, except the improvement from 2 to 3
> levels is much better. Still it saturates after levels=3. I understand it
> in terms of CPU time thanks to Matthew's explanations, however what
> surprises me more is that KSP iterations are not more efficient. At the
> least, even if it takes more time to have more levels because of memory
> issues, I would expect KSP iterations to converge more rapidly with more
> levels, but it is not the case as you can see. Probably there is also a
> rationale behind this but I cannot see easily.
>

That conclusion makes no sense to me. Thought experiment:

  I have K levels, which means that on the coarsest level K I do a direct
solve. Now I add a level
  so that I have K+1. On level K-1, now instead using the result of a
direct solve as a starting guess,
  I use some iterative result. I cannot imagine that the iterates would go
down.

   Matt


> I send the new outputs
>
> Best
>
> Timothee
>
> 2015-10-15 3:02 GMT+09:00 Barry Smith <bsmith at mcs.anl.gov>:
>
>> 1) Your timings are meaningless! You cannot compare timings when built
>> with all debugging on, PERIOD!
>>
>>   ##########################################################
>>       #                                                        #
>>       #                          WARNING!!!                    #
>>       #                                                        #
>>       #   This code was compiled with a debugging option,      #
>>       #   To get timing results run ./configure                #
>>       #   using --with-debugging=no, the performance will      #
>>       #   be generally two or three times faster.              #
>>       #                                                        #
>>       ##########################################################
>>
>> 2) Please run with -snes_view .
>>
>> 3) Note that with 7 levels
>>
>> SNESJacobianEval      21 1.0 2.4364e+01 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>> 0.0e+00 54  0  0  0  0  54  0  0  0  0     0
>>
>> with 2 levels
>>
>> SNESJacobianEval       6 1.0 2.2441e+01 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>> 0.0e+00 34  0  0  0  0  34  0  0  0  0     0
>>
>>
>> The Jacobian evaluation is dominating the time! Likely if you fix the
>> debugging this will be less the case
>>
>>   Barry
>>
>> > On Oct 13, 2015, at 9:23 PM, Timothée Nicolas <
>> timothee.nicolas at gmail.com> wrote:
>> >
>> > Dear all,
>> >
>> > I have been playing around with multigrid recently, namely with
>> /ksp/ksp/examples/tutorials/ex42.c, with /snes/examples/tutorial/ex5.c and
>> with my own implementation of a laplacian type problem. In all cases, I
>> have noted no improvement whatsoever in the performance, whether in CPU
>> time or KSP iteration, by varying the number of levels of the multigrid
>> solver. As an example, I have attached the log_summary for ex5.c with
>> nlevels = 2 to 7, launched by
>> >
>> > mpiexec -n 1 ./ex5 -da_grid_x 21 -da_grid_y 21 -ksp_rtol 1.0e-9
>> -da_refine 6 -pc_type mg -pc_mg_levels # -snes_monitor -ksp_monitor
>> -log_summary
>> >
>> > where -pc_mg_levels is set to a number between 2 and 7.
>> >
>> > So there is a noticeable CPU time improvement from 2 levels to 3 levels
>> (30%), and then no improvement whatsoever. I am surprised because with 6
>> levels of refinement of the DMDA the fine grid has more than 1200 points so
>> with 3 levels the coarse grid still has more than 300 points which is still
>> pretty large (I assume the ratio between grids is 2). I am wondering how
>> the coarse solver efficiently solves the problem on the coarse grid with
>> such a large number of points ? Given the principle of multigrid which is
>> to erase the smooth part of the error with relaxation methods, which are
>> usually efficient only for high frequency, I would expect optimal
>> performance when the coarse grid is basically just a few points in each
>> direction. Does anyone know why the performance saturates at low number of
>> levels ? Basically what happens internally seems to be quite different from
>> what I would expect...
>> >
>> > Best
>> >
>> > Timothee
>> >
>> <ex5_2_levels_of_multigrid.log><ex5_3_levels_of_multigrid.log><ex5_4_levels_of_multigrid.log><ex5_5_levels_of_multigrid.log><ex5_6_levels_of_multigrid.log><ex5_7_levels_of_multigrid.log>
>>
>>
>


-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20151015/226bb2b4/attachment.html>


More information about the petsc-users mailing list