Skip to content

dpctl raises exception with empty boolean array passed to __setitem__() #1913

Closed
@antonwolfy

Description

@antonwolfy

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions