[petsc-users] Question about Set-up of Full MG and its Output

Jed Brown jed at jedbrown.org
Tue Dec 6 16:31:48 CST 2016


frank <hengjiew at uci.edu> writes:

> Dear all,
>
> I am trying to use full MG to solve a 2D Poisson equation.
>
> I want to set full MG as the solver and SOR as the smoother. Is the 
> following setup the proper way to do it?
>   -ksp_type                    richardson
>   -pc_type                      mg
>   -pc_mg_type               full
>   -mg_levels_ksp_type   richardson
>   -mg_levels_pc_type    sor
>
> The ksp_view shows the levels from the coarsest mesh to finest mesh in a 
> linear order.

It is showing the solver configuration, not a trace of the cycle.

> I was expecting sth like:  coarsest -> level1 -> coarsest -> level1 -> 
> level2 -> level1 -> coarsest -> ...
> Is there a way to show exactly how the full MG proceeds?

You could get a trace like this from

-mg_coarse_ksp_converged_reason -mg_levels_ksp_converged_reason

If you want to deliminate the iterations, you could add -ksp_monitor.

> Also in the above example, I want to know what interpolation or 
> prolongation method is used from level1 to level2.
> Can I get that info by adding some options? (not using PCMGGetInterpolation)
>
> I attached the ksp_view info and my petsc options file.
> Thank you.
>
> Frank
> Linear solve converged due to CONVERGED_RTOL iterations 3
> KSP Object: 1 MPI processes
>   type: richardson
>     Richardson: damping factor=1.
>   maximum iterations=10000
>   tolerances:  relative=1e-07, absolute=1e-50, divergence=10000.
>   left preconditioning
>   using nonzero initial guess
>   using UNPRECONDITIONED norm type for convergence test
> PC Object: 1 MPI processes
>   type: mg
>     MG: type is FULL, levels=6 cycles=v
>       Using Galerkin computed coarse grid matrices
>   Coarse grid solver -- level -------------------------------
>     KSP Object: (mg_coarse_) 1 MPI processes
>       type: preonly
>       maximum iterations=10000, initial guess is zero
>       tolerances:  relative=1e-05, absolute=1e-50, divergence=10000.
>       left preconditioning
>       using NONE norm type for convergence test
>     PC Object: (mg_coarse_) 1 MPI processes
>       type: lu
>         out-of-place factorization
>         tolerance for zero pivot 2.22045e-14
>         using diagonal shift on blocks to prevent zero pivot [INBLOCKS]
>         matrix ordering: nd
>         factor fill ratio given 0., needed 0.
>           Factored matrix follows:
>             Mat Object: 1 MPI processes
>               type: superlu_dist
>               rows=64, cols=64
>               package used to perform factorization: superlu_dist
>               total: nonzeros=0, allocated nonzeros=0
>               total number of mallocs used during MatSetValues calls =0
>                 SuperLU_DIST run parameters:
>                   Process grid nprow 1 x npcol 1 
>                   Equilibrate matrix TRUE 
>                   Matrix input mode 0 
>                   Replace tiny pivots FALSE 
>                   Use iterative refinement FALSE 
>                   Processors in row 1 col partition 1 
>                   Row permutation LargeDiag 
>                   Column permutation METIS_AT_PLUS_A
>                   Parallel symbolic factorization FALSE 
>                   Repeated factorization SamePattern
>       linear system matrix = precond matrix:
>       Mat Object: 1 MPI processes
>         type: seqaij
>         rows=64, cols=64
>         total: nonzeros=576, allocated nonzeros=576
>         total number of mallocs used during MatSetValues calls =0
>           not using I-node routines
>   Down solver (pre-smoother) on level 1 -------------------------------
>     KSP Object: (mg_levels_1_) 1 MPI processes
>       type: richardson
>         Richardson: damping factor=1.
>       maximum iterations=1
>       tolerances:  relative=1e-05, absolute=1e-50, divergence=10000.
>       left preconditioning
>       using nonzero initial guess
>       using NONE norm type for convergence test
>     PC Object: (mg_levels_1_) 1 MPI processes
>       type: sor
>         SOR: type = local_symmetric, iterations = 1, local iterations = 1, omega = 1.
>       linear system matrix = precond matrix:
>       Mat Object: 1 MPI processes
>         type: seqaij
>         rows=256, cols=256
>         total: nonzeros=2304, allocated nonzeros=2304
>         total number of mallocs used during MatSetValues calls =0
>           not using I-node routines
>   Up solver (post-smoother) same as down solver (pre-smoother)
>   Down solver (pre-smoother) on level 2 -------------------------------
>     KSP Object: (mg_levels_2_) 1 MPI processes
>       type: richardson
>         Richardson: damping factor=1.
>       maximum iterations=1
>       tolerances:  relative=1e-05, absolute=1e-50, divergence=10000.
>       left preconditioning
>       using nonzero initial guess
>       using NONE norm type for convergence test
>     PC Object: (mg_levels_2_) 1 MPI processes
>       type: sor
>         SOR: type = local_symmetric, iterations = 1, local iterations = 1, omega = 1.
>       linear system matrix = precond matrix:
>       Mat Object: 1 MPI processes
>         type: seqaij
>         rows=1024, cols=1024
>         total: nonzeros=9216, allocated nonzeros=9216
>         total number of mallocs used during MatSetValues calls =0
>           not using I-node routines
>   Up solver (post-smoother) same as down solver (pre-smoother)
>   Down solver (pre-smoother) on level 3 -------------------------------
>     KSP Object: (mg_levels_3_) 1 MPI processes
>       type: richardson
>         Richardson: damping factor=1.
>       maximum iterations=1
>       tolerances:  relative=1e-05, absolute=1e-50, divergence=10000.
>       left preconditioning
>       using nonzero initial guess
>       using NONE norm type for convergence test
>     PC Object: (mg_levels_3_) 1 MPI processes
>       type: sor
>         SOR: type = local_symmetric, iterations = 1, local iterations = 1, omega = 1.
>       linear system matrix = precond matrix:
>       Mat Object: 1 MPI processes
>         type: seqaij
>         rows=4096, cols=4096
>         total: nonzeros=36864, allocated nonzeros=36864
>         total number of mallocs used during MatSetValues calls =0
>           not using I-node routines
>   Up solver (post-smoother) same as down solver (pre-smoother)
>   Down solver (pre-smoother) on level 4 -------------------------------
>     KSP Object: (mg_levels_4_) 1 MPI processes
>       type: richardson
>         Richardson: damping factor=1.
>       maximum iterations=1
>       tolerances:  relative=1e-05, absolute=1e-50, divergence=10000.
>       left preconditioning
>       using nonzero initial guess
>       using NONE norm type for convergence test
>     PC Object: (mg_levels_4_) 1 MPI processes
>       type: sor
>         SOR: type = local_symmetric, iterations = 1, local iterations = 1, omega = 1.
>       linear system matrix = precond matrix:
>       Mat Object: 1 MPI processes
>         type: seqaij
>         rows=16384, cols=16384
>         total: nonzeros=147456, allocated nonzeros=147456
>         total number of mallocs used during MatSetValues calls =0
>           not using I-node routines
>   Up solver (post-smoother) same as down solver (pre-smoother)
>   Down solver (pre-smoother) on level 5 -------------------------------
>     KSP Object: (mg_levels_5_) 1 MPI processes
>       type: richardson
>         Richardson: damping factor=1.
>       maximum iterations=1
>       tolerances:  relative=1e-05, absolute=1e-50, divergence=10000.
>       left preconditioning
>       using nonzero initial guess
>       using NONE norm type for convergence test
>     PC Object: (mg_levels_5_) 1 MPI processes
>       type: sor
>         SOR: type = local_symmetric, iterations = 1, local iterations = 1, omega = 1.
>       linear system matrix = precond matrix:
>       Mat Object: 1 MPI processes
>         type: seqaij
>         rows=65536, cols=65536
>         total: nonzeros=327680, allocated nonzeros=327680
>         total number of mallocs used during MatSetValues calls =0
>           has attached null space
>           not using I-node routines
>   Up solver (post-smoother) same as down solver (pre-smoother)
>   linear system matrix = precond matrix:
>   Mat Object: 1 MPI processes
>     type: seqaij
>     rows=65536, cols=65536
>     total: nonzeros=327680, allocated nonzeros=327680
>     total number of mallocs used during MatSetValues calls =0
>       has attached null space
>       not using I-node routines
> #PETSc Option Table entries:
> -ksp_converged_reason
> -ksp_initial_guess_nonzero yes
> -ksp_norm_type unpreconditioned
> -ksp_rtol 1e-7
> -ksp_type richardson
> -ksp_view
> -mg_coarse_ksp_type preonly
> -mg_coarse_pc_factor_mat_solver_package superlu_dist
> -mg_coarse_pc_type lu
> -mg_levels_ksp_max_it 1
> -mg_levels_ksp_type richardson
> -mg_levels_pc_type sor
> -N 256
> -options_left
> -pc_mg_galerkin
> -pc_mg_levels 6
> -pc_mg_type full
> -pc_type mg
> -px 1
> -py 1
> #End of PETSc Option Table entries
> There are no unused options.
> -ksp_type        richardson
> -ksp_norm_type   unpreconditioned
> -ksp_rtol        1e-7
> -options_left
> -ksp_initial_guess_nonzero  yes
> -ksp_converged_reason 
> -ksp_view
> -pc_type mg
> -pc_mg_type full
> -pc_mg_galerkin
> -pc_mg_levels 6
> -mg_levels_ksp_type richardson
> -mg_levels_pc_type sor
> -mg_levels_ksp_max_it 1
> -mg_coarse_ksp_type preonly
> -mg_coarse_pc_type lu
> -mg_coarse_pc_factor_mat_solver_package superlu_dist
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 800 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20161206/61011ca5/attachment.pgp>


More information about the petsc-users mailing list