← Back to team overview

dolfin team mailing list archive

Re: [HG DOLFIN] Fixes for PETSc 2.3.3 compatibility.

 

Hello Marc!

>     here's a little patch I did to handle the change in MatInfo from
> Petsc-3.0.0 (which no longer includes global sizes...this is handled
> by MatGetSize)

Ok.

> I believe this bit of code has the same  functionality as your
> original code (whether that test is appropriate for determining the
> same NonZeroStructure, I'm not sure)

Thanks! 

>   // mspieg: matinfo no longer includes sizes in petsc-dev
>    MatInfo this_info, other_info;
>    MatGetInfo(*(this->A), MAT_GLOBAL_SUM, &this_info);
>    MatGetInfo(*A.mat(),   MAT_GLOBAL_SUM, &other_info);
>    PetscInt this_m, this_n, other_m, other_n;
>    MatGetSize(*(this->A),&this_m,&this_n);
>    MatGetSize(*(this->A),&other_m,&other_n);
>
>    return this_info.nz_allocated   == other_info.nz_allocated   && \
>           this_n == other_n && \
>           this_m  == other_m;

However as you say I am not sure this is enough to determine the same nonzero 
patter. As a side note we also store the size of the global matrix so we 
probably do not have to call PETSc for this.

Should we include more comparisions from the MatInfo, memory, blocksize? 

Johan

> cheers
> marc
>
> On Mar 4, 2009, at 2:50 PM, Johan Hake wrote:
> > On Wednesday 04 March 2009 20:16:56 Garth N. Wells wrote:
> >> Johan Hake wrote:
> >>> On Wednesday 04 March 2009 12:46:10 DOLFIN wrote:
> >>>> One or more new changesets pushed to the primary dolfin repository.
> >>>> A short summary of the last three changesets is included below.
> >>>>
> >>>> changeset:   5791:7b24d1479dff485f4db0ba38c2e28984a0a3cf46
> >>>> tag:         tip
> >>>> user:        "Garth N. Wells <gnw20@xxxxxxxxx>"
> >>>> date:        Wed Mar 04 11:33:23 2009 +0000
> >>>> files:       dolfin/la/PETScKrylovSolver.cpp
> >>>> dolfin/la/PETScKrylovSolver.h dolfin/la/PETScMatrix.cpp
> >>>> dolfin/la/PETScMatrix.h
> >>>> dolfin/la/PETScPreconditioner.cpp dolfin/la/PETScPreconditioner.h
> >>>> description:
> >>>> Fixes for PETSc 2.3.3 compatibility.
> >>>
> >>> This commit broke the linear algebra test for PETSc matrices. The
> >>> check
> >>> for the sparsity pattern is commented out, and en error is raised
> >>> instead. Is it not possible to check the non zero pattern for PETSc
> >>> matrices in 3.0?
> >>
> >> The same check doesn't work with PETSc 3.0 because of changes to
> >> MatInfo.
> >
> > Ok.
> >
> >> The check is not pretty so we should find a better solution if this
> >> function is required.
> >
> > I think it would be nice to have it, as PETSc can do some
> > optimalizations if
> > two matrices have the same pattern.
> >
> >> There is a PETSc function
> >> MatGetSeqNonzeroStructure which may help, but I haven't had time
> >> to look
> >> at it.
> >
> > Haven't looked to deep into MatGetSeqNonzeroStructure. But it
> > sounds like it
> > gives the nonzero sparsity pattern which we really are not
> > interested in.
> >
> >> Why is the function PETScMatrix::sameNonzeroPattern required? It's
> >> not
> >> implemented for all backends.
> >
> > When I implemented the axpy function I added this test. I do check
> > the nonzero
> > pattern for EpetraMatrices too, but there I only do it once, so no
> > extra
> > function.
> >
> > I think we should be able to still use the MatInfo structure, but
> > maybe some
> > guidence from the PETSc developers could help?
> >
> > Johan
> >
> >> Garth
> >>
> >>> Johan
> >>>
> >>>> changeset:   5790:05d6f03e87a8bb33cc5dc55add40e8de1c6ebfd0
> >>>> user:        "Garth N. Wells <gnw20@xxxxxxxxx>"
> >>>> date:        Wed Mar 04 11:21:41 2009 +0000
> >>>> files:       dolfin/la/PETScKrylovMatrix.cpp
> >>>> dolfin/la/PETScKrylovSolver.cpp dolfin/la/PETScKrylovSolver.h
> >>>> dolfin/la/PETScLUSolver.cpp dolfin/la/PETScMatrix.cpp
> >>>> dolfin/la/PETScMatrix.h dolfin/la/PETScPreconditioner.cpp
> >>>> dolfin/la/PETScPreconditioner.h description:
> >>>> PETSc 3 updates.
> >>>>
> >>>>
> >>>> changeset:   5789:3abcc647c6141cc4b2fd035cc417eedf80872ae7
> >>>> user:        "Garth N. Wells <gnw20@xxxxxxxxx>"
> >>>> date:        Wed Mar 04 10:45:44 2009 +0000
> >>>> files:       dolfin/la/PETScKrylovSolver.cpp
> >>>> description:
> >>>> Some updates for PETSc 3.
> >>>>
> >>>> -------------------------------------------------------------------
> >>>> ---
> >>>> For more details, visit http://www.fenics.org/hg/dolfin
> >>>> _______________________________________________
> >>>> DOLFIN-dev mailing list
> >>>> DOLFIN-dev@xxxxxxxxxx
> >>>> http://www.fenics.org/mailman/listinfo/dolfin-dev
> >>>
> >>> _______________________________________________
> >>> DOLFIN-dev mailing list
> >>> DOLFIN-dev@xxxxxxxxxx
> >>> http://www.fenics.org/mailman/listinfo/dolfin-dev
> >
> > _______________________________________________
> > DOLFIN-dev mailing list
> > DOLFIN-dev@xxxxxxxxxx
> > http://www.fenics.org/mailman/listinfo/dolfin-dev
>
> ----------------------------------------------------
> Marc Spiegelman
> Lamont-Doherty Earth Observatory
> Dept. of Applied Physics/Applied Math
> Columbia University
> http://www.ldeo.columbia.edu/~mspieg
> tel: 845 704 2323 (SkypeIn)
> ----------------------------------------------------




Follow ups

References