[Trilinos-Users] [EXTERNAL] Why does Anasazi bail out early?

Nico Schlömer nico.schloemer at gmail.com
Tue Aug 21 10:39:57 MDT 2012


Thanks for the suggestions!
I'm running some tests at this moment and indeed the eigenvalues are
now computed with better precision.
As a sidenote, what would have helped me approaching the problem by
myself is output of the sort "maximum number of restarts reached;
terminating.".

Cheers,
Nico



On Tue, Aug 21, 2012 at 5:47 PM, Thornquist, Heidi K <hkthorn at sandia.gov> wrote:
> Hi Nico,
>
> According to the solver parameters you've sent, it doesn't look like Anasazi bailed out early, it can't compute
> the requested eigenvalues to the desired precision with the given parameters.  Chris suggested increasing the number of restarts (the default is 20), which may help.  However, looking at your input you are asking block Krylov-Schur (BKS) to find 10 eigenvalues in a subspace of 20 ("Num Blocks" x "Block Size").  If you have the memory, I would suggest increasing the subspace to at least 3x the number of eigenvalues you are requesting.  To make sense of the output you are seeing from the eigensolver, every restart the subspace for generating Ritz vectors for all the eigenvalues you have requested needs to be retained.  Thus, if you are requesting 10 eigenpairs and are allowing the solver a subspace of 20, then only 10 new vectors are being created each restart.  This will cap the maximum number of operator applications to what you are seeing in your output.
>
> Like an iterative linear solver, an iterative eigensolver must be limited in iterations and/or restarts, and it's effectiveness can be limited by the size of the subspace generated.  I would suggested first increasing the number of blocks, then the restarts and you should start to see eigenpairs that meet the convergence tolerance you are requesting.
>
> Thanks,
> Heidi
>
>
> ________________________________________
> From: Nico Schlömer [nico.schloemer at gmail.com]
> Sent: Monday, August 20, 2012 5:41 PM
> To: Thornquist, Heidi K
> Cc: trilinos-users at software.sandia.gov
> Subject: Re: [EXTERNAL] [Trilinos-Users] Why does Anasazi bail out early?
>
> Yep, I'll definitely look at operator transformations, but first I
> wanted to make that the code works as it is. My main problem right now
> is the fact that I can deduct little to nothing about what went wrong
> from the bare logs.
> The parameters I used are
>
> MyProblem->setHermitian(true);
> MyProblem->setNEV(10);
>
> MyPL.set("Which", "LM");
> MyPL.set("Block Size", 2);
> MyPL.set("Num Blocks", 10);
> MyPL.set("Convergence Tolerance", 1.0e-5);
>
> The log file is attached.
>
> --Nico
>
>
>
> On Tue, Aug 21, 2012 at 1:14 AM, Thornquist, Heidi K <hkthorn at sandia.gov> wrote:
>> Hi Nico,
>>
>> What are the parameters that you are passing block Krylov-Schur?
>>
>> This type of solver will have a hard time computing the smallest magnitude eigenvalues without a spectral transformation, like shift-invert or Cayley.  It looks like you are using one since the Ritz values are being printed out with the largest magnitude first, so what are you using and what is the shift?  It looks like you set the eigenproblem as Hermitian (since the output is not printing out any imaginary part of the eigenvalue).  You might consider using block Davidson or LOBPCG for your problem instead since they can more easily find the smallest eigenvalues.
>>
>> If you want to send me a log of the output you receive using all those verbosity flags, that would also help.
>>
>> Thanks,
>> Heidi
>>
>>
>> ________________________________________
>> From: trilinos-users-bounces at software.sandia.gov [trilinos-users-bounces at software.sandia.gov] on behalf of Nico Schlömer [nico.schloemer at gmail.com]
>> Sent: Monday, August 20, 2012 5:02 PM
>> To: trilinos-users at software.sandia.gov
>> Subject: [EXTERNAL] [Trilinos-Users] Why does Anasazi bail out early?
>>
>> Hi,
>>
>> I'm trying to use Anasazi for computing a bunch of SM eigenvalues, and
>> while things compile and run fine, the iterations always aborts
>> prematurely without indicating what went wrong. If the tolerance is,
>> say, 1.0e-15, a typical last block of output (with verbosity
>> Anasazi::IterationDetails + Anasazi::Errors + Anasazi::Warnings +
>> Anasazi::StatusTestDetails + Anasazi::Debug + Anasazi::FinalSummary)
>> would be
>>
>> =========================== *snip* ===========================
>>
>>                          BlockKrylovSchur Solver Status
>>
>> The solver is initialized.
>> The number of iterations performed is 110
>> The block size is         2
>> The number of blocks is   10
>> The current basis size is 20
>> The number of auxiliary vectors is 0
>> The number of operations Op*x   is 220
>>
>> CURRENT RITZ VALUES
>>           Ritz Value       Ritz Residual
>> --------------------------------------------------------------------------------
>>         8.075243e+00        5.120182e-04
>>         8.063177e+00        4.056698e-04
>>         8.063150e+00        3.596635e-03
>>         8.050790e+00        1.081923e-02
>>         8.042772e+00        9.878716e-03
>>         8.027045e+00        4.533151e-02
>>         8.015636e+00        4.997743e-02
>>         8.014430e+00        1.482199e-02
>>         7.983605e+00        6.111459e-02
>>         7.963543e+00        5.082745e-02
>>
>> Returning 0 eigenpairs to eigenproblem.
>> =========================== *snap* ===========================
>>
>> Note how the tolerance isn't met.
>> How can I find out what's going on?
>>
>> Cheers,
>> Nico
>>
>> _______________________________________________
>> 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