On Thu, 24 Jun 2010 14:28:03 -0500, David Fuentes <[email protected]> wrote: > On 6/24/10, Jed Brown <[email protected]> wrote: > > On Thu, 24 Jun 2010 13:59:21 -0500 (CDT), David Fuentes > > <[email protected]> wrote: > >> > >> I typically use Petsc Nonlinear Solvers in 3D and my bottle neck is > >> typically in the assembly with Petsc SNESSolve taking ~10% of the time > >> about ~50% in the jacobian, ~30% in the residual, and the > >> rest is distributed. > > > > So the linear solves are really easy. Are you caching a lot of stuff in > > the residual evaluation, it's not normal for it to be so much compared > > to Jacobian assembly unless you don't use an analytic Jacobian > > (e.g. -snes_mf_operator). > > Not sure, what do you typically cache ?
I cache a local linearization at quadrature points, but that is for fast matrix-free Jacobian application of high-order operators. It doesn't pay off in terms of time or storage for Q1 or P1, even in 3D. But if you had e.g. an expensive constitutive relation involving lookup tables, and you weren't overly concerned about using the minimum possible memory, but didn't want to do the extra work to integrate and insert the element matrices (because there was a high chance of the line search shortening the step), then you might cache the local linearization even for lowest-order elements. It sounds like this is not the case. What does -log_summary show? Are you doing a lot more function evaluations than Jacobian assemblies? It's surprising to me that they would cost almost the same amount per call, perhaps there is a hot spot somewhere in your residual evaluation. Jed ------------------------------------------------------------------------------ ThinkGeek and WIRED's GeekDad team up for the Ultimate GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the lucky parental unit. See the prize list and enter to win: http://p.sf.net/sfu/thinkgeek-promo _______________________________________________ Libmesh-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/libmesh-users
