[petsc-dev] handling user domain errors
Dmitry Karpeyev
dkarpeev at gmail.com
Wed Apr 29 21:28:08 CDT 2015
Barry,
Sorry, I must have missed this -- I really ought to make a better filter
for catching email like this.
I think using NaNs is an excellent solution, in fact, I was proposing it a
few months ago here :-)
http://lists.mcs.anl.gov/pipermail/petsc-dev/2015-February/016958.html
It ensures that the error is collective (the norm reduction will ensure
every rank gets a NaN),
the "error condition" is cleared automatically on the next MatMult, etc.
I'm all for it.
Should I put it in?
Dmitry.
On Wed, Apr 29, 2015 at 8:26 PM Barry Smith <bsmith at mcs.anl.gov> wrote:
>
> Dmitry,
>
> I haven't heard back from you on this. Any thoughts?
>
> Barry
>
> > On Apr 20, 2015, at 6:23 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
> >
> >
> > Dmitry,
> >
> > Rather than introducing another whole complexity of flags for
> indicating domain errors in user functions just do the following.
> >
> > 1) just stick a Nan into the functions result
> > 2) remove the VecValidValues() at the END of routines like MatMult()
> > 3) when Nan or Inf pop up in Krylov methods (which will happen within
> VecNorm or VecDot() and thus we get free collective knowledge of the
> problem even if it happened on only one node), generate the appropriate
> KSP_DIVERGED_NANORINF. This is already handled sometimes (most of the
> time?), for example in KSPSolve_CG is code
> > ierr = VecXDot(Z,R,&beta);CHKERRQ(ierr); /* beta <- z'*r
> */
> > if (PetscIsInfOrNanScalar(beta)) {
> > if (ksp->errorifnotconverged)
> SETERRQ(PetscObjectComm((PetscObject)ksp),PETSC_ERR_NOT_CONVERGED,"KSPSolve
> has not converged due to Nan or Inf inner product");
> > else {
> > ksp->reason = KSP_DIVERGED_NANORINF;
> > PetscFunctionReturn(0);
> > }
> > }
> >
> > 4) SNES already handles failed to converge KSP and
> > 5 ) TS already handles failed to converged SNES; by, for example,
> cutting the timestep.
> >
> > Barry
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20150430/a850292f/attachment.html>
More information about the petsc-dev
mailing list