ell1 norm convergence test
Barry Smith
bsmith at mcs.anl.gov
Mon Sep 21 14:29:54 CDT 2009
Likely it is too expensive to use the 1-norm for stopping criteria
for fgmres unless you can reformulate fgmres to give you back the
residual efficiently.
Barry
On Sep 21, 2009, at 2:04 PM, Ryan Yan wrote:
> Hi Barry,
> Thanks for the suggestion.
>
> I am using FGMRES as the krylov solver. Is there a direct access to
> the residual vector for FGMRES. I guess the answer is yes, since
> that's the Krylov method which supports right preconditioning and
> provides the true residual 2_Norm monitor, right?
>
> If so, which header should I include to fetch the residual directly
> from KSP_FGMRES?
>
> Yan
>
>
>
> On Mon, Sep 21, 2009 at 2:43 PM, Barry Smith <bsmith at mcs.anl.gov>
> wrote:
>
> Yan,
>
> This depends on the Krylov method being used. For example with
> GMRES the residual vector is NOT available at each iteration (the 2-
> norm of the residual is approximated via a recurrence relationship).
>
> You can call KSPBuildResidual() to have the true residual
> computed for you. Note: it is expensive because it actually builds
> the current solution and computes r = b - A*x
>
> What we intended is that if you want the residual efficiently for
> example for the CG method, you determine what Krylov method you want
> to use the include the appropriate private include file and access
> the residual directly from the data structure. This would be
> efficient. (but like I said does not work for all methods). For cg
> include src/ksp/ksp/impls/cg/cgctx.h
>
>
> Barry
>
>
> On Sep 21, 2009, at 12:44 PM, Ryan Yan wrote:
>
> Hi All,
> The following question is only for test and comparison reason.
>
> Is there a command line option to set up using 1-Norm(sum of
> absolute value of residuals) as convergence monitor and test.
>
> Alternatively, if I can get the residual "r" out at the end of each
> iteration, then it is going to be much simpler, since I can just
> call VecNorm(r, NORM_1, &r_ell1) and pass the r_ell1 into the
> convergence monitor and test. Can anyone inform me if PETSc has an
> interface for the resuidual r?
>
> Or one has to call the convergence test:
> MyKSPConverged(ksp,n,rnorm,flag,dummy);
> and following the steps:
> 1. fetch the exact solution:
>
> KSPBuildSolution(ksp,PETSC_NULL_OBJECT,x,ierr)
>
> 2. calculate the residual:
>
> pass the Right Hand side and the Matrix in to calculate the 1-Norm.
> But this step is *not* obvious, since the matrix and rhs is already
> distributed over each processes.
>
> 3. set up the convergence test based on the 1_Norm residual.
>
>
> Thank you very much,
>
>
> Yan
>
>
More information about the petsc-users
mailing list