If I am to solve a symmetric eigenvalue system $A=QDQ^T$, where $A\in\mathcal{R}^{n\times n}$ and $n$ is small (in the range 4 - 64); I want all the eigenvectors and eigenvalues;

There are two major consideration in my design; I wish my implementation to be as fast as possible; I need $Q$ to be as orthogonal possible, however I can tolerate error in eigenvalue. What would be a good way to go about solving it? target platform is single core x86 processor;

All MKL routines such as sYEV, sYEVD and sYEVR seems to be very slow ( around 10x than expected based on flop rates). Thus the need of implementing it myself; I hope design space is large than just tridiagonal reduction kind of methods;

I would like suggestion on all three aspects, i.e. algorithm,implementation and existing implementation for such problems;


1 Answer 1


In my experience the major BLAS libraries are not well optimized for small $n$, but you should not expect to obtain back the full factor of 10. You might have a look at Eigen to see how it does in comparison.

You'll be L2 cache contained for your larger sizes and L1 contained for the smaller ones. You'll probably need to take this into account to get good performance.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.