[petsc-dev] KSPMonitor and petsc4py

Smith, Barry F. bsmith at mcs.anl.gov
Mon Mar 4 20:22:38 CST 2019


   Lisandro,

    Why don't you go ahead and "fix it" in petsc4y and we'll worry about unifying the construct at some future date.

   Barry


> On Mar 4, 2019, at 12:01 AM, Lisandro Dalcin <dalcinl at gmail.com> wrote:
> 
> Well, this is just because the Python code implementing KSPSolve does not reset the iteration counter to zero. This was an oversight on my part when I wrote that code ages ago.
> 
> Barry, I'm wondering whether this should be done at the interface rather than implementation level? If you do not want to change things in core KSP (and then maybe SNES, etc), the the following patch should fix things. 
> 
> 
> diff --git a/src/ksp/ksp/examples/tutorials/example100.py b/src/ksp/ksp/examples/tutorials/example100.py
> index ef085522bf..7ad03ec194 100644
> --- a/src/ksp/ksp/examples/tutorials/example100.py
> +++ b/src/ksp/ksp/examples/tutorials/example100.py
> @@ -119,11 +119,13 @@ class ConjGrad(object):
>  
>      def solve(self, ksp, b, x):
>          LOG('ConjGrad.solve()')
> +        ksp.setIterationNumber(0)
>          A, P = get_op_pc(ksp, transpose=False)
>          pcg(ksp, A, P, b, x, *self.work)
>  
>      def solveTranspose(self, ksp, b, x):
>          LOG('ConjGrad.solveTranspose()')
> +        ksp.setIterationNumber(0)
>          A, P = get_op_pc(ksp, transpose=True)
>          pcg(ksp, A, P, b, x, *self.work)
> 
> 
> On Mon, 4 Mar 2019 at 06:15, Smith, Barry F. <bsmith at mcs.anl.gov> wrote:
> 
>    Pierre,
> 
>      I can confirm the problem.
> 
>    Lisandro,
> 
>      Could you please take a look at this? I have no explanation for why this would happen.
> 
>    Barry
> 
> 
> 
> > On Feb 25, 2019, at 1:21 PM, Pierre Jolivet via petsc-dev <petsc-dev at mcs.anl.gov> wrote:
> > 
> > I’m not sure this is the expected behavior. Is it?
> > $ git diff ex100.py
> > diff --git a/src/ksp/ksp/examples/tutorials/ex100.py b/src/ksp/ksp/examples/tutorials/ex100.py
> > index dbb3f8e012..051637ce1d 100644
> > --- a/src/ksp/ksp/examples/tutorials/ex100.py
> > +++ b/src/ksp/ksp/examples/tutorials/ex100.py
> > @@ -29,6 +29,7 @@ def RunTest():
> >     ksp.setOperators(A, A)
> >     ksp.setFromOptions()
> >     ksp.solve(b, x)
> > +    ksp.solve(b, x)
> > 
> >     r = b.duplicate()
> >     A.mult(x, r)
> > 
> > $ mpirun -np 8 python ./ex100.py -ksp_converged_reason -ksp_monitor
> >  0 KSP Residual norm 5.101520253035e-04
> >  1 KSP Residual norm 1.168905135944e-03
> > [..]
> > 12 KSP Residual norm 5.101520253035e-05
> > 13 KSP Residual norm 7.504522604366e-20
> > Linear solve converged due to CONVERGED_RTOL iterations 13
> > 13 KSP Residual norm 5.101520253035e-04
> > 14 KSP Residual norm 1.168905135944e-03
> > [..]
> > 25 KSP Residual norm 5.101520253035e-05
> > 26 KSP Residual norm 7.504522604366e-20
> > Linear solve converged due to CONVERGED_RTOL iterations 26
> > 
> > Shouldn’t the iterate number be reset to 0 for the 2nd KSPSolve?
> > 
> > Thanks,
> > Pierre
> 
> 
> 
> -- 
> Lisandro Dalcin
> ============
> Research Scientist
> Computer, Electrical and Mathematical Sciences & Engineering (CEMSE)
> Extreme Computing Research Center (ECRC)
> King Abdullah University of Science and Technology (KAUST)
> http://ecrc.kaust.edu.sa/
> 
> 4700 King Abdullah University of Science and Technology
> al-Khawarizmi Bldg (Bldg 1), Office # 0109
> Thuwal 23955-6900, Kingdom of Saudi Arabia
> http://www.kaust.edu.sa
> 
> Office Phone: +966 12 808-0459



More information about the petsc-dev mailing list