'Is there a faster alternative to LAPACKE_zgeev() for banded matrices?

I am currently comparing the timing of a Matlab script to one written in C. A major piece of this is the calculation of the eigenvalues and the matrix of eigenvectors of a tridiagonal matrix ( later I will work with 9 diagonal matrices ). Currently the C implementation utilizes LAPACKE_zgeev().

When using the same tridiagonal matrix, Matlab's eig() beats LAPACKE_zgeev() by two times with 1 openmp thread ( in C ) and by 10% when running with 4 threads ( all available on this machine ).

Is there an a faster alternative to LAPACKE_zgeev()? Preferably one that uses less memory via banded matrices.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source