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>
