[petsc-users] Simultaneously compute Residual+Jacobian in SNES

Derek Gaston friedmud at gmail.com
Mon Dec 12 10:36:09 CST 2016


On Mon, Dec 12, 2016 at 12:36 AM Jed Brown <jed at jedbrown.org> wrote:

> > Can you expand on that?  Do you believe automatic differentiation in
> > general to be "bad code management"?
>
> AD that prevents calling the non-AD function is bad AD.
>

That's not exactly the problem.  Even if you can call an AD and a non-AD
residual... you still have to compute two residuals to compute a residual
and a Jacobian separately when using AD.

It's not the end of the world... but it was something that prompted me to
ask the question.


> Are all the fields in unique function spaces that need different
> transforms or different quadratures?  If not, it seems like the presence
> of many fields would already amortize the geometric overhead of visiting
> an element.
>

These were two separate examples.  Expensive shape functions, by
themselves, could warrant computing the residual and Jacobian
simultaneously.  Also: many variables, by themselves, could do the same.


> Alternatively, you could cache the effective material coefficient (and its
> gradient) at each quadrature point during residual evaluation, thus
> avoiding a re-solve when building the Jacobian.


I agree with this.  We have some support for it in MOOSE now... and more
plans for better support in the future.  It's a classic time/space tradeoff.


> I would recommend that unless you know that line searches are rare.
>

BTW: Many (most?) of our most complex applications all _disable_ line
search.  Over the years we've found line search to be more of a hindrance
than a help.  We typically prefer using some sort of "physics based" damped
Newton.


> It is far more common that the Jacobian is _much_ more expensive than
> the residual, in which case the mere possibility of a line search (or of
> converging) would justify deferring the Jacobian.  I think it's much
> better to make residuals and Jacobians fast independently, then perhaps
> make the residual do some cheap caching, and worry about
> second-guessing Newton only as a last resort.


I think I agree.  These are definitely "fringe" cases... for most
applications Jacobians are _way_ more expensive.


> That said, I have no doubt that we could
> demonstrate some benefit to using heuristics and a relative cost model
> to sometimes compute residuals and Jacobians together.  It just isn't
> that interesting and I think the gains are likely small and will
> generate lots of bikeshedding about the heuristic.
>

I agree here too.  It could be done... but I think you've convinced me that
it's not worth the trouble :-)

Thanks for the discussion everyone!

Derek
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20161212/8918db32/attachment.html>


More information about the petsc-users mailing list