Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Eigen Solver is reportedly VERY SLOW #2286

Closed
RiccardoRossi opened this issue Jun 7, 2018 · 15 comments
Closed

Eigen Solver is reportedly VERY SLOW #2286

RiccardoRossi opened this issue Jun 7, 2018 · 15 comments

Comments

@RiccardoRossi
Copy link
Member

Multiple users reported that the eigensolvers available in Kratos are very slow when multiple eigenvalues are required (behaviour looks quadratic and is one order of magnitude slower than Siemens NX for around 10 eigenvalues)

@loumalouomega
Copy link
Member

@KratosMultiphysics/structural-mechanics

@philbucher
Copy link
Member

Guys without more info on the configuration it is hard to say what is happening

@loumalouomega
Copy link
Member

loumalouomega commented Jun 7, 2018 via email

@RiccardoRossi
Copy link
Member Author

Hi @philbucher unfortunately i don't have much details other than the "oral report" i am speaking about (this is not based on my own experience)

@dbaumgaertner showed a test against Siemens NX. Daniel can u post your results for discussion?

@loumalouomega
Copy link
Member

Besides, do you know this library?

https://github.com/yixuan/spectra

@philbucher
Copy link
Member

@armingeiser please correct me if I am wrong but I think we had a look also at it didn't we?

@loumalouomega I think the issue was that at least we (Structural guys) are in most cases only interested in the smallest (fist 5 or se) eigenvalues, I am not sure if Spectra can do this.
It seems like it can find any eigenvalues (=> same as FEAST) but we don't need this thats why eventually @armingeiser implemented the algorithm from the Bathe book

@qaumann
Copy link
Contributor

qaumann commented Jun 8, 2018

Are you discussing about the solvers in the EigenSolversApplication or the eigensolver strategy in the StructuralMechanicsApplication?

@loumalouomega
Copy link
Member

loumalouomega commented Jun 8, 2018 via email

@armingeiser
Copy link
Member

There are a few points to make here:

Its important to separate the EigenSolversApplication from the solution of the Eigenvalue problems.
The currently implemented eigensolver in the EigenSolversApplication is a subspace iteration algorithm (according to Bathe) that is designed to calculate few first eigenvalues.

It is not the most sofisticated one, but it was comparatevely easy to implement and robust for what we are using it for. The comparison with the NX Nastran that Daniel showed, indeed show that with more that 5 eigenvalues requested, the computation time drastically increases.

This is because of the subspace iteration algorithm, and not related to the eigen library.

@loumalouomega I am aware of the spectra library, but as far as i know it does not offer a sparse generalized eigenvalue solver, which is what we need. It could be extended, but at the point we implemented the existing version, we decided to go for the (to our opinion) simpler version and also without additional necessary libraries (except from Eigen).

BTW: the current eigensolver depends on the Eigen library because a small dense generalized eigenvalue problem needs to be solved internally,
Except from that it could also work using other linear solvers from Kratos. We did not expose this funcitonality because the algorithm requires multiple linear solutions with different RHSs and most linear solvers do not properly separate between the InitializeSolutionStep and PerformSolutionStep and therefor are extremely slow, because Solve needs to be called each time.

@armingeiser
Copy link
Member

Also important to note:
Compared to FEAST it is much faster, except you exactly know how to define your search dimensions (which you don`t for our kind of problems).

@armingeiser
Copy link
Member

yixuan/spectra#36 could be worth a try (but i currently don`t have time to do that)

@RiccardoRossi
Copy link
Member Author

@e-dub, my role in this discussion is very minor but i am CC-ing you just to have you on the same page.

@philbucher
Copy link
Member

can this be closed?

@loumalouomega
Copy link
Member

I assume we can, and reopen in case any new contribution

@armingeiser
Copy link
Member

I think so. Until we find a volunteer to try something new.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants