Smoother settings for AMG

Barry Smith bsmith at mcs.anl.gov
Fri Jul 31 13:25:13 CDT 2009


On Jul 31, 2009, at 1:15 PM, BAYRAKTAR Harun wrote:

> Barry,
>
> Thanks a lot for looking in to this. One thing I want to clarify is  
> that the 43 (should have been 46 sorry for the typo) iterations on 1  
> cpu seems like a real convergence to me. I do look at the  
> unpreconditioned residual norm to determine convergence. For this I  
> use:
>
> ierr = KSPSetNormType(m_solver, KSP_NORM_UNPRECONDITIONED);   
> CHKERRQ(ierr);
>
> Then I check convergence through KSPSetConvergenceTest. As an  
> experiment I commented out the line above where I tell KSP to use  
> the unpreconditioned norm and while the ||r|| values changed  
> (naturally), it still converged in slightly more number of  
> iterations (56).
>
> I am familiar with the preconditioned norm going down 6 orders while  
> the true relative norm is 0.1 or so (i.e., problem not solved at  
> all). This usually happens to me in structural mechanics problems  
> with ill conditioned systems and I use a KSP method that does not  
> allow for the unpreconditioned residual to be monitored. However,  
> this does not seem to be one of those cases though, maybe I am  
> missing something.

Ok. I didn't see what you report (I saw it just iterating away for a  
long time with the unpreconditioned norm)  but then you never sent the  
command line options for the solver you used so I may have run it  
differently.

>
> Out of curiosity did you use ksp/ksp/examples/tutorials/ex10.c to  
> solve this?

Yes.

>
> Thanks again,
> Harun
>
>
>
> -----Original Message-----
> From: petsc-users-bounces at mcs.anl.gov [mailto:petsc-users-bounces at mcs.anl.gov 
> ] On Behalf Of Barry Smith
> Sent: Thursday, July 30, 2009 7:45 PM
> To: PETSc users list
> Subject: Re: Smoother settings for AMG
>
>
>    Harun,
>
>   I have played around with this matrix. It is a nasty matrix; I
> think it is really beyond the normal capacity of ML (and hypre's
> boomerAMG).
>
> Even the "convergence" you were getting below is BOGUS.  If you run
> with -ksp_norm_type unpreconditioned or -ksp_monitor_true_residual
> you'll see that the "true" residual norm is actually creeping to zero
> and at the converged 43 iterations below the true residual norm has
> decreased by like less than 1/10. (The preconditioned residual norm
> has decreased by 1.e 5 so the iteration stops and you think it has
> converged. In really hard problems preconditioners sometimes scales
> things in a funky way so a large decrease in preconditioned residual
> norm does not mean a large decrease in true residual norm). In other
> words the "answer" you got out of the runs below is garbage.
>
>   I suggest,
> 1) check carefully that the matrix being created actually matches the
> model's equations, if they seem right then
> 2) see if you can change the model so it does not generate such
> hopeless matrices. If you MUST solve this nasty matrix
> 3) bite the bullet and use a parallel direct solver from PETSc. Try
> both MUMPS and SuperLU_dist
>
>   Good luck,
>
>    Barry
>
>
>
>
> On Jul 29, 2009, at 3:54 PM, BAYRAKTAR Harun wrote:
>
>> Hi,
>>
>> I am trying to solve a system of equations and I am having difficulty
>> picking the right smoothers for AMG (using ML as pc_type) in PETSc  
>> for
>> parallel execution. First here is what happens in terms of CG
>> (ksp_type)
>> iteration counts (both columns use block jacobi):
>>
>> cpus	|	AMG w/ ICC(0) x1	|	AMG w/ SOR x4
>> ------------------------------------------------------
>> 1	|		43		|		243
>> 4	|		699		|		379
>>
>> x1 or x4 means 1 or 4 iterations of smoother application at each AMG
>> level (all details from ksp view for the 4 cpu run are below). The
>> main
>> observation is that on 1 cpu, AMG w/ ICC(0) is a clear winner but
>> falls
>> apart in parallel. SOR on the other hand experiences a 1.5X increase
>> in
>> iteration count which is totally expected from the quality of
>> coarsening
>> ML delivers in parallel.
>>
>> I basically would like to find a way (if possible) to have the
>> number of
>> iterations in parallel stay with 1-2X of 1 cpu iteration count for  
>> the
>> AMG w/ ICC case. Is there a way to achieve this?
>>
>> Thanks,
>> Harun
>>
>> %%%%%%%%%%%%%%%%%%%%%%%%%
>> AMG w/ ICC(0) x1 ksp_view
>> %%%%%%%%%%%%%%%%%%%%%%%%%
>> KSP Object:
>> type: cg
>> maximum iterations=10000
>> tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
>> left preconditioning
>> PC Object:
>> type: ml
>>   MG: type is MULTIPLICATIVE, levels=3 cycles=v, pre-smooths=1,
>> post-smooths=1
>> Coarse gride solver -- level 0 -------------------------------
>>   KSP Object:(mg_coarse_)
>>     type: preonly
>>     maximum iterations=1, initial guess is zero
>>     tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
>>     left preconditioning
>>   PC Object:(mg_coarse_)
>>     type: redundant
>>       Redundant preconditioner: First (color=0) of 4 PCs follows
>>     KSP Object:(mg_coarse_redundant_)
>>       type: preonly
>>       maximum iterations=10000, initial guess is zero
>>       tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
>>       left preconditioning
>>     PC Object:(mg_coarse_redundant_)
>>       type: lu
>>         LU: out-of-place factorization
>>           matrix ordering: nd
>>         LU: tolerance for zero pivot 1e-12
>>         LU: factor fill ratio needed 2.17227
>>              Factored matrix follows
>>             Matrix Object:
>>               type=seqaij, rows=283, cols=283
>>               total: nonzeros=21651, allocated nonzeros=21651
>>                 using I-node routines: found 186 nodes, limit used is
>> 5
>>       linear system matrix = precond matrix:
>>       Matrix Object:
>>         type=seqaij, rows=283, cols=283
>>         total: nonzeros=9967, allocated nonzeros=14150
>>           not using I-node routines
>>     linear system matrix = precond matrix:
>>     Matrix Object:
>>       type=mpiaij, rows=283, cols=283
>>       total: nonzeros=9967, allocated nonzeros=9967
>>         not using I-node (on process 0) routines
>> Down solver (pre-smoother) on level 1 -------------------------------
>>   KSP Object:(mg_levels_1_)
>>     type: richardson
>>       Richardson: damping factor=0.9
>>     maximum iterations=1, initial guess is zero
>>     tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
>>     left preconditioning
>>   PC Object:(mg_levels_1_)
>>     type: bjacobi
>>       block Jacobi: number of blocks = 4
>>       Local solve is same for all blocks, in the following KSP and PC
>> objects:
>>     KSP Object:(mg_levels_1_sub_)
>>       type: preonly
>>       maximum iterations=10000, initial guess is zero
>>       tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
>>       left preconditioning
>>     PC Object:(mg_levels_1_sub_)
>>       type: icc
>>         ICC: 0 levels of fill
>>         ICC: factor fill ratio allocated 1
>>         ICC: using Manteuffel shift
>>         ICC: factor fill ratio needed 0.514899
>>              Factored matrix follows
>>             Matrix Object:
>>               type=seqsbaij, rows=2813, cols=2813
>>               total: nonzeros=48609, allocated nonzeros=48609
>>                   block size is 1
>>       linear system matrix = precond matrix:
>>       Matrix Object:
>>         type=seqaij, rows=2813, cols=2813
>>         total: nonzeros=94405, allocated nonzeros=94405
>>           not using I-node routines
>>     linear system matrix = precond matrix:
>>     Matrix Object:
>>       type=mpiaij, rows=10654, cols=10654
>>       total: nonzeros=376634, allocated nonzeros=376634
>>         not using I-node (on process 0) routines
>> Up solver (post-smoother) on level 1 -------------------------------
>>   KSP Object:(mg_levels_1_)
>>     type: richardson
>>       Richardson: damping factor=0.9
>>     maximum iterations=1
>>     tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
>>     left preconditioning
>>   PC Object:(mg_levels_1_)
>>     type: bjacobi
>>       block Jacobi: number of blocks = 4
>>       Local solve is same for all blocks, in the following KSP and PC
>> objects:
>>     KSP Object:(mg_levels_1_sub_)
>>       type: preonly
>>       maximum iterations=10000, initial guess is zero
>>       tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
>>       left preconditioning
>>     PC Object:(mg_levels_1_sub_)
>>       type: icc
>>         ICC: 0 levels of fill
>>         ICC: factor fill ratio allocated 1
>>         ICC: using Manteuffel shift
>>         ICC: factor fill ratio needed 0.514899
>>              Factored matrix follows
>>             Matrix Object:
>>               type=seqsbaij, rows=2813, cols=2813
>>               total: nonzeros=48609, allocated nonzeros=48609
>>                   block size is 1
>>       linear system matrix = precond matrix:
>>       Matrix Object:
>>         type=seqaij, rows=2813, cols=2813
>>         total: nonzeros=94405, allocated nonzeros=94405
>>           not using I-node routines
>>     linear system matrix = precond matrix:
>>     Matrix Object:
>>       type=mpiaij, rows=10654, cols=10654
>>       total: nonzeros=376634, allocated nonzeros=376634
>>         not using I-node (on process 0) routines
>> Down solver (pre-smoother) on level 2 -------------------------------
>>   KSP Object:(mg_levels_2_)
>>     type: richardson
>>       Richardson: damping factor=0.9
>>     maximum iterations=1, initial guess is zero
>>     tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
>>     left preconditioning
>>   PC Object:(mg_levels_2_)
>>     type: bjacobi
>>       block Jacobi: number of blocks = 4
>>       Local solve is same for all blocks, in the following KSP and PC
>> objects:
>>     KSP Object:(mg_levels_2_sub_)
>>       type: preonly
>>       maximum iterations=10000, initial guess is zero
>>       tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
>>       left preconditioning
>>     PC Object:(mg_levels_2_sub_)
>>       type: icc
>>         ICC: 0 levels of fill
>>         ICC: factor fill ratio allocated 1
>>         ICC: using Manteuffel shift
>>         ICC: factor fill ratio needed 0.519045
>>              Factored matrix follows
>>             Matrix Object:
>>               type=seqsbaij, rows=101164, cols=101164
>>               total: nonzeros=1378558, allocated nonzeros=1378558
>>                   block size is 1
>>       linear system matrix = precond matrix:
>>       Matrix Object:
>>         type=seqaij, rows=101164, cols=101164
>>         total: nonzeros=2655952, allocated nonzeros=5159364
>>           not using I-node routines
>>     linear system matrix = precond matrix:
>>     Matrix Object:
>>       type=mpiaij, rows=411866, cols=411866
>>       total: nonzeros=10941434, allocated nonzeros=42010332
>>         not using I-node (on process 0) routines
>> Up solver (post-smoother) on level 2 -------------------------------
>>   KSP Object:(mg_levels_2_)
>>     type: richardson
>>       Richardson: damping factor=0.9
>>     maximum iterations=1
>>     tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
>>     left preconditioning
>>   PC Object:(mg_levels_2_)
>>     type: bjacobi
>>       block Jacobi: number of blocks = 4
>>       Local solve is same for all blocks, in the following KSP and PC
>> objects:
>>     KSP Object:(mg_levels_2_sub_)
>>       type: preonly
>>       maximum iterations=10000, initial guess is zero
>>       tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
>>       left preconditioning
>>     PC Object:(mg_levels_2_sub_)
>>       type: icc
>>         ICC: 0 levels of fill
>>         ICC: factor fill ratio allocated 1
>>         ICC: using Manteuffel shift
>>         ICC: factor fill ratio needed 0.519045
>>              Factored matrix follows
>>             Matrix Object:
>>               type=seqsbaij, rows=101164, cols=101164
>>               total: nonzeros=1378558, allocated nonzeros=1378558
>>                   block size is 1
>>       linear system matrix = precond matrix:
>>       Matrix Object:
>>         type=seqaij, rows=101164, cols=101164
>>         total: nonzeros=2655952, allocated nonzeros=5159364
>>           not using I-node routines
>>     linear system matrix = precond matrix:
>>     Matrix Object:
>>       type=mpiaij, rows=411866, cols=411866
>>       total: nonzeros=10941434, allocated nonzeros=42010332
>>         not using I-node (on process 0) routines
>> linear system matrix = precond matrix:
>> Matrix Object:
>>   type=mpiaij, rows=411866, cols=411866
>>   total: nonzeros=10941434, allocated nonzeros=42010332
>>     not using I-node (on process 0) routines
>>
>> %%%%%%%%%%%%%%%%%%%%%%
>> AMG w/ SOR x4 ksp_view
>> %%%%%%%%%%%%%%%%%%%%%%
>>
>> KSP Object:
>> type: cg
>> maximum iterations=10000
>> tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
>> left preconditioning
>> PC Object:
>> type: ml
>>   MG: type is MULTIPLICATIVE, levels=3 cycles=v, pre-smooths=1,
>> post-smooths=1
>> Coarse gride solver -- level 0 -------------------------------
>>   KSP Object:(mg_coarse_)
>>     type: preonly
>>     maximum iterations=1, initial guess is zero
>>     tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
>>     left preconditioning
>>   PC Object:(mg_coarse_)
>>     type: redundant
>>       Redundant preconditioner: First (color=0) of 4 PCs follows
>>     KSP Object:(mg_coarse_redundant_)
>>       type: preonly
>>       maximum iterations=10000, initial guess is zero
>>       tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
>>       left preconditioning
>>     PC Object:(mg_coarse_redundant_)
>>       type: lu
>>         LU: out-of-place factorization
>>           matrix ordering: nd
>>         LU: tolerance for zero pivot 1e-12
>>         LU: factor fill ratio needed 2.17227
>>              Factored matrix follows
>>             Matrix Object:
>>               type=seqaij, rows=283, cols=283
>>               total: nonzeros=21651, allocated nonzeros=21651
>>                 using I-node routines: found 186 nodes, limit used is
>> 5
>>       linear system matrix = precond matrix:
>>       Matrix Object:
>>         type=seqaij, rows=283, cols=283
>>         total: nonzeros=9967, allocated nonzeros=14150
>>           not using I-node routines
>>     linear system matrix = precond matrix:
>>     Matrix Object:
>>       type=mpiaij, rows=283, cols=283
>>       total: nonzeros=9967, allocated nonzeros=9967
>>         not using I-node (on process 0) routines
>> Down solver (pre-smoother) on level 1 -------------------------------
>>   KSP Object:(mg_levels_1_)
>>     type: richardson
>>       Richardson: damping factor=1
>>     maximum iterations=4, initial guess is zero
>>     tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
>>     left preconditioning
>>   PC Object:(mg_levels_1_)
>>     type: sor
>>       SOR: type = local_symmetric, iterations = 1, omega = 1
>>     linear system matrix = precond matrix:
>>     Matrix Object:
>>       type=mpiaij, rows=10654, cols=10654
>>       total: nonzeros=376634, allocated nonzeros=376634
>>         not using I-node (on process 0) routines
>> Up solver (post-smoother) on level 1 -------------------------------
>>   KSP Object:(mg_levels_1_)
>>     type: richardson
>>       Richardson: damping factor=1
>>     maximum iterations=4
>>     tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
>>     left preconditioning
>>   PC Object:(mg_levels_1_)
>>     type: sor
>>       SOR: type = local_symmetric, iterations = 1, omega = 1
>>     linear system matrix = precond matrix:
>>     Matrix Object:
>>       type=mpiaij, rows=10654, cols=10654
>>       total: nonzeros=376634, allocated nonzeros=376634
>>         not using I-node (on process 0) routines
>> Down solver (pre-smoother) on level 2 -------------------------------
>>   KSP Object:(mg_levels_2_)
>>     type: richardson
>>       Richardson: damping factor=1
>>     maximum iterations=4, initial guess is zero
>>     tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
>>     left preconditioning
>>   PC Object:(mg_levels_2_)
>>     type: sor
>>       SOR: type = local_symmetric, iterations = 1, omega = 1
>>     linear system matrix = precond matrix:
>>     Matrix Object:
>>       type=mpiaij, rows=411866, cols=411866
>>       total: nonzeros=10941434, allocated nonzeros=42010332
>>         not using I-node (on process 0) routines
>> Up solver (post-smoother) on level 2 -------------------------------
>>   KSP Object:(mg_levels_2_)
>>     type: richardson
>>       Richardson: damping factor=1
>>     maximum iterations=4
>>     tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
>>     left preconditioning
>>   PC Object:(mg_levels_2_)
>>     type: sor
>>       SOR: type = local_symmetric, iterations = 1, omega = 1
>>     linear system matrix = precond matrix:
>>     Matrix Object:
>>       type=mpiaij, rows=411866, cols=411866
>>       total: nonzeros=10941434, allocated nonzeros=42010332
>>         not using I-node (on process 0) routines
>> linear system matrix = precond matrix:
>> Matrix Object:
>>   type=mpiaij, rows=411866, cols=411866
>>   total: nonzeros=10941434, allocated nonzeros=42010332
>>     not using I-node (on process 0) routines
>>
>>
>



More information about the petsc-users mailing list