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 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
