[petsc-dev] KSPMonitor and petsc4py

Lisandro Dalcin dalcinl at gmail.com
Mon Mar 4 00:07:57 CST 2019


I pushed the fix to branch dalcinl/fix-ksp-ex100

On Mon, 4 Mar 2019 at 09:01, 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
>


-- 
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20190304/086ece4f/attachment-0001.html>


More information about the petsc-dev mailing list