[petsc-dev] GASM

Mark F. Adams mark.adams at columbia.edu
Wed Mar 28 20:24:09 CDT 2012


Dmitry,

I seem to have a problem with GASM.  I have code like this to get an eigen estimate:

          ierr = PetscObjectReference( (PetscObject)subpc );   CHKERRQ(ierr);
          ierr = KSPSetPC( eksp, subpc ); CHKERRQ( ierr );
    < snip >
          ierr = KSPDestroy( &eksp );       CHKERRQ(ierr);

This 'subpc' has GASM and is used in the real solver.  And I get this error when the real solver gets setup, after the above code:

==2070== Invalid read of size 4
==2070==    at 0x9F034C: PCSetUp_GASM (gasm.c:275)
==2070==    by 0xA9620A: PCSetUp (precon.c:832)
==2070==    by 0xB20EE5: KSPSetUp (itfunc.c:266)
==2070==    by 0xA74975: PCSetUp_MG (mg.c:647)
==2070==    by 0xA11A1B: PCSetUp_GAMG (gamg.c:803)
==2070==    by 0xA9620A: PCSetUp (precon.c:832)
==2070==    by 0xB20EE5: KSPSetUp (itfunc.c:266)
==2070==    by 0xB22178: KSPSolve (itfunc.c:390)
==2070==    by 0x95B8C0: kspsolve_ (itfuncf.c:219)
==2070==    by 0x404E: MAIN__ (in ./ex54f)
==2070==    by 0x4A6B: main (in ./ex54f)
==2070==  Address 0x29e6ac0 is 32 bytes inside a block of size 108 free'd
==2070==    at 0x19317D8: free (vg_replace_malloc.c:366)
==2070==    by 0x865AD: PetscFreeAlign (mal.c:75)
==2070==    by 0x9FAB7F: PCGASMDestroySubdomains (gasm.c:1309)
==2070==    by 0x9F3AED: PCReset_GASM (gasm.c:536)
==2070==    by 0xA8B322: PCReset (precon.c:80)
==2070==    by 0xB270D0: KSPReset (itfunc.c:723)
==2070==    by 0xB279BA: KSPDestroy (itfunc.c:760)
==2070==    by 0xA1164D: PCSetUp_GAMG (gamg.c:779)
==2070==    by 0xA9620A: PCSetUp (precon.c:832)
==2070==    by 0xB20EE5: KSPSetUp (itfunc.c:266)
==2070==    by 0xB22178: KSPSolve (itfunc.c:390)
==2070==    by 0x95B8C0: kspsolve_ (itfuncf.c:219)
==2070==    by 0x404E: MAIN__ (in ./ex54f)
==2070==    by 0x4A6B: main (in ./ex54f)
==2070== 
[0]PETSC ERROR: --------------------- Error Message ------------------------------------
[0]PETSC ERROR: Null argument, when expecting valid pointer!
[0]PETSC ERROR: Null Object: Parameter # 1!
[0]PETSC ERROR: ------------------------------------------------------------------------
[0]PETSC ERROR: Petsc Development HG revision: e4ca525c39fd35cca849d095040a2de0488f347b  HG Date: Fri Mar 23 22:45:44 2012 -0500
[0]PETSC ERROR: See docs/changes/index.html for recent updates.
[0]PETSC ERROR: See docs/faq.html for hints about trouble shooting.
[0]PETSC ERROR: See docs/index.html for manual pages.
[0]PETSC ERROR: ------------------------------------------------------------------------
[0]PETSC ERROR: ./ex54f on a arch-maco named madams-macbk-3.home by markadams Wed Mar 28 21:20:16 2012
[0]PETSC ERROR: Libraries linked from /Users/markadams/Codes/petsc-dev/arch-macosx-gnu-O/lib
[0]PETSC ERROR: Configure run at Sat Mar 24 09:45:16 2012
[0]PETSC ERROR: Configure options CXX="/sw/lib/gcc4.6/bin/g++-4 -malign-double" CC="/sw/lib/gcc4.6/bin/gcc-4 -malign-double" FC=/sw/lib/gcc4.6/bin/gfortran --download-parmetis=1 --download-metis=1 --download-hdf5=1 --download-hypre=1 --download-ml=1 --download-triangle=1 --with-x=0 --with-debugging=1 --download-mpich=1 PETSC_ARCH=arch-macosx-gnu-O --download-f-blas-lapack=1
[0]PETSC ERROR: ------------------------------------------------------------------------
[0]PETSC ERROR: ISSort() line 761 in /Users/markadams/Codes/petsc-dev/src/vec/is/interface/index.c
[0]PETSC ERROR: PCSetUp_GASM() line 275 in /Users/markadams/Codes/petsc-dev/src/ksp/pc/impls/gasm/gasm.c

THis error goes away if I comment out the above call to KSPDestroy.  So it looks like KSPDestroy is destroying GASM (or part of it) even though I take  a reference to it, to prevent this destruction.

Any ideas?

Mark


> Mark,
> 
> You should pass your subdomain ISs through the first IS list argument, and leave the second as PETSC_NULL.
> In that case GASM assumes that the user passed in a nonoverlapping decomposition through the first list.
> This is the behavior that GASM inherited from ASM and it isn't very well (or at all) documented in either.
> Let me know if that doesn't fix the problem.
> 
> Note also that you don't have to explicitly set overlap to 0: if the user sets not overlap PETSc won't try to increase it,
> and if you set overlap to 0 it will not try to adjust the subdomains to make sure the overlap is 0.  Both ASM and GASM simply assume that the user does the right thing and passes in a nonoverlapping decomposition.
> 
> Incidentally, it may be time to change this API.  I'm trying to debug a bad convergence problem with GASM -- inexplicably, it converges slower than ASM with a single process and multiple subdomains  -- so now is a good time to mess with the code, while I still remember what's what.  Another thing I've considered doing is reordering the subdomains internally (on demand only), to ensure a deadlock-free ordering of the subcomms.
> 
> Dmitry.
> 
> On Tue, Mar 27, 2012 at 6:28 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
> 
>  This is why petsc-dev is better than a random list of email addresses.  No one on your random list uses GASM
> 
> 
> 
>   Barry
> 
> On Mar 27, 2012, at 4:49 PM, Mark F. Adams wrote:
> 
> > I'm trying to make general non-overlapping domains in GASM.  I create a vector of IS, each with the global indices of the equations in each block.
> >
> > I use code that looks like:
> >
> >        ierr = PCSetType( subpc, PCGASM ); CHKERRQ(ierr);
> >        ierr = PCGASMSetLocalSubdomains( subpc, sz, PETSC_NULL, is ); CHKERRQ(ierr);
> >        ierr = PetscFree( is ); CHKERRQ(ierr);
> >        ierr = PCGASMSetOverlap( subpc, 0 ); CHKERRQ(ierr);
> >
> > In parallel, I get errors like this:
> >
> > [1]PETSC ERROR: gis_local contains -85 indices outside of gis!
> >  <snip>
> > [1]PETSC ERROR: PCSetUp_GASM() line 332 in /Users/markadams/Codes/petsc-dev/src/ksp/pc/impls/gasm/gasm.c
> >
> > Anyone have any ideas on what I'm doing wrong here?  I've checked the input and I think it is fine,
> >
> > Mark
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20120328/0ee0a7a2/attachment.html>


More information about the petsc-dev mailing list