[Trilinos-Users] ML trouble

Ray Tuminaro rstumin at sandia.gov
Thu Mar 30 09:38:10 MST 2006


Gunnar,
    ML does not abort the V cycle if the residual appears to be small ...
so this can not be an explanation for your problems. I have a few
questions because I am not completely sure what you are doing.

1) If I understand things, you create an ML preconditioner for A and
    then you use it twice within the ABBA method. Is this correct?
2) The problem for which you show data is actually symmetric (2D Poisson).
    Is this correct? There are some issues about using ML for nonsymmetric
    problems that are not completely obvious in the documentation.
3) The condition numbers that you report are very small. I assume that
    both ABBA and PCG converge very quickly. How many iterations do they
    each take? We sometimes find some small growth in iterations when
    using ML on finer and finer problems. Some of this can be reduced
    by messing around with aggregation parameters. Typically, this growth
    might mean that iterations may grow from 9 to 11 as the problem is
    refined by one or two orders of magnitude.
4) Could you attach ML's output (using some verbose setting)? I am happy
    to take a look at it.

-Ray


Gunnar Andreas Staff wrote:
> I'm using ML as the preconditioner for a conjugated gradient method for
> the normal equation
> 
> (BA)^TBAx=(BA^T)Bb  (named CGN_ABBA)
> 
> where B is the ML inversion og A,
> 
> , and comparing it to a standard preconditioned conjugated gradient
> method
> 
> BAx=Bb
> 
> The condition number can be estimated by the tridiagonal Lanczos matrix
> generated from the alpha and betas from the solver.
> 
> cond(PCG)=sqrt(cond(CGN_ABBA))
> 
> 
> The PCG shows nice orderoptimal behaviour, but the CGN_ABBA does not.
> This is the results from a 2D Poisson problem with increasing
> discretization with ML_Gen_Smoother_SymGaussSeidel as smoother:
> 
> -----------------------------------------------------------------------
> cond(CGN_ABBA)  cond(PCG)      number of unknown per spatial direction
> -----------------------------------------------------------------------
> 1.00863409929  1.00839966934    4
> 1.10925531418  1.08941592664    8
> 1.33217179553  1.17631779641   16
> 1.70224315533  1.31764728899   32
> 2.70656407897  1.33522472598   64
> 
> 
> The condition number for CGN_ABBA increases exponentially for increasing
> spatial discretization. The same thing happens for the Jacobi smoother.
> 
> For the CGN_ABBA, the precontitioner is applied twice per iteration. The
> question is:
> 
> Do ML check the residual during a V-cycle, and abort the full cycle if
> the residual is very  small?
> 
> This is the only mathematically explanation I can think of, that can
> explain this -- this means that B^TB will not be symmetric positive
> definite, since the B^T does not go through the same V cycle as B does.
> 
> Any suggestion is welcome.
> 
> I use the following ML settings:
> 
> ML_Set_PrintLevel(20);
> ML_Create(&ml, 20);
> ML_Init_Amatrix       (ml, 0, n, n, (void *)csr_data);
> ML_Set_Amatrix_Getrow (ml, 0, CSR_getrow, NULL, n);
> ML_Set_Amatrix_Matvec (ml, 0, CSR_matvec);
> A->computeDiag();
> ML_Set_Amatrix_Diag   (ml, 0, n, A->diagonal);
> ML_Aggregate_Create(&agg_object);
> ML_Aggregate_Set_MaxCoarseSize(agg_object, 10);
> N_levels = ML_Gen_MGHierarchy_UsingAggregation(ml, 0,
> ML_INCREASING,agg_object);
> ML_Gen_Smoother_SymGaussSeidel(ml, ML_ALL_LEVELS, ML_BOTH, 1, 1.0);
> ML_Gen_Solver    (ml, ML_MGV, 0, N_levels-1);
>  
> 
> best regards
> 
> Gunnar Staff
> 

-- 
Ray Tuminaro                      phone: (925) 294-2564
MS 9159                           fax:   (925) 294-2234
Sandia National Laboratories      email: tuminaro at ca.sandia.gov
PO Box 969                        http://www.cs.sandia.gov/~tuminaro
Livermore, CA 94551





More information about the Trilinos-Users mailing list