[petsc-users] Error while calling a fieldsplit preconditioner containing a mg/gamg preconditioner
Matthew Knepley
knepley at gmail.com
Fri Nov 21 10:14:08 CST 2014
On Fri, Nov 21, 2014 at 9:55 AM, Luc Berger-Vergiat <lb2653 at columbia.edu>
wrote:
> Hi all,
> I am using a DMShell to create to use a fieldsplit preconditioner.
> I would like to try some of petsc's multigrid options: mg and gamg.
>
Lets start with gamg, since that does not need anything else from the user.
If you want to use mg,
then you will need to supply the interpolation/restriction operators since
we cannot calculate them
without an idea of the discretization.
Thanks,
Matt
> When I call my preconditioner:
>
> -ksp_type gmres -pc_type fieldsplit -pc_fieldsplit_type schur
> -pc_fieldsplit_schur_factorization_type full
> -pc_fieldsplit_schur_precondition selfp -pc_fieldsplit_0_fields 2,3
> -pc_fieldsplit_1_fields 0,1 -fieldsplit_0_ksp_type preonly
> -fieldsplit_0_pc_type hypre -fieldsplit_0_pc_hypre_type euclid
> -fieldsplit_1_ksp_type gmres -fieldsplit_1_pc_type mg -malloc_log mlog
> -log_summary time.log -ksp_view
>
> it returns me the following error message and ksp_view:
>
> [0]PETSC ERROR: --------------------- Error Message
> --------------------------------------------------------------
> [0]PETSC ERROR:
> [0]PETSC ERROR: Must call DMShellSetGlobalVector() or
> DMShellSetCreateGlobalVector()
> [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html
> for trouble shooting.
> [0]PETSC ERROR: Petsc Release Version 3.5.2, Sep, 08, 2014
> [0]PETSC ERROR: /home/luc/research/feap_repo/ShearBands/parfeap/feap on a
> arch-opt named euler by luc Fri Nov 21 10:12:53 2014
> [0]PETSC ERROR: Configure options --with-cc=gcc --with-fc=gfortran
> --with-cxx=g++ --with-debugging=0 --with-shared-libraries=0
> --download-fblaslapack --download-mpich --download-parmetis
> --download-metis --download-ml=yes --download-hypre --download-superlu_dist
> --download-mumps --download-scalapack
> [0]PETSC ERROR: #259 DMCreateGlobalVector_Shell() line 245 in
> /home/luc/research/petsc-3.5.2/src/dm/impls/shell/dmshell.c
> [0]PETSC ERROR: #260 DMCreateGlobalVector() line 681 in
> /home/luc/research/petsc-3.5.2/src/dm/interface/dm.c
> [0]PETSC ERROR: #261 DMGetGlobalVector() line 154 in
> /home/luc/research/petsc-3.5.2/src/dm/interface/dmget.c
> KSP Object: 1 MPI processes
> type: gmres
> GMRES: restart=30, using Classical (unmodified) Gram-Schmidt
> Orthogonalization with no iterative refinement
> GMRES: happy breakdown tolerance 1e-30
> maximum iterations=10000, initial guess is zero
> tolerances: relative=1e-08, absolute=1e-16, divergence=1e+16
> left preconditioning
> using PRECONDITIONED norm type for convergence test
> PC Object: 1 MPI processes
> type: fieldsplit
> FieldSplit with Schur preconditioner, factorization FULL
> Preconditioner for the Schur complement formed from Sp, an assembled
> approximation to S, which uses (the lumped) A00's diagonal's inverse
> Split info:
> Split number 0 Defined by IS
> Split number 1 Defined by IS
> KSP solver for A00 block
> KSP Object: (fieldsplit_0_) 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: (fieldsplit_0_) 1 MPI processes
> type: hypre
> HYPRE Euclid preconditioning
> HYPRE Euclid: number of levels 1
> linear system matrix = precond matrix:
> Mat Object: (fieldsplit_0_) 1 MPI processes
> type: seqaij
> rows=2000, cols=2000
> total: nonzeros=40000, allocated nonzeros=40000
> total number of mallocs used during MatSetValues calls =0
> using I-node routines: found 400 nodes, limit used is 5
> KSP solver for S = A11 - A10 inv(A00) A01
> KSP Object: (fieldsplit_1_) 1 MPI processes
> type: gmres
> GMRES: restart=30, using Classical (unmodified) Gram-Schmidt
> Orthogonalization with no iterative refinement
> GMRES: happy breakdown tolerance 1e-30
> maximum iterations=10000, initial guess is zero
> tolerances: relative=1e-05, absolute=1e-50, divergence=10000
> left preconditioning
> using PRECONDITIONED norm type for convergence test
> PC Object: (fieldsplit_1_) 1 MPI processes
> type: mg
> MG: type is MULTIPLICATIVE, levels=1 cycles=v
> Cycles per PCApply=1
> Not using Galerkin computed coarse grid matrices
> Coarse grid solver -- level -------------------------------
> KSP Object: (fieldsplit_1_mg_levels_0_) 1 MPI
> processes
> type: chebyshev
> Chebyshev: eigenvalue estimates: min = 1.70057, max =
> 18.7063
> Chebyshev: estimated using: [0 0.1; 0 1.1]
> KSP Object:
> (fieldsplit_1_mg_levels_0_est_) 1 MPI processes
> type: gmres
> GMRES: restart=30, using Classical (unmodified)
> Gram-Schmidt Orthogonalization with no iterative refinement
> GMRES: happy breakdown tolerance 1e-30
> maximum iterations=10, initial guess is zero
> tolerances: relative=1e-05, absolute=1e-50,
> divergence=10000
> left preconditioning
> using NONE norm type for convergence test
> PC Object:
> (fieldsplit_1_mg_levels_0_) 1 MPI processes
> type: sor
> SOR: type = local_symmetric, iterations = 1, local
> iterations = 1, omega = 1
> linear system matrix followed by preconditioner matrix:
> Mat Object: (fieldsplit_1_)
> 1 MPI processes
> type: schurcomplement
> rows=330, cols=330
> Schur complement A11 - A10 inv(A00) A01
> A11
> Mat Object:
> (fieldsplit_1_) 1 MPI processes
> type: seqaij
> rows=330, cols=330
> total: nonzeros=7642, allocated nonzeros=7642
> total number of mallocs used during MatSetValues
> calls =0
> using I-node routines: found 121 nodes, limit
> used is 5
> A10
> Mat Object: 1 MPI processes
> type: seqaij
> rows=330, cols=2000
> total: nonzeros=22800, allocated nonzeros=22800
> total number of mallocs used during MatSetValues
> calls =0
> using I-node routines: found 121 nodes, limit
> used is 5
> KSP of A00
> KSP Object:
> (fieldsplit_0_) 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:
> (fieldsplit_0_) 1 MPI processes
> type: hypre
> HYPRE Euclid preconditioning
> HYPRE Euclid: number of levels 1
> linear system matrix = precond matrix:
> Mat Object:
> (fieldsplit_0_) 1 MPI processes
> type: seqaij
> rows=2000, cols=2000
> total: nonzeros=40000, allocated nonzeros=40000
> total number of mallocs used during MatSetValues
> calls =0
> using I-node routines: found 400 nodes, limit
> used is 5
> A01
> Mat Object: 1 MPI processes
> type: seqaij
> rows=2000, cols=330
> total: nonzeros=22800, allocated nonzeros=22800
> total number of mallocs used during MatSetValues
> calls =0
> using I-node routines: found 400 nodes, limit
> used is 5
> Mat Object: 1 MPI processes
> type: seqaij
> rows=330, cols=330
> total: nonzeros=7642, allocated nonzeros=7642
> total number of mallocs used during MatSetValues calls =0
> using I-node routines: found 121 nodes, limit used is 5
> maximum iterations=1, initial guess is zero
> tolerances: relative=1e-05, absolute=1e-50, divergence=10000
> left preconditioning
> using NONE norm type for convergence test
> PC Object: (fieldsplit_1_mg_levels_0_) 1 MPI
> processes
> type: sor
> SOR: type = local_symmetric, iterations = 1, local
> iterations = 1, omega = 1
> linear system matrix followed by preconditioner matrix:
> Mat Object: (fieldsplit_1_) 1 MPI
> processes
> type: schurcomplement
> rows=330, cols=330
> Schur complement A11 - A10 inv(A00) A01
> A11
> Mat Object:
> (fieldsplit_1_) 1 MPI processes
> type: seqaij
> rows=330, cols=330
> total: nonzeros=7642, allocated nonzeros=7642
> total number of mallocs used during MatSetValues calls
> =0
> using I-node routines: found 121 nodes, limit used
> is 5
> A10
> Mat Object: 1 MPI processes
> type: seqaij
> rows=330, cols=2000
> total: nonzeros=22800, allocated nonzeros=22800
> total number of mallocs used during MatSetValues calls
> =0
> using I-node routines: found 121 nodes, limit used
> is 5
> KSP of A00
> KSP Object:
> (fieldsplit_0_) 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:
> (fieldsplit_0_) 1 MPI processes
> type: hypre
> HYPRE Euclid preconditioning
> HYPRE Euclid: number of levels 1
> linear system matrix = precond matrix:
> Mat Object:
> (fieldsplit_0_) 1 MPI processes
> type: seqaij
> rows=2000, cols=2000
> total: nonzeros=40000, allocated nonzeros=40000
> total number of mallocs used during MatSetValues
> calls =0
> using I-node routines: found 400 nodes, limit used
> is 5
> A01
> Mat Object: 1 MPI processes
> type: seqaij
> rows=2000, cols=330
> total: nonzeros=22800, allocated nonzeros=22800
> total number of mallocs used during MatSetValues calls
> =0
> using I-node routines: found 400 nodes, limit used
> is 5
> Mat Object: 1 MPI processes
> type: seqaij
> rows=330, cols=330
> total: nonzeros=7642, allocated nonzeros=7642
> total number of mallocs used during MatSetValues calls =0
> using I-node routines: found 121 nodes, limit used is 5
> linear system matrix followed by preconditioner matrix:
> Mat Object: (fieldsplit_1_) 1 MPI processes
> type: schurcomplement
> rows=330, cols=330
> Schur complement A11 - A10 inv(A00) A01
> A11
> Mat Object: (fieldsplit_1_) 1 MPI
> processes
> type: seqaij
> rows=330, cols=330
> total: nonzeros=7642, allocated nonzeros=7642
> total number of mallocs used during MatSetValues calls =0
> using I-node routines: found 121 nodes, limit used is 5
> A10
> Mat Object: 1 MPI processes
> type: seqaij
> rows=330, cols=2000
> total: nonzeros=22800, allocated nonzeros=22800
> total number of mallocs used during MatSetValues calls =0
> using I-node routines: found 121 nodes, limit used is 5
> KSP of A00
> KSP Object: (fieldsplit_0_) 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: (fieldsplit_0_) 1 MPI
> processes
> type: hypre
> HYPRE Euclid preconditioning
> HYPRE Euclid: number of levels 1
> linear system matrix = precond matrix:
> Mat Object: (fieldsplit_0_)
> 1 MPI processes
> type: seqaij
> rows=2000, cols=2000
> total: nonzeros=40000, allocated nonzeros=40000
> total number of mallocs used during MatSetValues calls =0
> using I-node routines: found 400 nodes, limit used is 5
> A01
> Mat Object: 1 MPI processes
> type: seqaij
> rows=2000, cols=330
> total: nonzeros=22800, allocated nonzeros=22800
> total number of mallocs used during MatSetValues calls =0
> using I-node routines: found 400 nodes, limit used is 5
> Mat Object: 1 MPI processes
> type: seqaij
> rows=330, cols=330
> total: nonzeros=7642, allocated nonzeros=7642
> total number of mallocs used during MatSetValues calls =0
> using I-node routines: found 121 nodes, limit used is 5
> linear system matrix = precond matrix:
> Mat Object: 1 MPI processes
> type: seqaij
> rows=2330, cols=2330
> total: nonzeros=93242, allocated nonzeros=93242
> total number of mallocs used during MatSetValues calls =0
> using I-node routines: found 521 nodes, limit used is 5
>
> I am not completely surprised by this since the multigrid algorithm might
> want to know the structure of my vector in order to do a good job at
> restrictions and prolongations, etc... I am just not sure when I should
> call: DMShellSetGlobalVector() or DMShellSetCreateGlobalVector().
> If I call DMShellSetGlobalVector() I assume that I need to generate my
> vector somehow before hand but I don't know what is required to make it a
> valid "template" vector?
> If I call DMShellSetCreateGlobalVector() I need to pass it a functions
> that computes a vector but what kind of vector? A residual or a "template"?
> This is not very clear to me...
>
> --
> Best,
> Luc
>
>
--
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/20141121/ae5604c0/attachment-0001.html>
More information about the petsc-users
mailing list