New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ValueError: Too large work array required -- computation cannot be performed with standard 32-bit LAPACK. #10337
Comments
You can see from the MKL I've had to run massive SVDs before, and the options that I'm aware of are to use MKL's or OpenBLAS' ILP64 LAPACK/ScaLAPACK directly, or Elemental. |
Thanks for the details. For
I am not aware of MKL's or OpenBLAS' ILP64 LAPACK/ScaLAPACK directly, or Elemental. Could you guide me a bit around me? |
Yes, Since the QR algorithm is much slower than the bidiagonal divide and conquer (BDC) of For shared memory systems:
For distributed memory systems, using MPI:
|
As @AidanGG mentioned, this is a property of the underlying method of how the SVD is computed. I'll close this issue but please feel free to continue the discussion. |
One possibly dumb question: if I switch to MKL with 64-bit ints, or OpenBLAS built with INTERFACE64=1, would scipy directly use it without any modifications and it'd solve the |
I believe that according to this issue numpy/numpy#5906 it will not, but someone more knowledgeable than me regarding how numpy and scipy work will have to confirm. |
Dear Scipy community,
I am trying to run an SVD on a large matrix and I get the following error:
My code:
returns:
I would expect to be able to run an SVD on a 30000 by 30000 matrix.
returns:
UPDATE:
It seems that
svd(a, lapack_driver='gesvd')
works, however I do not understand why the standardsvd(a)
with the deafult drivergesdd
fails.The text was updated successfully, but these errors were encountered: