I have found a bug on Parallel Studio 16.0.2 where I get an error when computing the SVD with GESDD in the Python package SciPy. It can be reproduced on an MKL-built scipy with this array, which is finite (contains no NaN or inf) as:
>>> import numpy as np>>> from scipy import linalg>>> linalg.svd(np.load('fail.npy'), full_matrices=False) Traceback (most recent call last): File "<string>", line 1, in <module> File "/home/larsoner/.local/lib/python2.7/site-packages/scipy/linalg/decomp_svd.py", line 119, in svd raise LinAlgError("SVD did not converge") numpy.linalg.linalg.LinAlgError: SVD did not converge
I am curious if anyone has insight into why this fails, or can reproduce it themselves. I do have access to older MKL routines so if it's helpful I could see if I get the error elsewhere, too.
I have tried this with MKL-enabled Anaconda, and it does not fail, although I do experience similar failures with other arrays with the Anaconda version, which seem to only happen on systems with SSE4.2 but no AVX extensions.
I recently worked on SciPy's SVD routines to add a wrapper for a GESVD backend (to complement the existing GESDD routine) here, and this command passes on bleeding-edge SciPy, so it does seem to be a problem with the GESDD implementation specifically:
>>> linalg.svd(np.load('fail.npy'), full_matrices=False, lapack_driver='gesvd')