[petsc-users] Projection preconditioner as PCMG

Jed Brown jedbrown at mcs.anl.gov
Tue Mar 6 14:14:48 CST 2012


On Tue, Mar 6, 2012 at 11:00, Abdul Hanan Sheikh <hanangul12 at yahoo.co.uk>wrote:

> I make my query simpler: how can I implement a preconditioner of form
>
> P = I - A*P*(A_H)^-1 * R
> with any Krylov , where
> I : Identity
> P : Prolongation
> A_H : Galerkin coarse matrix
> R : Restriction,
>
> Can I exploit the CGC part of PCMG , by making its pre and post smoother
> null ?
>

You use P twice in the above, but I think I see what you mean. You can
certainly use PCMG with no pre- or post-smoother or you could do the same
here with PCComposite, but you probably don't want that extra application
of A in the preconditioner unless you are going to use a post-smoother.

That is, suppose C = P*A_H^{-1}*R is the coarse grid solver. Then with a
post-smoother S, application of the preconditioner to the vector b would be
C b + S (b - A C b). If you drop the post-smoother by setting S = I, you
get C b + b - A C b. Keeping the extra multiplication with A and not using
a post-smoother will likely destabilize the method. As an example, take
src/snes/examples/tutorials/ex5.c and just look at the first linear solve
with 2-level method. First, with an additive coarse grid correction and no
fine grid smoother (i.e. the preconditioner is I + C where C is an
Prolongate*Exact_Coarse_Solve*Restrict).

$ ./ex5 -da_grid_x 201 -da_grid_y 201 -snes_max_it 1
-ksp_monitor_singular_value -pc_type mg -pc_mg_levels 2 -pc_mg_type
additive -mg_levels_ksp_type preonly -mg_levels_pc_type  none
    0 KSP Residual norm 1.991818008559e+01 % max 1.000000000000e+00 min
1.000000000000e+00 max/min 1.000000000000e+00
    1 KSP Residual norm 8.562399481020e+00 % max 9.703742797548e-01 min
9.703742797548e-01 max/min 1.000000000000e+00
    2 KSP Residual norm 1.547282124742e+00 % max 4.106911489507e+00 min
9.455565835409e-01 max/min 4.343379931984e+00
    3 KSP Residual norm 5.193012838962e-01 % max 7.849972917628e+00 min
9.390711734984e-01 max/min 8.359294949267e+00
    4 KSP Residual norm 1.844773292053e-01 % max 8.102437955088e+00 min
9.157291371635e-01 max/min 8.848072673744e+00
    5 KSP Residual norm 6.904332859839e-02 % max 8.102847554075e+00 min
8.906430581537e-01 max/min 9.097749631454e+00
    6 KSP Residual norm 3.747280928850e-02 % max 8.131998087718e+00 min
8.796142392701e-01 max/min 9.244959579630e+00
    7 KSP Residual norm 1.781146506612e-02 % max 8.153370848515e+00 min
8.294602459028e-01 max/min 9.829730705949e+00
    8 KSP Residual norm 7.506605928852e-03 % max 8.160488227056e+00 min
8.035220795876e-01 max/min 1.015589793282e+01
    9 KSP Residual norm 3.771683771569e-03 % max 8.185296438244e+00 min
7.986463109034e-01 max/min 1.024896293452e+01
   10 KSP Residual norm 1.900344739083e-03 % max 8.246526708637e+00 min
7.835579388152e-01 max/min 1.052446322107e+01
   11 KSP Residual norm 8.969235041181e-04 % max 8.246542749144e+00 min
7.698718962697e-01 max/min 1.071157784704e+01
   12 KSP Residual norm 3.771331016150e-04 % max 8.253249205705e+00 min
7.665454362492e-01 max/min 1.076681017904e+01
   13 KSP Residual norm 1.998592159889e-04 % max 8.323950632412e+00 min
7.632295016946e-01 max/min 1.090622232753e+01
   14 KSP Residual norm 9.624660396860e-05 % max 8.327354837686e+00 min
7.567183120253e-01 max/min 1.100456366042e+01

This is identical with one step of Richardson (-mg_levels_ksp_type
richardson) because the "initial guess" is 0. The convergence is somewhat
better if we improve the additive fine-grid smoother, e.g. ILU or SOR,
though the condition number is actually worse in this case (because the
preconditioned operator is now non-normal, the eigenvalues are
well-clustered).

$ ./ex5 -da_grid_x 201 -da_grid_y 201 -snes_max_it 1
-ksp_monitor_singular_value -pc_type mg -pc_mg_levels 2 -pc_mg_type
additive -mg_levels_ksp_type preonly -mg_levels_pc_type ilu
    0 KSP Residual norm 1.997267177320e+01 % max 1.000000000000e+00 min
1.000000000000e+00 max/min 1.000000000000e+00
    1 KSP Residual norm 5.755612216067e+00 % max 9.658916552787e-01 min
9.658916552787e-01 max/min 1.000000000000e+00
    2 KSP Residual norm 2.828695990580e-01 % max 2.491505412300e+00 min
9.583727874764e-01 max/min 2.599724705102e+00
    3 KSP Residual norm 1.097671648754e-01 % max 7.900124346250e+00 min
5.695048906547e-01 max/min 1.387191659964e+01
    4 KSP Residual norm 2.203949856452e-02 % max 9.291338218054e+00 min
3.581794670449e-01 max/min 2.594045464055e+01
    5 KSP Residual norm 8.497097452426e-03 % max 1.013788428797e+01 min
3.272689944775e-01 max/min 3.097722197653e+01
    6 KSP Residual norm 1.376443389574e-03 % max 1.055586782597e+01 min
2.933041209977e-01 max/min 3.598949714743e+01
    7 KSP Residual norm 2.753520742081e-04 % max 1.061464021647e+01 min
2.893817762727e-01 max/min 3.668040314489e+01
    8 KSP Residual norm 6.552848547677e-05 % max 1.062831125267e+01 min
2.883290857853e-01 max/min 3.686173812025e+01

"Kaskade" multigrid applies no pre-smoother, but uses a multiplicative
post-smoother. That is what I wrote above and probably what you wanted.

$ ./ex5 -da_grid_x 201 -da_grid_y 201 -snes_max_it 1
-ksp_monitor_singular_value -pc_type mg -pc_mg_levels 2 -pc_mg_type kaskade
-mg_levels_ksp_type richardson -mg_levels_pc_type none
    0 KSP Residual norm 1.981089588505e+01 % max 1.000000000000e+00 min
1.000000000000e+00 max/min 1.000000000000e+00
    1 KSP Residual norm 3.481667117996e+00 % max 9.904507054699e-01 min
9.904507054699e-01 max/min 1.000000000000e+00
    2 KSP Residual norm 1.652167261481e+00 % max 5.608992736195e+00 min
9.879184804293e-01 max/min 5.677586609937e+00
    3 KSP Residual norm 1.627219442360e+00 % max 6.798397388800e+00 min
9.550178771471e-01 max/min 7.118607464301e+00
    4 KSP Residual norm 7.880741343988e-01 % max 7.451381264321e+00 min
7.145924145893e-01 max/min 1.042745642438e+01
    5 KSP Residual norm 3.537498074218e-01 % max 7.663873901737e+00 min
5.751738420032e-01 max/min 1.332444791829e+01
    6 KSP Residual norm 1.078704665358e-01 % max 7.800309555756e+00 min
5.120187805734e-01 max/min 1.523442079023e+01
    7 KSP Residual norm 4.407455476078e-02 % max 7.855365072615e+00 min
5.037708740493e-01 max/min 1.559313068156e+01
    8 KSP Residual norm 2.107104852559e-02 % max 7.893144033146e+00 min
5.025484383148e-01 max/min 1.570623532254e+01
    9 KSP Residual norm 1.763159978441e-02 % max 7.912218583050e+00 min
5.024504696471e-01 max/min 1.574726079688e+01
   10 KSP Residual norm 1.745405855993e-02 % max 7.928099602729e+00 min
5.023138582042e-01 max/min 1.578315922056e+01
   11 KSP Residual norm 1.376977330994e-02 % max 7.939644155950e+00 min
5.017479535724e-01 max/min 1.582396918497e+01
   12 KSP Residual norm 9.446347797152e-03 % max 7.949376050758e+00 min
5.015718142316e-01 max/min 1.584892895734e+01
   13 KSP Residual norm 6.843342509359e-03 % max 7.956996132919e+00 min
4.969226601251e-01 max/min 1.601254434828e+01
   14 KSP Residual norm 6.437072325338e-03 % max 7.961936315836e+00 min
4.932296836382e-01 max/min 1.614245164059e+01
   15 KSP Residual norm 6.091589527973e-03 % max 7.966811508176e+00 min
4.932019218895e-01 max/min 1.615324505966e+01
   16 KSP Residual norm 4.652185214024e-03 % max 7.970648347219e+00 min
4.916668205282e-01 max/min 1.621148309064e+01
   17 KSP Residual norm 3.701849685772e-03 % max 7.973893800218e+00 min
4.915344876340e-01 max/min 1.622245030781e+01
   18 KSP Residual norm 3.482133374032e-03 % max 7.976475806296e+00 min
4.911811815837e-01 max/min 1.623937582580e+01
   19 KSP Residual norm 3.465608263872e-03 % max 7.978688479804e+00 min
4.898709616560e-01 max/min 1.628732687652e+01
   20 KSP Residual norm 3.149472026786e-03 % max 7.980652326863e+00 min
4.891722853032e-01 max/min 1.631460441778e+01
   21 KSP Residual norm 2.763464672775e-03 % max 7.982383839733e+00 min
4.891419493795e-01 max/min 1.631915612607e+01
   22 KSP Residual norm 2.689646479190e-03 % max 7.983807057995e+00 min
4.876132849055e-01 max/min 1.637323531811e+01
   23 KSP Residual norm 2.661061400431e-03 % max 7.985119113668e+00 min
4.836465184065e-01 max/min 1.651023797292e+01
   24 KSP Residual norm 2.383953808700e-03 % max 7.986314359135e+00 min
4.718949191329e-01 max/min 1.692392529636e+01
^C

Okay, that didn't work. But it was because the Richardson step was too
large. We can get away without a traditional smoothing step by fixing the
relaxation parameter for Richardson:

$ ./ex5 -da_grid_x 201 -da_grid_y 201 -snes_max_it 1
-ksp_monitor_singular_value -pc_type mg -pc_mg_levels 2 -pc_mg_type kaskade
-mg_levels_ksp_type richardson -mg_levels_pc_type none
-mg_levels_ksp_richardson_self_scale
    0 KSP Residual norm 1.975857018746e+01 % max 1.000000000000e+00 min
1.000000000000e+00 max/min 1.000000000000e+00
    1 KSP Residual norm 2.476038171898e+00 % max 9.622055302029e-01 min
9.622055302029e-01 max/min 1.000000000000e+00
    2 KSP Residual norm 3.723935286980e-02 % max 1.019358214307e+00 min
8.790661889416e-01 max/min 1.159592107091e+00
    3 KSP Residual norm 1.048082002961e-02 % max 2.231045830559e+00 min
2.203725693734e-01 max/min 1.012397249305e+01
    4 KSP Residual norm 4.815690407780e-03 % max 3.167321755561e+00 min
1.859713575290e-01 max/min 1.703123425911e+01
    5 KSP Residual norm 2.282674490066e-03 % max 5.220845319337e+00 min
1.603210979291e-01 max/min 3.256492992360e+01
    6 KSP Residual norm 5.030060118813e-04 % max 6.078990414170e+00 min
1.535348150609e-01 max/min 3.959356326940e+01
    7 KSP Residual norm 2.084516564815e-04 % max 6.195047474999e+00 min
1.466558297789e-01 max/min 4.224208123426e+01
    8 KSP Residual norm 6.654981023267e-05 % max 6.379643313848e+00 min
1.442472810392e-01 max/min 4.422713043801e+01

Unfortunately, convergence is very sensitive to that step and for variable
coefficient problems, we won't be able to choose a good value. If we know
the matrix diagonal, we can get a lot more robustness by post-smoothing
with Jacobi, and now we don't need that pesky scaling parameter.

$ ./ex5 -da_grid_x 201 -da_grid_y 201 -snes_max_it 1
-ksp_monitor_singular_value -pc_type mg -pc_mg_levels 2 -pc_mg_type kaskade
-mg_levels_ksp_type richardson -mg_levels_pc_type jacobi
    0 KSP Residual norm 1.975846409514e+01 % max 1.000000000000e+00 min
1.000000000000e+00 max/min 1.000000000000e+00
    1 KSP Residual norm 2.482202615145e+00 % max 9.621966917526e-01 min
9.621966917526e-01 max/min 1.000000000000e+00
    2 KSP Residual norm 4.457401425338e-02 % max 1.020264072916e+00 min
8.821750286291e-01 max/min 1.156532479163e+00
    3 KSP Residual norm 1.637472997384e-02 % max 1.776622548172e+00 min
7.524631434334e-01 max/min 2.361075839629e+00
    4 KSP Residual norm 3.644899164209e-03 % max 1.907783379671e+00 min
4.245698995769e-01 max/min 4.493449445127e+00
    5 KSP Residual norm 1.443735788456e-03 % max 1.935858887793e+00 min
3.898702611314e-01 max/min 4.965392544111e+00
    6 KSP Residual norm 3.929697132002e-04 % max 1.961850264833e+00 min
3.669296462786e-01 max/min 5.346666001861e+00
    7 KSP Residual norm 1.446207699005e-04 % max 1.970859698383e+00 min
3.614358036844e-01 max/min 5.452862384670e+00
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20120306/6e263252/attachment.htm>


More information about the petsc-users mailing list