cupy.linalg.solve, cupy.linalg.invcupy_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.lstsqValueError: 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
linalg.pinv is fixed in #4686.
Most helpful comment
linalg.pinvis fixed in #4686.