Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.

FEAST version status

Dan31
Beginner
1,197 Views
Hello,

Since currently supported FEAST version in MKL seems to be 2.1, it lacks extraction of N smallest eigenvalues and eigenvectors of generalized eigenvalue problem. This seems to be of vital importance in FEM problems; natural frequency analysis and buckling analysis. In first one, one could deal with frequency/eigenvalue range to some extent as engineer probably has some feeling of frequency range upfront, but in buckling, eigenvalue represents safety factor which could be totally unknown and smallest eigenvalue is usually the most important result of the analysis.
Other users seem to have already asked for it also.
Compiling FEAST externally a and linking it to the project seems to cause duplicate symbols and some other problems so is not an option (reported by others).
Any news, plans, roadmap on when we could get this?

Thanks,
Daniel
0 Kudos
7 Replies
Fengrui
Moderator
1,146 Views

Hello Daniel,

 

Thank you for posting in the forum! 

 

In oneMKL we provide API mkl_sparse_?_gv to extract N smallest/largest eigenvalues and eigenvectors of generalized eigenvalue problems, and the algorithms can be either Krylov-Schur or FEAST. For details, please refer to the developer reference: https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-c/2024-2/mkl-sparse-gv.html

 

Does this API meet your needs?

 

Best,

Fengrui

0 Kudos
Dan31
Beginner
1,034 Views

Hello Fengrui,

 

I have played a bit with mkl_sparse_d_gv and, in short, it is unreliable (internal error return code, allocation error return code) and significantly slower (10s vs 0.4s with 8214x8214 sparse symmetric matrix) than dfeast_scsrgv.

It looks as though it iterates internally to find eigenvalue range...

Would you like details if you believe it should be as fast as native FEAST?

If there is a plan to upgrade FEAST in next year or so, I can wait... hope that FEAST will be/is fast also when requesting N smallest eigenvalues.

 

Regards and thanks for the help!

Daniel

 

0 Kudos
Fengrui
Moderator
952 Views

Hi Daniel,


Yes, please share more details. It would be great if you could share a small code sample to reproduce this performance difference. I would expect extra overhead when using mkl_sparse_?_gv, comparing to using feast directly. But 10s vs 0.4s looks more than expected.


Thanks,

Fengrui


0 Kudos
Dan31
Beginner
909 Views

Hello Fengrui,

 

I have prepared a small example c++ code using binary data that I saved and is loaded by code... you will get a hang of it.

Unfortunately, mkl_sparse_d_gv method now fails, although I was sure it did run few days ago and I cannot seem to find out why. Maybe I did something wrong and now the error will reveal itself

 

Feel free to ask for any additional info if needed.

 

Regards,

Daniel

(Virus scan in progress ...)
0 Kudos
Fengrui
Moderator
800 Views

Hi Daniel,


Sorry for the late reply. I tried the code and data. It seems mkl_sparse_?_gv didn't converge.

BTW for this feature request, is it for extremal eigenvalues/eigenvectors with boundaries or without boundaries?


Thanks,

Fengrui


0 Kudos
Dan31
Beginner
772 Views
Hello Fengrui,

This is buckling analysis where eigenvalue boundaries are not known upfront and are actually most important result.
For natural frequency analysis I would be interested in specifying boundaries just to ignore frequencies outside of my zone of interest.
I don't know how to specify boundaries to mkl_sparse_?_gv anyway.

Also, these FEM problems seem to be rather close to be ill-conditioned... Any way of increasing precision /tolerance?

Thanks!
Daniel
0 Kudos
Fengrui
Moderator
744 Views

Thank you for providing the information of use cases!

When using mkl_sparse_?_gv, the boundaries can not be specified, even the algorithm is set to FEAST. An internal function will be called to determine the boundaries. For the cases that there is a zone of interest (boundaries known), it is recommended to use the FEAST APIs directly, as it is more flexible and there is no extra overhead.

If the boundaries are not known upfront and extremal eigenvalues/eigenvectors are needed, please use mkl_sparse_?_gv.

By "ill-conditioned", do you mean matrix A? BTW, the matrix B in the provided code is not positive-definite (checked by setting fpm[27]=1 when using FEAST), while it is requested by the generalized eigenvalue problem solvers to have real eigenvalues. If you mean matrix A is ill-conditioned and has eigenvalues that are very close to zero, you could try the shift and invert transformation to solve the following eigenvalue problem instead,

( A - shift B)^(-1) B x= mu x
where mu = 1 / (lambda - shift) and lambda is the original eigenvalue.

 

Thanks,

Fengrui

0 Kudos
Reply