I've updated docs and changes to reflect this new need for calling the preallocation routines.
Barry On Jan 28, 2012, at 1:11 PM, Barry Smith wrote: > > 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 >
