[Trilinos-Users] AztecOO Convergence
Mike Heroux
maherou at sandia.gov
Mon Nov 21 13:54:55 MST 2005
Ammar,
No they will not be 100% identical, but they should be very close for all
but the most pathological matrices.
One note: You can use the matrix output functions found in EpetraExt to
help determine if your matrices are the same. Look at
Trilinos/packages/epetraext/test/inout/cxx_main.cpp for an example of how to
use these functions.
Mike
> -----Original Message-----
> From: trilinos-users-bounces at software.sandia.gov
> [mailto:trilinos-users-bounces at software.sandia.gov] On Behalf
> Of Ammar T. Al-Sayegh
> Sent: Monday, November 21, 2005 2:51 PM
> To: trilinos-users at software.sandia.gov
> Subject: Re: [Trilinos-Users] AztecOO Convergence
>
> Mike,
>
> Just to cofirm, if A and b of an Epetra_LinearProblem being
> solved in a single processor are exactly the same as A and b
> of an Epetra_LinearProblem being solved in two processors,
> then the solution, x, should be 100% identical in both cases
> when AZ_precond is set to AZ_none. Is this correct?
>
> I will try to trace my A and b before each run of
> solver.iterate() in the single- and dual-processor cases and
> check whether there is a variation in A and b between the two
> cases to track any coding error.
>
>
> -ammar
>
>
> ----- Original Message -----
> From: "Mike Heroux" <maherou at sandia.gov>
> To: "'Ammar T. Al-Sayegh'" <alsayegh at purdue.edu>;
> <trilinos-users at software.sandia.gov>
> Sent: Monday, November 21, 2005 3:21 PM
> Subject: RE: [Trilinos-Users] AztecOO Convergence
>
>
> > Ammar,
> >
> > Note that, if your matrix is singular, then there are two basic
> > possibilities:
> >
> > 1) Your right-hand-side b is in the range of the operator
> A. In other
> > words, there is an x such that A*x = b. Furthermore, there
> are many vectors
> > that are solutions, since any vector y from the null space
> of A can be added
> > to x and A(x+y) = b. If you are getting two solutions to
> your problem in
> > this case, say x1 and x2, and both have a small residual
> (norm(b-A*x1) and
> > norm(b-A*x2) are both small) then you might check the norm
> of A*(x1-x2). If
> > this value is small, then x1 and x2 are two particular
> solutions to the
> > singular problem and x1-x2 is a vector in the null space of A.
> >
> > 2) Your right-hand-side b is not in the range of A. Then
> there is NO x such
> > that A*x = b. This second case can happen in a partial way
> due to floating
> > point arithmetic errors. In these cases, b may be
> analytically in the range
> > but numerically slightly out of the range. This might
> explain why you
> > cannot get your error below a certain tolerance.
> >
> >
> > If you are using unpreconditioned GMRES, there is little
> chance that you are
> > getting two wildly different particular solutions, so if
> you are seeing very
> > different results on 1 and 2 processors, it suggests a
> coding error (at
> > least to me).
> >
> >
> > Mike
> >
> >> -----Original Message-----
> >> From: trilinos-users-bounces at software.sandia.gov
> >> [mailto:trilinos-users-bounces at software.sandia.gov] On Behalf
> >> Of Ammar T. Al-Sayegh
> >> Sent: Monday, November 21, 2005 1:59 PM
> >> To: trilinos-users at software.sandia.gov
> >> Subject: Re: [Trilinos-Users] AztecOO Convergence
> >>
> >> Randal,
> >>
> >> Thank you for the elaborate explanation. Your reasoning makes
> >> sense, and I tried to follow your advice and disable the
> >> preconditioner. However, I got hit by another issue. Now it
> >> says that my GMRES Hessenberg matrix is ill-conditioned,
> >> which perhaps is right because I'm dealing with nonlinear
> >> analysis of a structure that's reaching instability, i.e.
> >> having it's stiffness matrix getting close to being singular.
> >> The thing that I can't make sense of, though, is that why it
> >> works fine just fine with a single processor but not with two
> >> processors even when preconditioner is disabled?
> >>
> >> I don't mind the additional time cost if there is a way to
> >> get the same level of numerical accuracy of when using
> >> multiple processors as in the case with a single processor.
> >>
> >>
> >> -ammar
> >>
> >>
> >> ----- Original Message -----
> >> From: "Randall Bramley" <bramley at cs.indiana.edu>
> >> To: "Ammar T. Al-Sayegh" <alsayegh at purdue.edu>
> >> Cc: <trilinos-users at software.sandia.gov>
> >> Sent: Monday, November 21, 2005 11:01 AM
> >> Subject: Re: [Trilinos-Users] AztecOO Convergence
> >>
> >>
> >> >
> >> >> In AztecOO, why does convergence deteriorate as the number
> >> >> of processors is increased?
> >> >
> >> > At last, a question I can answer. :-)
> >> >
> >> > The preprocessing is usually block diagonal, and as the number of
> >> > processors increases, the blocks become smaller - in the
> limit, the
> >> > preconditioner becomes diagonal scaling. Fewer
> processors leads to
> >> > the block becoming larger, in the limit becoming an incomplete
> >> > factorization on the whole matrix. This is generally a more
> >> > accurate preconditioner since it brings in more
> >> off-diagonal elements
> >> > and hence accounts for longer-range interactions in the
> >> linear system.
> >> >
> >> > So it's normal to have the quality of preconditioning lower
> >> (and hence
> >> > number of iterations higher) when the number of processors
> >> increases.
> >> >
> >> >> Is there any options one can use to eliminate this problem?
> >> >>
> >> >> Are there any particular solvers which will yield same
> >> >> convergence regardless of the number of processors?
> >> >
> >> > Yes, but they are not good ones to choose: use no
> preconditioning or
> >> > just diagonal scaling. But you're likely to find the wall clock
> >> > time increases over letting the number of iterations increase.
> >> >
> >> > -Randall Bramley
> >> >
> >>
> >> _______________________________________________
> >> Trilinos-Users mailing list
> >> Trilinos-Users at software.sandia.gov
> >> http://software.sandia.gov/mailman/listinfo/trilinos-users
> >>
> >
> >
> >
>
> _______________________________________________
> Trilinos-Users mailing list
> Trilinos-Users at software.sandia.gov
> http://software.sandia.gov/mailman/listinfo/trilinos-users
>
More information about the Trilinos-Users
mailing list