On Thursday 05 March 2009 09:40:03 Garth N. Wells wrote: > Johan Hake wrote: > > On Thursday 05 March 2009 08:43:44 Garth N. Wells wrote: > >> Johan Hake wrote: > >>> 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? > >> > >> This should be left to the user, > >> > >> void PETScMatrix::axpy(double a, const GenericMatrix& A, bool > >> same_nonzero_pattern = false); > > > > Sounds reasonable. > > > > Should this signature be added in GenericMatrix.h? It is only > > EpetraMatrix and PETScMatrix that need to relate to this information. > > > >> The test for the non-zero pattern doesn't look robust to me. I would > >> expect that if there was an efficient, robust test to compare sparsity > >> patterns that PETSc would perform this. > > > > Ok. > > > >> Also, there is a problem with the code in PETScMatrix::axpy(..). Instead > >> of > >> > >> dolfin_assert(sameNonzeroPattern(*AA)); > >> MatAXPY(*(this->A), a, *AA->mat(), SAME_NONZERO_PATTERN); > >> > >> it should be > >> > >> if (sameNonzeroPattern(*AA)) > >> MatAXPY(*(this->A), a, *AA->mat(), SAME_NONZERO_PATTERN); > >> else > >> MatAXPY(*(this->A), a, *AA->mat(), DIFFERENT_NONZERO_PATTERN); > > > > Yes, you are right. I think did it by prupose though, i.e., only letting > > matrices with the same nonzero pattern be addable. :P > > That would work with enableDebug=yes, but comes unstuck if debugging is > disabled.
Yepp! You're all too right :P Johan > Garth > > > Johan > > > >> Garth > >> > >>> 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 <[email protected]>" > >>>>>>>> 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 <[email protected]>" > >>>>>>>> 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 <[email protected]>" > >>>>>>>> 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 > >>>>>>>> [email protected] > >>>>>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev > >>>>>>> > >>>>>>> _______________________________________________ > >>>>>>> DOLFIN-dev mailing list > >>>>>>> [email protected] > >>>>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev > >>>>> > >>>>> _______________________________________________ > >>>>> DOLFIN-dev mailing list > >>>>> [email protected] > >>>>> 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) > >>>> ---------------------------------------------------- _______________________________________________ DOLFIN-dev mailing list [email protected] http://www.fenics.org/mailman/listinfo/dolfin-dev
