I think I've fixed PCPre/PostSolve_Eisenstat() to work properly with kspest but seems to be with ex19 a much worse smoother than SOR (both with Cheby). I'm not sure why. With SOR we are essentially doing a few Chebyshev iterations with (U+D)^-1 (L+D)^-1 A x = b while with Eisenstat it is (L+D)^-1 A (U + D)^-1 y = (L+D)^-1 b. Well no time to think about it now.
Mark, Has anyone looked at using Cheby Eisentat smoothing as opposed to Cheby SOR smoothing? Barry On May 24, 2012, at 1:20 PM, Jed Brown wrote: > On Wed, May 23, 2012 at 2:52 PM, Jed Brown <jedbrown at mcs.anl.gov> wrote: > On Wed, May 23, 2012 at 2:26 PM, Barry Smith <bsmith at mcs.anl.gov> wrote: > > Note that you could use -pc_type eisenstat perhaps in this case instead. > Might save lots of flops? I've often wondered about doing Mark's favorite > chebyshev smoother with Eisenstat, seems like it should be a good match. > > [0]PETSC ERROR: --------------------- Error Message > ------------------------------------ > [0]PETSC ERROR: No support for this operation for this object type! > [0]PETSC ERROR: Cannot have different mat and pmat! > > Also, I'm having trouble getting Eisenstat to be more than very marginally > faster than SOR. > > > I think we should later be getting the eigenvalue estimate by applying the > preconditioned operator to a few random vectors, then orthogonalizing. The > basic algorithm is to generate a random matrix X (say 5 or 10 columns), > compute > > Y = (P^{-1} A)^q X > > where q is 1 or 2 or 3, then compute > > Q R = Y > > and compute the largest singular value of the small matrix R. The > orthogonalization can be done in one reduction and all the MatMults can be > done together. Whenever we manage to implement a MatMMult and PCMApply or > whatever (names inspired by VecMDot), this will provide a very low > communication way to get the eigenvalue estimates. > > > I want to turn off norms in Chebyshev by default (they are very wasteful), > but how should I make -mg_levels_ksp_monitor turn them back on? I'm already > tired of typing -mg_levels_ksp_norm_type unpreconditioned.