This is fortran where pierr return status is ignored. So the -info for this run is useless.
You can do the following to tell petsc to go ahead with the malloc - and not set an error [for the extra mallocs]. Now '-info' should list the mallocs that took place. call MatSetOption(petsc_obj%jacmat,MAT_NEW_NONZERO_ALLOCATION_ERR,PETSC_FALSE,pierr) Or use a debugger [with a breakpoint in PetscError] to determine the exact place in code that causes the extra malloc - and then see why that value was not counted towards preallocation Satish On Thu, 4 Apr 2013, George Pau wrote: > Hi > > Just a follow up on the previous email which was sent accidentally. The > info during assembly indicates there is no mallocs (typo in previous > email). In addition, mncon is 18 and so the total nonzero column blocks > per row block is greater than the nonzero blocks shown. If I use a single > processor, I do not see the above error. > > Thanks, > George > > > > On Thu, Apr 4, 2013 at 1:01 PM, George Pau <gpau at lbl.gov> wrote: > > > Hi, > > > > I am trying to determine where there is malloc when I am doing a > > MatSetValuesBlocked. The following is the error: > > > > [1]PETSC ERROR: --------------------- Error Message > > ------------------------------------ > > [1]PETSC ERROR: Argument out of range! > > [1]PETSC ERROR: New nonzero at (69216,95036) caused a malloc! > > > > However, when I look at the info during the assembly, I have > > > > [0] MatAssemblyBegin_MPIBAIJ(): Stash has 0 entries,uses 0 mallocs. > > [0] MatAssemblyBegin_MPIBAIJ(): Block-Stash has 0 entries, uses 0 mallocs. > > [1] MatAssemblyEnd_SeqBAIJ(): Matrix size: 381300 X 381300, block size 4; > > storage space: 14143776 unneeded, 10259424 used > > [1] MatAssemblyEnd_SeqBAIJ(): Number of mallocs during MatSetValues is 0 > > [1] MatAssemblyEnd_SeqBAIJ(): Most nonzeros blocks in any row is 16 > > [0] MatAssemblyEnd_SeqBAIJ(): Matrix size: 381300 X 381300, block size 4; > > storage space: 13696176 unneeded, 10707024 used > > [0] MatAssemblyEnd_SeqBAIJ(): Number of mallocs during MatSetValues is 0 > > [0] MatAssemblyEnd_SeqBAIJ(): Most nonzeros blocks in any row is 11 > > > > which indicates there is mallocs. > > > > The following is how I set up the matrix: > > > > call MatCreate(PETSC_COMM_WORLD,petsc_obj%jacmat, pierr) > > call > > MatSetSizes(petsc_obj%jacmat,PETSC_DECIDE,PETSC_DECIDE,nel*neq,nel*neq,pierr) > > call MatSetFromOptions(petsc_obj%jacmat,pierr) > > call MatSetBlockSize(petsc_obj%jacmat,neq,pierr) > > call MatSetType(petsc_obj%jacmat,MATBAIJ,pierr) > > call > > MatSeqBAIJSetPreallocation(petsc_obj%jacmat,neq,(mncon+1)*neq*neq,PETSC_NULL_INTEGER,pierr) > > call MatMPIBAIJSetPreallocation(petsc_obj%jacmat, > > neq,neq*neq,PETSC_NULL_INTEGER,mncon*neq*neq,PETSC_NULL_INTEGER,pierr) > > call MatSetOption(petsc_obj%jacmat,MAT_ROW_ORIENTED,PETSC_FALSE,pierr) > > !because of how aval is stored. > > > > -- > > George Pau > > Earth Sciences Division > > Lawrence Berkeley National Laboratory > > One Cyclotron, MS 74-120 > > Berkeley, CA 94720 > > > > (510) 486-7196 > > gpau at lbl.gov > > http://esd.lbl.gov/about/staff/georgepau/ > > > > > >
