[petsc-dev] [petsc-users] GMRES solver

Jack Poulson jack.poulson at gmail.com
Sat Jan 7 16:29:53 CST 2012


Forgive me if switching this to petsc-dev isn't appropriate, but I thought
that I would mention that it is a (minor) possibility that this issue was
caused by an instability in the way the Givens rotations are computed in
PETSc's GMRES Hessenberg update (starting on line 390):
http://www.mcs.anl.gov/petsc/petsc-current/src/ksp/ksp/impls/gmres/gmres.c.html#KSPGMRES

Givens rotations are fairly tricky to avoid unnecessary over/underflow in,
and it makes sense to use dlartg and friends, as they implement the
algorithm described in this paper:
http://www.netlib.org/lapack/lawns/lawn148.ps

Jack

On Sat, Jan 7, 2012 at 4:14 PM, Matthew Knepley <knepley at gmail.com> wrote:

> On Sat, Jan 7, 2012 at 4:00 PM, Mohamad M. Nasr-Azadani <mmnasr at gmail.com>wrote:
>
>> Hi guys,
>>
>> I am trying to narrow down an issue with my Poisson solver.
>> I have the following problem setup
>>
>> Laplace(f) = rhs(x,z,y)
>> 0 <= x,y,z <= (Lx,Ly,Lz)
>>
>> I solve the Poisson equation in three dimensions with the analytical
>> function f(x,y,z) defined by
>>
>> f(x,z,y) = cos(2*pi*x/Lx)*cos(2*pi*y/Ly)*cos(2*pi*z/Lz) + K
>> where Lx = Ly =Lz = 1.0 and K is a constant I use to set f(Lx,Ly,Lz) =
>> 0.0.
>>
>> Second order descritization is used for the Poisson equation.
>> Also, Neumann boundary condition is used everywhere, but I set the
>> top-right-front node's value to zero to get rid of the Nullspaced matrix
>> manually.
>> I use 20 grid points in each direction.
>>
>> The problem is:
>> I use GMRES(20) without any preconditioners (rtol = 1e-12) to solve the
>> linear system.
>> It takes 77,000 iterations to converge!!!!
>>
>> For the size of only 8,000 unknowns, even though the lsys is not
>> preconditioned, I guess that is a LOT of iterations.
>> Next, I setup the exact same problem in MATLAB and use their GMRES solver
>> function.
>> I set the same parameters and MATLAB tells me that it converges using
>> only 3870 iterations.
>>
>
> 1) Matlab could be doing a lot of things. I am betting that they scale the
> problem, so -pc_type jacobi.
>
> 2) Why would anyone ever use GMRES without a preconditioner, particularly
> for a problem where several
>     optimal PCs exist and are present in PETSc.
>
>    Matt
>
>
>> I know that there might be some internal differences between MATLAB and
>> PETSc's implementations of this method, but given the fact that these two
>> solvers are not preconditioned, I am wondering about this big difference?
>>
>> Any ideas?
>>
>> Best,
>> Mohamad
>>
>>
>
>
> --
> 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-dev/attachments/20120107/3e8d73e3/attachment.html>


More information about the petsc-dev mailing list