What happens when you use sundials from PETSc. Use -ts_type sundials? Run also with -log_summary and compare the number of function evaluations, timesteps etc
Without knowing more information about what sundials/cvode is doing there is no way to know why it is much faster. Could be larger time-steps, less function evaluations, etc. Barry On Jul 27, 2010, at 8:22 AM, Xuan YU wrote: > > On Jul 26, 2010, at 9:51 PM, Barry Smith wrote: > >> >> 1) The function evaluations are taking a lot of time; the problem is not >> with the Jacobian differencing it is that each function evaluation needed by >> the differencing is slow >> > > When I use cvode solve the same preoblem, function evaluations takes 41.42% > of total time. And the total time consumption is much less than Petsc.( > 5.657seconds VS 2 minutes 33.726 seconds) > > > > >> 2) There are a huge number of SNESFunctionEvaluations, much much more then >> I would expect, like 10 per nonlinear solve. >> > > What is the possible reason for this case? > > > >> Barry >> >> >> On Jul 26, 2010, at 5:50 PM, Xuan YU wrote: >> >>> >>> On Jul 26, 2010, at 3:53 PM, Barry Smith wrote: >>> >>>> >>>> ./configure an optimized version of PETSc (that is with the ./configure >>>> flag of --with-debugging=0) and run with -log_summary to get a summary of >>>> where it is spending the time. This will give you a better idea of why it >>>> is taking so long. >>> >>> Does my log summary means the finite difference Jacobian approximation is >>> not good? Should I write analytic jacobian function(that will be a huge >>> amount of work)? >>> >>> >>> >>> <Picture 3.png> >>> <Picture 4.png> >>> >>> >>> <Picture 5.png> >>>> >>>> Barry >>>> >>>> On Jul 26, 2010, at 2:49 PM, Xuan YU wrote: >>>> >>>>> Hi, >>>>> >>>>> I am using TS solving a nonlinear problem. I created an approximate data >>>>> structure for Jacobian matrix to be used with matcoloring, my >>>>> MatFDColoringView is like this: >>>>> <Picture 1.png> >>>>> >>>>> But the speed of code is too slow than what I expected. Only 10 time step >>>>> costs 11seconds! >>>>> >>>>> What's wrong with my code? How can I speed up? >>>>> >>>>> Thanks! >>>>> >>>>> This is the ts_view result. >>>>> >>>>> TS Object: >>>>> type: beuler >>>>> maximum steps=100 >>>>> maximum time=10 >>>>> total number of nonlinear solver iterations=186 >>>>> total number of linear solver iterations=423 >>>>> 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=1 >>>>> total number of function evaluations=19 >>>>> 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=1838, cols=1838 >>>>> package used to perform factorization: petsc >>>>> total: nonzeros=8464, allocated nonzeros=8464 >>>>> total number of mallocs used during MatSetValues calls =0 >>>>> not using I-node routines >>>>> linear system matrix = precond matrix: >>>>> Matrix Object: >>>>> type=seqaij, rows=1838, cols=1838 >>>>> total: nonzeros=8464, allocated nonzeros=9745 >>>>> total number of mallocs used during MatSetValues calls =37 >>>>> not using I-node routines >>>>> >>>>> >>>>> Xuan YU >>>>> xxy113 at psu.edu >>>>> >>>>> >>>>> >>>>> >>>> >>>> >>> >>> Xuan YU >>> xxy113 at psu.edu >>> >>> >>> >>> >> >> >