LAPACK SSYEVD failes to evaluate matrix

Post here if you have a question about LAPACK or ScaLAPACK algorithm or data format

LAPACK SSYEVD failes to evaluate matrix

Postby allamsridevi » Mon Feb 03, 2014 3:42 pm

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
Attachments
Output.txt
(138 Bytes) Downloaded 57 times
EigenValues.txt
(1.26 KiB) Downloaded 56 times
_IntelMKL_BadMatrix.cpp
Source code
(55.87 KiB) Downloaded 62 times
Last edited by allamsridevi on Mon Nov 24, 2014 1:33 pm, edited 1 time in total.
allamsridevi
 
Posts: 2
Joined: Mon Feb 03, 2014 1:38 pm

Re: LAPACK SSYEVD failes to evaluate matrix

Postby allamsridevi » Mon Feb 03, 2014 6:24 pm

Attaching the reproducer.zip (as the limit for No. of attachments in the Original Post was #3)
Attachments
Reproducer.zip
(10.79 KiB) Downloaded 59 times
allamsridevi
 
Posts: 2
Joined: Mon Feb 03, 2014 1:38 pm

Re: LAPACK SSYEVD failes to evaluate matrix

Postby osni » Tue Oct 07, 2014 2:39 pm

The bug has been traced to slaed6, which computes the root closest to the origin of a secular equation and is used in the D&C tridiagonal eigensolver (sstedc) and D&C least squares solver (sgelsd). The bug was due to the use of too stringent tolerance in the test for convergence in line 390, which has been modified to

390 IF( ( ABS( F ).LE.FOUR*EPS*ERRETM ) .OR.
391 $ ( (UBD-LBD).LE.FOUR*EPS*ABS(TAU) ) )
392 $ GO TO 60

Osni
osni
 
Posts: 8
Joined: Fri Apr 29, 2005 2:57 pm

Re: LAPACK SSYEVD failes to evaluate matrix

Postby Developer2014 » Fri Nov 07, 2014 7:22 pm

Thank you for looking into this issue. Does the fix make LAPACKE_ssyevd able to solve any matrix (assuming there are no overflows)? In what version of Intel MKL is the fix available?
Developer2014
 
Posts: 1
Joined: Mon Feb 03, 2014 7:08 pm

Re: LAPACK SSYEVD failes to evaluate matrix

Postby admin » Wed Mar 11, 2015 11:28 pm

Just to let you know that the bug you reported has been corrected in rev 1505 on Oct 1st 2014.
See http://www.netlib.org/lapack/Errata/index2.html

The bug fix will be released in the coming LAPACK release. At the moment, it is available in our SVN repository.

In what version of Intel MKL is the fix available?
Best, would be to ask directly the MKL team.
admin
Site Admin
 
Posts: 608
Joined: Wed Dec 08, 2004 7:07 pm


Return to Algorithm / Data

Who is online

Users browsing this forum: No registered users and 1 guest