On Jan 28, 2012, at 5:40 AM, Stefano Zampini wrote:

> 
> I'm getting errors when not preallocating for MATSEQDENSE matrices. Is it 
> what you want with dense matrices too?

    This comes about because we want the user to be free to set the matrix 
sizes BEFORE setting the matrix type or AFTER setting the matrix type.  Thus 
neither setting the sizes NOR setting the type to dense trigger the 
MatPreallocate(), 

     To match the paradigm of other matrix types we could still require calling 
MatSetUp() before setting values for dense, but that is kind of pedantic. An 
alternative is to have MatSetSizes_XXXDense() trigger allocation and have 
MatCreate_XXXDense() trigger allocation IFF the sizes have already been set 
then you the user do not need to call a preallocation or a MatSetUp().   The 
trouble with this is that then the user cannot provide the array space (that is 
provided by MatSeqDenseSetPreallocation()) themselves except before they call 
MatSetSizes() which is kind of unnatural. 

    Thus the current consensus is the user must call MatSetUp() or 
MatPreallocated() or MatSetUpPreallocation() or MatXXXSetPreallocation() 
UNIVERSALLY if creating the matrix themselves before setting values into even a 
dense matrix.

    
    Barry




> 
> 2012/1/21 Stefano Zampini <stefano.zampini at gmail.com>
> Just pulled and checked. The code works for me.
> 
> Stefano
> 
> 
> 2012/1/21 Barry Smith <bsmith at mcs.anl.gov>
> 
>  I have pushed an update so that converting from seqdense to seqaij does 
> correct preallocation.  So this problem should be gone for you.  Please let 
> me know if the problem does not resolve.
> 
>   Barry
> 
> On Jan 20, 2012, at 10:25 AM, Stefano Zampini wrote:
> 
> > I pulled the latest tip and recompiling my application I got this error 
> > when converting from SEQDENSE to SEQAIJ
> >
> > [0]PETSC ERROR: 
> > ------------------------------------------------------------------------
> > [0]PETSC ERROR: MatSetValues_SeqAIJ() line 331 in 
> > src/mat/impls/aij/seq/aij.c
> > [0]PETSC ERROR: MatSetValues() line 1119 in src/mat/interface/matrix.c
> > [0]PETSC ERROR: MatConvert_Basic() line 37 in src/mat/utils/convert.c
> > [0]PETSC ERROR: MatConvert() line 3859 in src/mat/interface/matrix.c
> >
> > Is there a way to disable from command line new nonzeros errors?
> >
> > 2012/1/16 Lisandro Dalcin <dalcinl at gmail.com>
> > On 16 January 2012 17:58, Lisandro Dalcin <dalcinl at gmail.com> wrote:
> > > On 15 January 2012 23:30, Jed Brown <jedbrown at mcs.anl.gov> wrote:
> > >> On Wed, Jan 11, 2012 at 22:10, Barry Smith <bsmith at mcs.anl.gov> wrote:
> > >>>
> > >>>  That is not a concern, better to stop early with a useful message than
> > >>> take tons of extra time on a huge job and make PETSc look extra bad at 
> > >>> huge
> > >>> problems.
> > >>
> > >>
> > >> Done, I'll check the nightlies tomorrow to see which examples broke.
> > >>
> > >> http://petsc.cs.iit.edu/petsc/petsc-dev/rev/631dbd3be1c5
> > >
> > > I've got this regression in petsc4py converting CRL -> AIJ. Of course
> > > I can fix the test, but perhaps this should be handled in PETSc?
> > >
> >
> > More regressions:
> >
> > [0] MatShift() line 166 in /home/devel/petsc/dev/src/mat/utils/axpy.c
> > [0] MatSetValues() line 1119 in 
> > /home/devel/petsc/dev/src/mat/interface/matrix.c
> > [0] MatSetValues_SeqAIJ() line 331 in
> > /home/devel/petsc/dev/src/mat/impls/aij/seq/aij.c
> > [0] Argument out of range
> > [0] New nonzero at (0,0) caused a malloc
> >
> >
> >
> > --
> > Lisandro Dalcin
> > ---------------
> > CIMEC (INTEC/CONICET-UNL)
> > Predio CONICET-Santa Fe
> > Colectora RN 168 Km 472, Paraje El Pozo
> > 3000 Santa Fe, Argentina
> > Tel: +54-342-4511594 (ext 1011)
> > Tel/Fax: +54-342-4511169
> >
> >
> >
> > --
> > Stefano
> 
> 
> 
> 
> -- 
> Stefano
> 
> 
> 
> -- 
> Stefano


Reply via email to