scipy: ValueError in scipy.linalg.eigvalsh for large matrix

scipy.linalg.eigvalsh() throws ValueError() for large matrices. The bug appears for arbitrary matrices.

However, it also shows up in trivial examples, such as a large identity matrix, and large diagonal matrices with random coefficients in [0,1].

Reproducing code example:

import numpy as np 
import scipy.linalg as la

H=np.eye(6470)
#np.random.seed(0)
#H=np.diag(np.random.uniform(size=6470))
E=la.eigvalsh(H)

Error message:

Traceback (most recent call last):
  File "example0.py", line 7, in <module>
    E=la.eigvalsh(H)
  File "/Users/mbukov/anaconda3/lib/python3.6/site-packages/scipy/linalg/decomp.py", line 734, in eigvalsh
    check_finite=check_finite)
  File "/Users/mbukov/anaconda3/lib/python3.6/site-packages/scipy/linalg/decomp.py", line 384, in eigh
    iu=a1.shape[0], overwrite_a=overwrite_a)
ValueError: On entry to DSBRDB parameter number 12 had an illegal value

Scipy/Numpy/Python version information:

0.19.1 1.13.0 sys.version_info(major=3, minor=6, micro=2, releaselevel='final', serial=0)

About this issue

  • Original URL
  • State: closed
  • Created 7 years ago
  • Reactions: 1
  • Comments: 20 (9 by maintainers)

Most upvoted comments

@ilayn FYI Intel has fixed the MKL bug with minimum work sizes in release 19.0 https://software.intel.com/en-us/forums/intel-math-kernel-library/topic/753935