Skip to content

Commit cf2a286

Browse files
Move compute follows data utils (#2840)
This PR proposes to move the file `_compute_follows_data.pyx` from `dpctl.utils` to `dpnp.tensor` as part of the migration of `dpctl.tensor` to `dpnp.tensor` ### Changes >- **Moved file**: `dpctl/utils/_compute_follows_data.pyx` → `dpnp/tensor/_compute_follows_data.pyx` >- **Exports** (now available from `dpnp.tensor`): >>- `ExecutionPlacementError` - exception for execution placement errors >>- `get_execution_queue()` - determine execution queue from input arrays >>- `get_coerced_usm_type()` - determine output USM type for compute-follows-data >>- `validate_usm_type()` - validate USM type specifications
1 parent e1aad07 commit cf2a286

File tree

78 files changed

+607
-489
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+607
-489
lines changed

dpnp/dpnp_algo/dpnp_arraycreation.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import math
3030
import operator
3131

32-
import dpctl.utils as dpu
3332
import numpy
3433

3534
import dpnp
@@ -340,7 +339,7 @@ class dpnp_nd_grid:
340339
def __init__(
341340
self, sparse=False, device=None, usm_type="device", sycl_queue=None
342341
):
343-
dpu.validate_usm_type(usm_type, allow_none=True)
342+
dpt.validate_usm_type(usm_type, allow_none=True)
344343
self.sparse = sparse
345344
self.usm_type = "device" if usm_type is None else usm_type
346345
self.sycl_queue_normalized = dpnp.get_normalized_queue_device(

dpnp/dpnp_algo/dpnp_elementwise_common.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -451,7 +451,7 @@ def __call__(
451451
f"Expected output shape is {x.shape}, got {res.shape}"
452452
)
453453

454-
if dpu.get_execution_queue((exec_q, res.sycl_queue)) is None:
454+
if dpt.get_execution_queue((exec_q, res.sycl_queue)) is None:
455455
raise dpnp.exceptions.ExecutionPlacementError(
456456
"Input and output allocation queues are not compatible"
457457
)
@@ -1062,7 +1062,7 @@ def __call__(
10621062
f"Expected output shape is {res_shape}, got {res.shape}"
10631063
)
10641064

1065-
if dpu.get_execution_queue((exec_q, res.sycl_queue)) is None:
1065+
if dpt.get_execution_queue((exec_q, res.sycl_queue)) is None:
10661066
raise dpnp.exceptions.ExecutionPlacementError(
10671067
"Input and output allocation queues are not compatible"
10681068
)

dpnp/dpnp_algo/dpnp_fill.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ def dpnp_fill(arr, val):
4949
val = dpnp.get_usm_ndarray(val)
5050
if val.shape != ():
5151
raise ValueError("`val` must be a scalar or 0D-array")
52-
if dpu.get_execution_queue((exec_q, val.sycl_queue)) is None:
53-
raise dpu.ExecutionPlacementError(
52+
if dpt.get_execution_queue((exec_q, val.sycl_queue)) is None:
53+
raise dpt.ExecutionPlacementError(
5454
"Input arrays have incompatible queues."
5555
)
5656
a_val = dpt.astype(val, arr.dtype)

dpnp/dpnp_container.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@
3535
3636
"""
3737

38-
import dpctl.utils as dpu
39-
4038
import dpnp
4139
import dpnp.tensor as dpt
4240
from dpnp.dpnp_array import dpnp_array
@@ -67,7 +65,7 @@ def arange(
6765
sycl_queue=None,
6866
):
6967
"""Validate input parameters before passing them into `dpctl.tensor` module"""
70-
dpu.validate_usm_type(usm_type, allow_none=False)
68+
dpt.validate_usm_type(usm_type, allow_none=False)
7169
sycl_queue_normalized = dpnp.get_normalized_queue_device(
7270
sycl_queue=sycl_queue, device=device
7371
)
@@ -93,7 +91,7 @@ def asarray(
9391
sycl_queue=None,
9492
):
9593
"""Converts `x1` to `dpnp_array`."""
96-
dpu.validate_usm_type(usm_type, allow_none=True)
94+
dpt.validate_usm_type(usm_type, allow_none=True)
9795

9896
if order is None:
9997
order = "K"
@@ -154,7 +152,7 @@ def empty(
154152
sycl_queue=None,
155153
):
156154
"""Validate input parameters before passing them into `dpctl.tensor` module"""
157-
dpu.validate_usm_type(usm_type, allow_none=False)
155+
dpt.validate_usm_type(usm_type, allow_none=False)
158156
sycl_queue_normalized = dpnp.get_normalized_queue_device(
159157
sycl_queue=sycl_queue, device=device
160158
)
@@ -185,7 +183,7 @@ def eye(
185183
sycl_queue=None,
186184
):
187185
"""Validate input parameters before passing them into `dpctl.tensor` module"""
188-
dpu.validate_usm_type(usm_type, allow_none=False)
186+
dpt.validate_usm_type(usm_type, allow_none=False)
189187
sycl_queue_normalized = dpnp.get_normalized_queue_device(
190188
sycl_queue=sycl_queue, device=device
191189
)
@@ -216,7 +214,7 @@ def full(
216214
sycl_queue=None,
217215
):
218216
"""Validate input parameters before passing them into `dpctl.tensor` module"""
219-
dpu.validate_usm_type(usm_type, allow_none=True)
217+
dpt.validate_usm_type(usm_type, allow_none=True)
220218

221219
sycl_queue_normalized = dpnp.get_normalized_queue_device(
222220
fill_value, sycl_queue=sycl_queue, device=device
@@ -249,7 +247,7 @@ def ones(
249247
sycl_queue=None,
250248
):
251249
"""Validate input parameters before passing them into `dpctl.tensor` module"""
252-
dpu.validate_usm_type(usm_type, allow_none=False)
250+
dpt.validate_usm_type(usm_type, allow_none=False)
253251
sycl_queue_normalized = dpnp.get_normalized_queue_device(
254252
sycl_queue=sycl_queue, device=device
255253
)
@@ -289,7 +287,7 @@ def zeros(
289287
sycl_queue=None,
290288
):
291289
"""Validate input parameters before passing them into `dpctl.tensor` module"""
292-
dpu.validate_usm_type(usm_type, allow_none=False)
290+
dpt.validate_usm_type(usm_type, allow_none=False)
293291
sycl_queue_normalized = dpnp.get_normalized_queue_device(
294292
sycl_queue=sycl_queue, device=device
295293
)

dpnp/dpnp_iface.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@ def get_dpnp_descriptor(
407407
if queue is not None and copy_when_nondefault_queue:
408408
default_queue = dpctl.SyclQueue()
409409
queue_is_default = (
410-
dpctl.utils.get_execution_queue([queue, default_queue]) is not None
410+
dpt.get_execution_queue([queue, default_queue]) is not None
411411
)
412412
if not queue_is_default:
413413
ext_obj = dpnp.array(ext_obj, sycl_queue=default_queue)

dpnp/dpnp_iface_histograms.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
result_type_for_device,
5454
to_supported_dtypes,
5555
)
56+
from dpnp.tensor import get_coerced_usm_type, get_execution_queue
5657

5758
# pylint: disable=no-name-in-module
5859
from .dpnp_utils import get_usm_allocations
@@ -87,10 +88,10 @@ def _ravel_check_a_and_weights(a, weights):
8788
if weights is not None:
8889
# check that `weights` array has supported type
8990
dpnp.check_supported_arrays_type(weights)
90-
usm_type = dpu.get_coerced_usm_type([usm_type, weights.usm_type])
91+
usm_type = get_coerced_usm_type([usm_type, weights.usm_type])
9192

9293
# check that arrays have the same allocation queue
93-
if dpu.get_execution_queue([a.sycl_queue, weights.sycl_queue]) is None:
94+
if get_execution_queue([a.sycl_queue, weights.sycl_queue]) is None:
9495
raise ValueError(
9596
"a and weights must be allocated on the same SYCL queue"
9697
)
@@ -173,7 +174,7 @@ def _get_bin_edges(a, bins, range, usm_type):
173174

174175
elif numpy.ndim(bins) == 1:
175176
if dpnp.is_supported_array_type(bins):
176-
if dpu.get_execution_queue([a.sycl_queue, bins.sycl_queue]) is None:
177+
if get_execution_queue([a.sycl_queue, bins.sycl_queue]) is None:
177178
raise ValueError(
178179
"a and bins must be allocated on the same SYCL queue"
179180
)

dpnp/dpnp_iface_indexing.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,8 @@ def _choose_run(inds, chcs, q, usm_type, out=None, mode=0):
130130
f"got {out.dtype}"
131131
)
132132

133-
if dpu.get_execution_queue((q, out.sycl_queue)) is None:
134-
raise dpu.ExecutionPlacementError(
133+
if dpt.get_execution_queue((q, out.sycl_queue)) is None:
134+
raise dpt.ExecutionPlacementError(
135135
"Input and output allocation queues are not compatible"
136136
)
137137

@@ -292,8 +292,8 @@ def _take_index(x, inds, axis, q, usm_type, out=None, mode=0):
292292
f"Output array of type {x.dtype} is needed, " f"got {out.dtype}"
293293
)
294294

295-
if dpu.get_execution_queue((q, out.sycl_queue)) is None:
296-
raise dpu.ExecutionPlacementError(
295+
if dpt.get_execution_queue((q, out.sycl_queue)) is None:
296+
raise dpt.ExecutionPlacementError(
297297
"Input and output allocation queues are not compatible"
298298
)
299299

dpnp/dpnp_iface_logic.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1261,12 +1261,12 @@ def isin(
12611261
usm_element = dpnp.get_usm_ndarray(element)
12621262
else:
12631263
if (
1264-
dpu.get_execution_queue(
1264+
dpt.get_execution_queue(
12651265
(element.sycl_queue, test_elements.sycl_queue)
12661266
)
12671267
is None
12681268
):
1269-
raise dpu.ExecutionPlacementError(
1269+
raise dpt.ExecutionPlacementError(
12701270
"Input arrays have incompatible allocation queues"
12711271
)
12721272
usm_element = dpnp.get_usm_ndarray(element)

dpnp/dpnp_iface_mathematical.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -270,10 +270,10 @@ def _process_ediff1d_args(arg, arg_name, ary_dtype, ary_sycl_queue, usm_type):
270270
if not dpnp.is_supported_array_type(arg):
271271
arg = dpnp.asarray(arg, usm_type=usm_type, sycl_queue=ary_sycl_queue)
272272
else:
273-
usm_type = dpu.get_coerced_usm_type([usm_type, arg.usm_type])
273+
usm_type = dpt.get_coerced_usm_type([usm_type, arg.usm_type])
274274
# check that arrays have the same allocation queue
275-
if dpu.get_execution_queue([ary_sycl_queue, arg.sycl_queue]) is None:
276-
raise dpu.ExecutionPlacementError(
275+
if dpt.get_execution_queue([ary_sycl_queue, arg.sycl_queue]) is None:
276+
raise dpt.ExecutionPlacementError(
277277
f"ary and {arg_name} must be allocated on the same SYCL queue"
278278
)
279279

@@ -304,7 +304,7 @@ def _validate_interp_param(param, name, exec_q, usm_type, dtype=None):
304304
f"a {name} value must be 0-dimensional, "
305305
f"but got {param.ndim}-dim"
306306
)
307-
if dpu.get_execution_queue([exec_q, param.sycl_queue]) is None:
307+
if dpt.get_execution_queue([exec_q, param.sycl_queue]) is None:
308308
raise ValueError(
309309
f"input arrays and {name} must be allocated "
310310
"on the same SYCL queue"
@@ -2721,7 +2721,7 @@ def gradient(f, *varargs, axis=None, edge_order=1):
27212721
if dpnp.isscalar(ax_dx):
27222722
usm_type = f.usm_type
27232723
else:
2724-
usm_type = dpu.get_coerced_usm_type([f.usm_type, ax_dx.usm_type])
2724+
usm_type = dpt.get_coerced_usm_type([f.usm_type, ax_dx.usm_type])
27252725
out = dpnp.empty_like(f, dtype=otype, usm_type=usm_type)
27262726

27272727
# spacing for the current axis

dpnp/dpnp_iface_statistics.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -670,7 +670,7 @@ def _run_native_sliding_dot_product1d(a, v, l_pad, r_pad, rdtype):
670670
a_casted = dpnp.asarray(a, dtype=supported_dtype, order="C")
671671
v_casted = dpnp.asarray(v, dtype=supported_dtype, order="C")
672672

673-
usm_type = dpu.get_coerced_usm_type([a_casted.usm_type, v_casted.usm_type])
673+
usm_type = dpt.get_coerced_usm_type([a_casted.usm_type, v_casted.usm_type])
674674
out_size = l_pad + r_pad + a_casted.size - v_casted.size + 1
675675
# out type is the same as input type
676676
out = dpnp.empty_like(a_casted, shape=out_size, usm_type=usm_type)

0 commit comments

Comments
 (0)