On Jul 7, 2010, at 2:06 PM, Satish Balay wrote: > On Wed, 7 Jul 2010, Xuan YU wrote: > >> ierr = MatCreateSeqAIJ(PETSC_COMM_SELF,N,N, >> 10,PETSC_NULL,&J);CHKERRQ(ierr); > >> ierr = MatAssemblyBegin(J,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr); >> ierr = MatAssemblyEnd(J,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr); > > This assembly removes the unused space here. Since no values are > inserted - it squezes out all of the allocated space. Perhaps you just > need to remove these 2 calls as the actual matrix is assembled further > down the code. >
I removed these 2 But got Error Message [0]PETSC ERROR: Object is in wrong state! [0]PETSC ERROR: Not for unassembled matrix! > Satish > >> ierr = SNESComputeJacobian(ts_snes,CV_Y,&J,&J,&flag);CHKERRQ(ierr); >> ierr = MatGetColoring(J,MATCOLORINGSL,&iscoloring);CHKERRQ(ierr); >> ierr = >> MatFDColoringCreate(J,iscoloring,&matfdcoloring);CHKERRQ(ierr); >> ierr = MatFDColoringSetFunction(matfdcoloring,(PetscErrorCode >> (*)(void))f,(void*)&appctx);CHKERRQ(ierr); >> ierr = MatFDColoringSetFromOptions(matfdcoloring);CHKERRQ(ierr); >> ierr = >> TSSetRHSJacobian(ts,J,J,TSDefaultComputeJacobianColor,matfdcoloring); >> >> These are the Jacobian related codes. >> >> >> >> >> On Jul 7, 2010, at 1:51 PM, Satish Balay wrote: >> >>>> total: nonzeros=1830 >>>> mallocs used during MatSetValues calls =1830 >>> >>> Looks like you are zero-ing out the non-zero structure - before >>> assembling the matrix. >>> >>> Are you calling MatZeroRows() or MatZeroEntries() or something >>> else - >>> before assembling the matrix? >>> >>> Satish >>> >>> On Wed, 7 Jul 2010, Xuan YU wrote: >>> >>>> I made a change: ierr = >>>> MatCreateSeqAIJ(PETSC_COMM_SELF,N,N,5,PETSC_NULL,&J);CHKERRQ(ierr); >>>> >>>> Time of the code did not change much, and got the info: >>>> Matrix Object: >>>> type=seqaij, rows=1830, cols=1830 >>>> total: nonzeros=1830, allocated nonzeros=36600 >>>> total number of mallocs used during MatSetValues calls =1830 >>>> not using I-node routines >>>> >>>> >>>> >>>> On Jul 7, 2010, at 12:51 PM, Satish Balay wrote: >>>> >>>>>> total: nonzeros=1830, allocated nonzeros=29280 >>>>>> total number of mallocs used during MatSetValues calls =1830 >>>>> >>>>> There is something wrong with your preallocation or matrix >>>>> assembly. You should see zero mallocs for efficient assembly. >>>>> >>>>> http://www.mcs.anl.gov/petsc/petsc-as/documentation/faq.html#efficient-assembly >>>>> >>>>> satish >>>>> >>>>> >>>>> On Wed, 7 Jul 2010, Xuan YU wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> I finite difference Jacobian approximation for my TS model. The >>>>>> size >>>>>> of >>>>>> the >>>>>> vector is 1830. I got the following info with(-ts_view): >>>>>> >>>>>> type: beuler >>>>>> maximum steps=50 >>>>>> maximum time=50 >>>>>> total number of nonlinear solver iterations=647 >>>>>> total number of linear solver iterations=647 >>>>>> SNES Object: >>>>>> type: ls >>>>>> line search variant: SNESLineSearchCubic >>>>>> alpha=0.0001, maxstep=1e+08, minlambda=1e-12 >>>>>> maximum iterations=50, maximum function evaluations=10000 >>>>>> tolerances: relative=1e-08, absolute=1e-50, solution=1e-08 >>>>>> total number of linear solver iterations=50 >>>>>> total number of function evaluations=51 >>>>>> KSP Object: >>>>>> type: gmres >>>>>> GMRES: restart=30, using Classical (unmodified) Gram-Schmidt >>>>>> Orthogonalization with no iterative refinement >>>>>> GMRES: happy breakdown tolerance 1e-30 >>>>>> maximum iterations=10000, initial guess is zero >>>>>> tolerances: relative=1e-05, absolute=1e-50, divergence=10000 >>>>>> left preconditioning >>>>>> using PRECONDITIONED norm type for convergence test >>>>>> PC Object: >>>>>> type: ilu >>>>>> ILU: out-of-place factorization >>>>>> 0 levels of fill >>>>>> tolerance for zero pivot 1e-12 >>>>>> using diagonal shift to prevent zero pivot >>>>>> matrix ordering: natural >>>>>> factor fill ratio given 1, needed 1 >>>>>> Factored matrix follows: >>>>>> Matrix Object: >>>>>> type=seqaij, rows=1830, cols=1830 >>>>>> package used to perform factorization: petsc >>>>>> total: nonzeros=1830, allocated nonzeros=1830 >>>>>> total number of mallocs used during MatSetValues calls =0 >>>>>> not using I-node routines >>>>>> linear system matrix = precond matrix: >>>>>> Matrix Object: >>>>>> type=seqaij, rows=1830, cols=1830 >>>>>> total: nonzeros=1830, allocated nonzeros=29280 >>>>>> total number of mallocs used during MatSetValues calls =1830 >>>>>> not using I-node routines >>>>>> >>>>>> >>>>>> 50 output time step takes me 11.877s. So I guess there is >>>>>> something >>>>>> not >>>>>> appropriate with my Jacobian Matrix. Could you please tell me >>>>>> how to >>>>>> speed >>>>>> up >>>>>> my code? >>>>>> >>>>>> Thanks! >>>>>> >>>>>> Xuan YU >>>>>> xxy113 at psu.edu >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>> >>>> Xuan YU (??) >>>> xxy113 at psu.edu >>>> >>>> >>>> >>>> >> >> Xuan YU (??) >> xxy113 at psu.edu >> >> >> >> Xuan YU (??) xxy113 at psu.edu -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20100707/b68eb0b5/attachment-0001.htm>
