array-api-compat icon indicating copy to clipboard operation
array-api-compat copied to clipboard

`cupy` `repeat` does not accept CuPy array for `repeats`

Open mdhaber opened this issue 10 months ago • 0 comments

The standard specifies that the second argument of repeat ("repeats") can be an array of integers, but CuPy doesn't support this.

from array_api_compat import cupy as xp  # not OK
# import array_api_strict as xp  # OK

x = xp.asarray([1, 2, 3])
xp.repeat(x, x)
# ValueError: cupy.ndaray cannot be specified as `repeats` argument.

The array API documentation of repeats notes:

For specification-conforming array libraries supporting hardware acceleration, providing an array for repeats may cause device synchronization due to an unknown output shape. For those array libraries where synchronization concerns are applicable, conforming array libraries are advised to include a warning in their documentation regarding potential performance degradation when repeats is an array.

From https://github.com/cupy/cupy/issues/3849, I see that this is the case for CuPy. Not sure what that means for this issue. One could argue that CuPy does not support it and that this can be closed.

mdhaber avatar Apr 18 '25 06:04 mdhaber