Maintaining accuracy while increasing number of processors
Barry Smith
bsmith at mcs.anl.gov
Sat Dec 29 19:00:56 CST 2007
Billy,
By default GMRES and most of the other KSP solvers stop after a
reduction
in the 2-norm of the PRECONDITIONED residual by a factor of 10^-5. See
the manual
page for KSPDefaultConverged() http://www-unix.mcs.anl.gov/petsc/petsc-as/snapshots/petsc-current/docs/manualpages/KSP/KSPDefaultConverged.html
There are a couple of things to consider:
1) even with the exact same preconditioner (for example Jacobi) the
convergence history
will be slightly different since the computations are done in a
different order and so the floating
point results will be slightly different. The converged SOLUTIONS for
a different number of
processes are ALL correct, even though they have different values
since the calculations
are done in floating point. As you decrease the tolerance factors you
will see the SOLUTIONS
for different number of processes all converge to the same answer
(i.e. the solutions will
share more and more significant digits.)
2) Most parallel preconditioners (even in exact precision) are
different for a different number of
processes, for example block Jacobi and the additive Schwarz method.
So you get all the
issues of 1) plus the fact that the convergence histories with
different number of processes
will be different. Again IF the solver is converging than the answers
from any number of
processes are equally correct. Also as you decrease the convergence
tolerances you will
see more and more common significant digits in the different
solutions. Sometimes
with a larger number of processes the preconditioner may stop working
and you do not
get convergence of GMRES and then, of course, the "answer" is garbage.
You should always
call KSPGetConvergedReason() to make sure the solver has converged.
Barry
On Dec 29, 2007, at 5:56 PM, Billy Araújo wrote:
>
> Hi,
>
> I need to know more about the PETSc parallel GMRES solver. Does the
> solver maintain the same accuracy independent of the number of
> processors. For example, if I subdivide a mesh with 1000 unkowns
> into 10, 100, 1000 processors should I expect to get always the same
> result? If no, why not? Are there any studies on this?
>
> Thank you,
>
> Billy.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20071229/a70f7012/attachment.htm>
More information about the petsc-users
mailing list