some sor questions
Barry Smith
bsmith at mcs.anl.gov
Tue Sep 22 13:38:34 CDT 2009
On Sep 22, 2009, at 8:47 AM, Stephan Kramer wrote:
> Hi all,
>
> I have some questions basically about the MatRelax_SeqAIJ routine:
>
> If I understand correctly there are 2 versions of the sor routine
> depending on whether or not there is a zero guess, so that with a
> zero guess in the forward sweep you don't need to multiply the upper
> diagonal part U with the part of the x vector that is still zero.
> Why then does it look like that both versions log the same number of
> flops? I would have expected that the full forward sweep (i.e. no
> zero guess) takes 2*a->nz flops (i.e. the same as a matvec) and not
> a->nz.
You are right. This is an error in our code. It will be in the
next patch.
>
> Why does the Richardson iteration with sor not take the zero guess
> into account, i.e. why does PCApplyRichardson_SOR not set
> SOR_ZERO_INIT_GUESS in the call to MatRelax if the Richardson ksp
> has a zero initial guess set?
This appears to be a design limitation. There is no mechanism to
pass the information that the initial guess is zero into
PCApplyRichardson(). We could add support for this by adding one more
argument to PCApplyRichardson() for this information. I don't see a
simpler way. If one is running, say 2 iterations of Richardson then
this would be a measurable improvement in time. If one is running many
iterations then the savings is tiny. Perhaps this support should be
added.
>
> In parallel if you specify SOR_LOCAL_FORWARD_SWEEP or
> SOR_LOCAL_BACKWARD_SWEEP it
> calls MatRelax on the local part of the matrix, mat->A, with
> its=lits and lits=PETSC_NULL (?).
> However the first line of MatRelax_SeqAIJ then says: its = its*lits.
> Is that right?
This is all wrong. It should be passing 1 in, not PETSC_NULL. This
was fixed in petsc-dev but not in petsc-3.0.0 I will fix it in
petsc-3.0.0 and it will be in the next patch.
Thanks for pointing out the problems.
If you plan to use SOR a lot, you might consider switching to
petsc-dev since I have made some improvements there. Also consider the
Eisenstat trick preconditioner.
Barry
>
> Please tell me if I'm totally misunderstanding how the routine
> works, thanks for any help.
>
> Cheers
> Stephan
>
> --
> Stephan Kramer <s.kramer at imperial.ac.uk>
> Applied Modelling and Computation Group,
> Department of Earth Science and Engineering,
> Imperial College London
More information about the petsc-dev
mailing list