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