Matt, thanks for letting me be aware of this. Yan
On Mon, Sep 21, 2009 at 3:33 PM, Matthew Knepley <knepley at gmail.com> wrote: > On Mon, Sep 21, 2009 at 2:29 PM, Barry Smith <bsmith at mcs.anl.gov> wrote: > >> >> 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. >> > > I have been told that QMR has a natural 1-norm formulation, but I have > never seen it. > > Matt > > >> 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 >>> >>> >>> >> > > > -- > What most experimenters take for granted before they begin their > experiments is infinitely more interesting than any results to which their > experiments lead. > -- Norbert Wiener > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20090921/044cf246/attachment.htm>
