[Trilinos-Users] [EXTERNAL] Anasazi BlockKrylovSchur solver Error in F^H M F == I
Andris Freimanis
andris.freimanis_1 at rtu.lv
Fri Sep 15 04:12:51 EDT 2017
Dear, Heidi, Alicia,
yes, eigs in scipy uses direct LU solver. I tried Amesos KLU from that
example, fortunately solver converged and the results were the same as
from scipy's eigs. However, I should have mentioned it earlier, this
240x240 system is only a test case. The size of matrices will
be 10e6x10e6 and larger, so I'll need an iterative solver.
I changed linear solver's tolerance from 1e-3 to 1e-300. Belos shows
that it converged, however, there's also a message about a loss of accuracy.
Belos::StatusTestGeneralOutput: Passed
(Num calls,Mod test,State test): (197, 1, Passed)
Passed.......OR Combination ->
OK...........Number of Iterations = 196 < 1000
Converged....(2-Norm Res Vec) / (2-Norm Prec Res0)
residual [ 0 ] = 2.94889e-301 < 1e-300
Belos::BlockGmresSolMgr::solve(): Warning! Solver has experienced a loss
of accuracy!
Anasazi::BlockKrylovSchurSolMgr::solve() caught unexpected exception
from Anasazi::BlockKrylovSchur::iterate() at iteration 1
/usr/local/trilinosDebug/include/AnasaziEpetraAdapter.hpp:1401:
Throw number = 1
Throw test that evaluated to true: ret != 0
Anasazi::OperatorTraits<double,Epetra_Multivector,Epetra_Operator>::Apply():
Error in Epetra_Operator::Apply(). Code -1
Anasazi::BlockKrylovSchurSolMgr::solve() returning Unconverged with no
solutions.
Best regards,
Andris
On 2017.09.14. 18:15, Thornquist, Heidi K wrote:
> Hi Andris,
>
> If the eigs in scipy is like the one in Matlab, the shift-invert
> transformation is solved using a direct solver and not an iterative
> solver. Like Alicia mentioned, this can affect convergence. Given
> the size of the system, it would be better suited for using Amesos as
> the linear solver. There is an example in Anasazi that shows how to
> do this:
>
> Trilinos/packages/anasazi/epetra/example/BlockKrylovSchur/BlockKrylovSchurEpetraExGenAmesos.cpp
>
>
> Thanks,
> Heidi
>
> --
>
> Heidi K. Thornquist
> Electrical Models & Simulation
> Sandia National Laboratories
> Albuquerque, NM 87185-1323
>
>
> From: Trilinos-Users <trilinos-users-bounces at trilinos.org
> <mailto:trilinos-users-bounces at trilinos.org>> on behalf of "Klinvex,
> Alicia Marie" <amklinv at sandia.gov <mailto:amklinv at sandia.gov>>
> Date: Thursday, September 14, 2017 at 8:31 AM
> To: Andris Freimanis <andris.freimanis_1 at rtu.lv
> <mailto:andris.freimanis_1 at rtu.lv>>
> Cc: Trilinos mailing list <trilinos-users at trilinos.org
> <mailto:trilinos-users at trilinos.org>>
> Subject: Re: [Trilinos-Users] [EXTERNAL] Anasazi BlockKrylovSchur
> solver Error in F^H M F == I
>
> Hello Andris,
>
> Your linear solver is converging; the eigensolver is not. You said
> this problem was being solved correctly by scipi. It’s possible that
> the eigensolver is failing to converge because your linear systems are
> not being solved accurately enough. (Block Krylov Schur is sensitive
> to that.) Do you know how scipi is solving the linear systems?
>
> Best wishes,
>
> Alicia
>
> *From:*Andris Freimanis [mailto:andris.freimanis_1 at rtu.lv]
> *Sent:* Thursday, September 14, 2017 9:20 AM
> *To:* Klinvex, Alicia Marie <amklinv at sandia.gov
> <mailto:amklinv at sandia.gov>>
> *Subject:* Re: [EXTERNAL] [Trilinos-Users] Anasazi BlockKrylovSchur
> solver Error in F^H M F == I
>
> Dear, Alicia,
>
> I increased the number of blocks to 48 and to 239 (matrix size - 1),
> sadly solver still didn't converge. It's interesting that residual is
> less than the tolerance, but it shows no convergence.
>
> ================================================================================
>
> - StatusTestOutput: Failed
> (Num calls,Mod test,State test): (1, 1, Passed Failed Undefined )
> - StatusTestCombo: Failed
> - StatusTestWithOrdering: Undefined
> Quorum: 1
> Auxiliary values: [empty]
> - StatusTestResNorm: Failed
> (Tolerance,WhichNorm,Scaled,Quorum):
> (1.000000e-03,RITZRES_2NORM,true,1)
> Which vectors: [empty]
>
> *******************************************************
> ***** Belos Iterative Solver: Block Gmres
> ***** Maximum Iterations: 1000
> ***** Block Size: 1
> ***** Residual Test:
> ***** Test 1 : Belos::StatusTestImpResNorm<>: (2-Norm Res Vec) /
> (2-Norm Prec Res0), tol = 0.001
> *******************************************************
> Iter 82, [ 1] : 7.842584e-04
> Belos::BlockGmresSolMgr::solve(): Warning! Solver has experienced a
> loss of accuracy!
> Passed.......OR Combination ->
> OK...........Number of Iterations = 82 < 1000
> Converged....(2-Norm Res Vec) / (2-Norm Prec Res0)
> residual [ 0 ] = 7.842584e-04 < 1.000000e-03
>
> ================================================================================
>
> On 2017.09.14. 16:09, Klinvex, Alicia Marie wrote:
>
> Hello Andris,
>
> Can you try increasing your number of blocks? You allowed GMRES
> to store a subspace of size 24, and you allowed it 10 restarts,
> which is why it did not attempt 1000 iterations.
>
> Best wishes,
> Alicia
>
> *From:*Andris Freimanis [mailto:andris.freimanis_1 at rtu.lv]
> *Sent:* Thursday, September 14, 2017 9:03 AM
> *To:* Klinvex, Alicia Marie <amklinv at sandia.gov>
> <mailto:amklinv at sandia.gov>; Trilinos mailing list
> <trilinos-users at trilinos.org> <mailto:trilinos-users at trilinos.org>
> *Subject:* RE: [EXTERNAL] [Trilinos-Users] Anasazi
> BlockKrylovSchur solver Error in F^H M F == I
>
> Dear, Alicia,
>
> thank you for your response.
>
> M is a part of a generalized eigenvalue problem A*x = lambda*M*x.
> Since A is real non-hermitian I'm using Block Krylov Schur
> eigensolver with shift-invert transformation as shown in
> BlockKrylovSchurEpetraExGenBelos.cpp example. And block GMRES
> linear solver with ILU preconditioner for the inverted part.
>
> Linear solver parameters are:
> Block size 1
> Number of blocks 24
> Max iterations 1000 (if I understand the output correctly, only
> 264 were used)
> Max restarts 10
> Tolerance 1e-3
> ILU preconditioner parameters were:
> Drop tolerance 1e-9
> Level-of-fill 1
> Schwartz: combine mode "Add"
>
> Scipy's eigs function, which uses Arpack, solved this problem
> easily. So most likely I have made some mistake with Trilinos solvers.
>
> Best regards,
>
> Andris
>
> On 2017.09.14. 15:06, Klinvex, Alicia Marie wrote:
>
> Hello Andris,
>
> I’m sorry to hear you’re having trouble with Anasazi. The
> “error” you’re getting isn’t an error in the programming
> sense. It’s an error in the mathematical sense. You turned
> on debugging output, so it’s printing information that’s
> useful to the developers. That message is telling us that F^H
> M F is approximately equal to I in that the error F^H M F - I
> is small.
>
> Can you tell us about the linear solver you’re using? What
> are the tolerance and maximum number of iterations? Also, is
> M a preconditioner, or is M part of the generalized eigenvalue
> problem Ax = \lambda M x?
>
> Best wishes,
>
> Alicia
>
> *From:*Trilinos-Users
> [mailto:trilinos-users-bounces at trilinos.org] *On Behalf Of
> *Andris Freimanis
> *Sent:* Thursday, September 14, 2017 1:18 AM
> *To:* Trilinos mailing list <trilinos-users at trilinos.org>
> <mailto:trilinos-users at trilinos.org>
> *Subject:* [EXTERNAL] [Trilinos-Users] Anasazi
> BlockKrylovSchur solver Error in F^H M F == I
>
> Hello,
>
> I'm trying to calculate few smallest eigenvalues of a linear
> system, where A - nonsymmetric sparse and M - sparse symmetric
> positive-definite, using Anasazi's Block Krylov Schur solver
> with shift-invert transformation that is solved by Belos's
> block GMRES solver. Both test matrices are 240x240 in size.
>
> Unfortunately, I'm getting this error: >> Error in F^H M F ==
> I : 4.44e-16 (copied the full error message below), and can't
> find info on this in neither Anasazi nor Belos examples or
> documentation. Can you please take a look at the error message
> below?
>
> This problem is similar to the one here:
> https://trilinos.org/pipermail/trilinos-users/2015-December/005270.html.
> However, the suggestion to use shift-invert doesn't help as
> I'm already doing that.
>
> Best regards,
>
> Andris Freimanis
>
> Debugging checks: iteration 0: after initialize()
> >> Error in F^H M F == I : 4.44e-16
>
> ================================================================================
>
> BlockKrylovSchur Solver Status
>
> The solver is initialized.
> The number of iterations performed is 0
> The block size is 1
> The number of blocks is 24
> 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: 5
> Auxiliary values: [empty]
> - StatusTestResNorm: Failed
> (Tolerance,WhichNorm,Scaled,Quorum):
> (1.000000e-03,RITZRES_2NORM,true,5)
> Which vectors: [empty]
> Performing restart number 1 of 10
>
> Performing restart number 2 of 10
>
> Performing restart number 3 of 10
>
> Performing restart number 4 of 10
>
> Performing restart number 5 of 10
>
> Performing restart number 6 of 10
>
> Performing restart number 7 of 10
>
> Performing restart number 8 of 10
>
> Performing restart number 9 of 10
>
> Performing restart number 10 of 10
>
> Failed.......OR Combination ->
> OK...........Number of Iterations = 264 < 1000
> Unconverged..(2-Norm Res Vec) / (2-Norm Prec Res0)
> residual [ 0 ] = 2.855202e-01 > 1.000000e-03
>
> ================================================================================
>
> TimeMonitor results over 1 processor
>
> Timer Name Global time (num calls)
> --------------------------------------------------------------------------------
> Anasazi: BlockKrylovSchur::Computing Ritz vectors 0 (0)
> Anasazi: BlockKrylovSchur::Computing Schur form 0 (0)
> Anasazi: BlockKrylovSchur::Operation Op*x 0 (1)
> Anasazi: BlockKrylovSchur::Orthogonalization 0.0001295 (1)
> Anasazi: BlockKrylovSchur::Sorting Ritz values 0 (0)
> Anasazi: BlockKrylovSchur::Sorting Schur form 0 (0)
> Anasazi: BlockKrylovSchurSolMgr restarting 0 (0)
> Anasazi: BlockKrylovSchurSolMgr::solve() 0 (1)
> Belos: BlockGmresSolMgr total solve time 0.03066 (1)
> Belos: Operation Op*x 0.005605
> (275)
> --------------------------------------------------------------------------------
> Belos: Operation Prec*x 0.007409
> (275)
> Belos: Orthogonalization 0.01177 (275)
> Epetra_CrsMatrix::Multiply(TransA,X,Y) 0.005537
> (280)
> Epetra_CrsMatrix::Solve(Upper,Trans,UnitDiag,X,Y) 0.006862
> (550)
> Ifpack_ILU::ApplyInverse 0.007275
> (275)
> Ifpack_ILU::ApplyInverse - Solve 0.007074
> (275)
> Ifpack_ILU::Compute 0.002538 (1)
> Ifpack_ILU::ComputeSetup 0.0008707
> (1)
> Ifpack_ILU::Initialize 0.0004559
> (1)
> ================================================================================
> Anasazi::BlockKrylovSchurSolMgr::solve() caught unexpected
> exception from Anasazi::BlockKrylovSchur::iterate() at iteration 1
> /usr/local/trilinos/include/AnasaziEpetraAdapter.hpp:1401:
>
> Throw number = 1
>
> Throw test that evaluated to true: ret != 0
>
> Anasazi::OperatorTraits<double,Epetra_Multivector,Epetra_Operator>::Apply():
> Error in Epetra_Operator::Apply(). Code -1
> Anasazi::BlockKrylovSchurSolMgr::solve() returning Unconverged
> with no solutions.
>
> --
>
> Andris Freimanis
>
> PhD student
>
>
>
> Riga Technical university
>
> Institute of transporation
>
> engineering
>
>
>
> ??psalas iela 6a, Riga, Latvia, LV1048
>
> www.rtu.lv <http://www.rtu.lv>
>
>
>
>
> --
>
> Andris Freimanis
>
> PhD student
>
>
>
> Riga Technical university
>
> Institute of transporation
>
> engineering
>
>
>
> ??psalas iela 6a, Riga, Latvia, LV1048
>
> www.rtu.lv <http://www.rtu.lv>
>
>
>
> --
> Andris Freimanis
> PhD student
> Riga Technical university
> Institute of transporation
> engineering
> ??psalas iela 6a, Riga, Latvia, LV1048
> www.rtu.lv <http://www.rtu.lv>
--
Andris Freimanis
PhD student
Riga Technical university
Institute of transporation
engineering
Ķīpsalas iela 6a, Riga, Latvia, LV1048
www.rtu.lv
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://trilinos.org/pipermail/trilinos-users/attachments/20170915/c2c9b539/attachment.html>
More information about the Trilinos-Users
mailing list