Closed
Description
It seems dpctl doesn't handle a corner case properly when an empty boolean array passed through advanced indexing in __setitem__()
:
import numpy, dpctl, dpctl.tensor as dpt
dpctl.__version__
# Out: '0.19.0dev0+280.g4a94ef9c25'
numpy.__version__
# Out: '2.1.3'
a = dpt.ones((2, 3, 4))
a[dpt.asarray([], dtype=numpy.bool_)] = 1
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[24], line 1
----> 1 a[dpt.asarray([], dtype=numpy.bool_)] = 1
File dpctl/tensor/_usmarray.pyx:1445, in dpctl.tensor._usmarray.usm_ndarray.__setitem__()
File /localdisk/work/antonvol/soft/miniforge3/envs/numpy_20/lib/python3.12/site-packages/dpctl/tensor/_copy_utils.py:928, in _place_impl(ary, ary_mask, vals, axis)
926 rhs = dpt.broadcast_to(rhs, expected_vals_shape)
927 dep_ev = _manager.submitted_events
--> 928 hev, pl_ev = ti._place(
929 dst=ary,
930 cumsum=cumsum,
931 axis_start=pp,
932 axis_end=pp + mask_nd,
933 rhs=rhs,
934 sycl_queue=exec_q,
935 depends=dep_ev,
936 )
937 _manager.add_event_pair(hev, pl_ev)
938 return
ValueError: Inconsistent array dimensions
# it works in NumPy
na[numpy.asarray([], dtype=numpy.bool_)] = 1
# and it works with integer array in dpctl:
a[dpt.asarray([], dtype=numpy.intp)] = 1
Metadata
Metadata
Assignees
Labels
No labels