Cupy: Support 0脳0 matrices in linalg routines

Created on 25 Nov 2020  路  1Comment  路  Source: cupy/cupy

cupy.linalg.solve, cupy.linalg.inv

cupy_backends.cuda.libs.cusolver.CUSOLVERError: CUSOLVER_STATUS_INVALID_VALUE

>>> for xp in [numpy, cupy]:
...     print(xp.__name__)
...     a = xp.empty((0, 0))
...     b = xp.empty((0, 3))
...     print(repr(xp.linalg.solve(a, b)))
...
numpy
array([], shape=(0, 3), dtype=float64)
cupy
Traceback (most recent call last):
  File "<stdin>", line 5, in <module>
  File ".../cupy/linalg/_solve.py", line 62, in solve
    return cupyx.lapack.gesv(a, b)
  File ".../cupyx/lapack.py", line 64, in gesv
    getrf(handle, n, n, a.data.ptr, n, dwork.data.ptr, dipiv.data.ptr,
  File "cupy_backends/cuda/libs/cusolver.pyx", line 1402, in cupy_backends.cuda.libs.cusolver.dgetrf
  File "cupy_backends/cuda/libs/cusolver.pyx", line 1409, in cupy_backends.cuda.libs.cusolver.dgetrf
  File "cupy_backends/cuda/libs/cusolver.pyx", line 1049, in cupy_backends.cuda.libs.cusolver.check_status
cupy_backends.cuda.libs.cusolver.CUSOLVERError: CUSOLVER_STATUS_INVALID_VALUE

cupy.linalg.lstsq

ValueError: zero-size array to reduction operation cupy_max which has no identity

>>> cupy.linalg.lstsq(a, b)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File ".../cupy/linalg/_solve.py", line 235, in lstsq
    cutoff = rcond * s.max()
  File "cupy/core/core.pyx", line 760, in cupy.core.core.ndarray.max
  File "cupy/core/core.pyx", line 768, in cupy.core.core.ndarray.max
  File "cupy/core/_routines_statistics.pyx", line 41, in cupy.core._routines_statistics._ndarray_max
  File "cupy/core/_reduction.pyx", line 560, in cupy.core._reduction._SimpleReductionKernel.__call__
  File "cupy/core/_reduction.pyx", line 328, in cupy.core._reduction._AbstractReductionKernel._call
ValueError: zero-size array to reduction operation cupy_max which has no identity

bug medium

Most helpful comment

linalg.pinv is fixed in #4686.

>All comments

linalg.pinv is fixed in #4686.

Was this page helpful?
0 / 5 - 0 ratings