LAPACKE_ssyevd fails to evaluate a matrix. LAPACKE_ssyev solves the problem. The code to reproduce the issue is attached.

MKL Engineers did some investigation and the Netlib LAPACK SSYEVD with netlib BLAS is also unable to solve the problem. The failure is due to the algorithm nature and since single precision is chosen and they recommended to use the double precision DSYEVD or single precision SSYEV since the QR algorithm used in xSYEV is more reliable than the divide and conquer approach used by the xSYEVD LAPACK interfaces.

The SYEVD routine has to be adjusted to be robust. Random failures of any method is not an acceptable thing. The SYEVD is a faster way to perform Singular Value Decomposition and therefore is very important.

We developed a reproducer (reproducer.zip) for original SSYEVD LAPACK interface and the test fails with all MKL builds:

build the Netlib LAPACK and BLAS binaries with -O0 by gfortran and ifort compiler and the test also fails for all possible combinations

$ ifort -O0 test_ssyevd.f liblapack.a librefblas.a

$ a.out

lacke 6841 6841

size of iwork 288 288

info 86

$ gfortran -O0 test_ssyevd.f liblapack.a librefblas.a

$ a.out

lacke 6841 6841

size of iwork 288 288

info 86