# [Trilinos-Users] Applying Anasazi::BlockKrylovSchurSolMgr

Alicia Klinvex aklinvex at purdue.edu
Fri Dec 25 22:39:26 EST 2015

Hello Joseph,

Sorry for the delay.  The problem is that Block Krylov Schur can't solve
generalized eigenvalue problems without a spectral transformation.  For
instance, instead of solving Ax=\lambda Mx, you could ask it to solve
A^{-1} M x = 1/\lambda x or M^{-1} A x = \lambda x.  We have a few examples
of how to do this on the Anasazi page.

Please try a spectral transformation and see if that resolves your issue.

Best wishes, and happy holidays!
Alicia

On Mon, Dec 14, 2015 at 7:49 AM, Rutherford, Joseph M <jmruther at illinois.edu
> wrote:

> Alicia et al,
>
>
>
> to 10x10 by increasing the dimension size in the serial Tpetra::Map
> instance I’m using for both domain and range. So now I still have a pair of
> rank 4 matrices, and the A x = \lambda B x system still should have the
> same eigenvalues and the eigenvectors should just have zero padding.
>
>
>
> The good news is that your suggestion worked very well; the system is now
> satisfied to move into the solve stage. The bad news is that the solver
> seems to be getting stuck in a loop in the first iteration.  Since I can
> SVD a dense random 100x100 system nearly instantaneously with NumPy, I
> think I must still be using BKS incorrectly if its first iteration for
> 10x10 is still underway after several minutes of full CPU usage.  Do you
> have any suggestions for how to dig further into this?  Debugging indicates
> I’m stuck in the while(doGramSchmidt){…} loop of int
> SVQBOrthoManager<ScalarType, MV, OP>::findBasis(…).  Terminal output below.
>
>
>
> Thanks again for getting me past that last hurdle.
>
>
>
> Joe
>
>
>
> <terminal>
>
> ./bin/test_eigensolver.exe > > Running 1 test case... > > Debugging checks: iteration 0: after initialize() > > >> Error in F^H M F == I : 1.11e+01 > > > > > ================================================================================ > > > > BlockKrylovSchur Solver Status > > > > The solver is initialized. > > The number of iterations performed is 0 > > The block size is 1 > > The number of blocks is 5 > > The current basis size is 0 > > The number of auxiliary vectors is 0 > > The number of operations Op*x is 0 > > > > CURRENT RITZ VALUES > > [ NONE COMPUTED ] > > > > > ================================================================================ > > > > - StatusTestOutput: Failed > > (Num calls,Mod test,State test): (1, 1, Passed Failed Undefined ) > > - StatusTestCombo: Failed > > - StatusTestWithOrdering: Undefined > > Quorum: 4 > > Auxiliary values: [empty] > > - StatusTestResNorm: Failed > > (Tolerance,WhichNorm,Scaled,Quorum): > (1.000000e-03,RITZRES_2NORM,true,4) > > Which vectors: [empty] > > </terminal> > > > > > > *From:* Alicia Klinvex [mailto:aklinvex at purdue.edu] > *Sent:* Sunday, December 13, 2015 12:33 AM > *To:* Rutherford, Joseph M <jmruther at illinois.edu> > *Cc:* trilinos-users at trilinos.org > *Subject:* Re: [Trilinos-Users] Applying Anasazi::BlockKrylovSchurSolMgr > > > > Hello Joseph, > > > > BKS tries to build a subspace of dimension block_size * num_blocks. If > the dimension of your problem n is less than that subspace dimension, it's > impossible to orthogonalize the basis vectors (since you can't generate 10 > orthogonal vectors within a subspace of dimension 4). Perhaps we should > modify the error message to make this clearer. > > > > Can you try a slightly larger example, perhaps 10x10, with block_size 1 > and num_blocks < 10? > > > > Best wishes, > > Alicia > > > > On Sat, Dec 12, 2015 at 1:57 PM, Rutherford, Joseph M < > jmruther at illinois.edu> wrote: > > I’m having some difficulty using Anasazi to compute the smallest > eigenvalues of a (non-Hermitian) complex-valued linear system. Before > addressing a general case, I have written a simple test using two > Tpetra::CrsMatrix<std::complex<float>,int,int> instances with reference > data – this is a very small 4x4 dense case with reference data available. > (I can share the example code if needed.) > > > > Unfortunately, I am having a hard time getting the SolMgr to drive the > solution. As I’m solving a reference 4x4 system with 4 nondegenerate > eigenvalues, I’m fairly confident I don’t have a pathological case, > although it is much smaller than the usual Anasazi use case. Could you > please look at the error message reported to my console (below)? I’ve not > found a clearly-aligned example in the Anasazi distribution, so I’m hopeful > this is just a trivial case that is easily fixed. > > > > Sincerely yours, > > > > Joe Rutherford > > > > <console> > > ./bin/test_eigensolver.exe
>
> Running 1 test case...
>
> unknown location(0): fatal error: in "eigensolver_dense_4x4_complex":
> std::invalid_argument:
> /home/jmruther/branches/bean/externals/trilinos/include/AnasaziBlockKrylovSchurSolMgr.hpp:344:
>
>
>
> Throw number = 2
>
>
>
> Throw test that evaluated to true:
> static_cast<ptrdiff_t>(_numBlocks)*_blockSize >
> MVT::GetGlobalLength(*_problem->getInitVec())
>
>
>
> Anasazi::BlockKrylovSchurSolMgr: Potentially impossible orthogonality
> requests. Reduce basis size.
>
> /home/jmruther/branches/bean/source/tests/eigensolver.cpp(57): last
> checkpoint: "eigensolver_dense_4x4_complex" entry.
>
>
>
> *** 1 failure is detected in the test module "Eigensolver"
>
> \$
>
> </console>
>
>
>
>
>
>
> _______________________________________________
> Trilinos-Users mailing list
> Trilinos-Users at trilinos.org
> https://trilinos.org/mailman/listinfo/trilinos-users
> <https://urldefense.proofpoint.com/v2/url?u=https-3A__trilinos.org_mailman_listinfo_trilinos-2Dusers&d=BQMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=Ng9lEtA9hn_MbIhqAtV5991RoWo8JGET5un-J3-Ub7o&m=a92OB0Je5c97qWnvqkK3eKwfHg65YXj6gsz4PO4b8P0&s=-Aqn6cS4l23CGmblqMY86E-cVM9F7hK4MpfCFtvnIkA&e=>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://trilinos.org/pipermail/trilinos-users/attachments/20151225/52a7acc0/attachment.html>