-snes_view would also be useful for basic santity checks.
On Tue, Apr 22, 2014 at 11:43 AM, Peter Brune <[email protected]> wrote: > > > > On Tue, Apr 22, 2014 at 10:56 AM, Fischer, Greg A. < > [email protected]> wrote: > >> >> >> *From:* Peter Brune [mailto:[email protected]] >> *Sent:* Tuesday, April 22, 2014 10:16 AM >> *To:* Fischer, Greg A. >> *Cc:* [email protected] >> *Subject:* Re: [petsc-users] SNES: approximating the Jacobian with >> computed residuals? >> >> >> >> On Tue, Apr 22, 2014 at 8:48 AM, Fischer, Greg A. < >> [email protected]> wrote: >> >> Hello PETSc-users, >> >> I'm using the SNES component with the NGMRES method in my application. >> I'm using a matrix-free context for the Jacobian and the >> MatMFFDComputeJacobian() function in my FormJacobian routine. My >> understanding is that this effectively approximates the Jacobian using the >> equation at the bottom of Page 103 in the PETSc User's Manual. This works, >> but the expense of computing two function evaluations in each SNES >> iteration nearly wipes out the performance improvements over Picard >> iteration. >> >> >> >> Try -snes_type anderson. It's less stable than NGMRES, but requires one >> function evaluation per iteration. The manual is out of date. I guess >> it's time to fix that. It's interesting that the cost of matrix assembly >> and a linear solve is around the same as that of a function evaluation. >> Output from -log_summary would help in the diagnosis. >> >> >> >> I tried the –snes_type anderson option, and it seems to be requiring even >> more function evaluations than the Picard iterations. I’ve attached >> –log_summary output. This seems strange, because I can use the NLKAIN code ( >> http://nlkain.sourceforge.net/) to fairly good effect, and I’ve read >> that it’s related to Anderson mixing. Would it be useful to adjust the >> parameters? >> > > If I recall correctly, NLKAIN is yet another improvement on Anderson > Mixing. Our NGMRES is what's in O/W and is built largely around being > nonlinearly preconditionable with something strong like FAS. What is the > perceived difference in convergence? (what does -snes_monitor say?) Any > multitude of tolerances may be different between the two methods, and it's > hard to judge without knowing much, much more. Seeing what happens when > one changes the parameters is of course important if you're looking at > performance. > > By Picard, you mean simple fixed-point iteration, right? What constitutes > a Picard iteration is a longstanding argument on this list and therefore > requires clarification, unfortunately. :) This (without linesearch) can be > duplicated in PETSc with -snes_type nrichardson -snes_linesearch_type > basic. For a typical problem one must damp this with > -snes_linesearch_damping <damping parameter> That's what the linesearch is > there to avoid, but this takes more function evaluations. > > >> >> >> I’ve also attached –log_summary output for NGMRES. Does anything jump out >> as being amiss? >> > > ########################################################## > # # > # WARNING!!! # > # # > # This code was compiled with a debugging option, # > # To get timing results run ./configure # > # using --with-debugging=no, the performance will # > # be generally two or three times faster. # > # # > ########################################################## > > Timing comparisons aren't reasonable with debugging on. > > >> >> >> >> >> Based on my (limited) understanding of the Oosterlee/Washio SIAM paper >> ("Krylov Subspace Acceleration of Nonlinear Multigrid..."), they seem to >> suggest that it's possible to approximate the Jacobian with a series of >> previously-computed residuals (eq 2.14), rather than additional function >> evaluations in each iteration. Is this correct? If so, could someone point >> me to a reference that demonstrates how to do this with PETSc? >> >> >> >> What indication do you have that the Jacobian is calculated at all in the >> NGMRES method? The two function evaluations are related to computing the >> quantities labeled F(u_M) and F(u_A) in O/W. We already use the Jacobian >> approximation for the minimization problem (2.14). >> >> >> >> - Peter >> >> >> >> Thanks for the clarification. >> >> >> >> -Greg >> >> >> >> >> Or, perhaps a better question to ask is: are there other ways of reducing >> the computing burden associated with estimating the Jacobian? >> >> Thanks, >> Greg >> >> >> > >
