Skip to content

Commit 96b80e8

Browse files
committed
pare down tensor test suite
1 parent 2bdf8d9 commit 96b80e8

49 files changed

Lines changed: 369 additions & 3364 deletions

Some content is hidden

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

dpnp/tests/tensor/elementwise/test_abs.py

Lines changed: 43 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,10 @@
2727
# *****************************************************************************
2828

2929
import itertools
30+
import re
3031
import warnings
3132

33+
import dpctl
3234
import numpy as np
3335
import pytest
3436

@@ -42,7 +44,6 @@
4244
_all_dtypes,
4345
_complex_fp_dtypes,
4446
_real_fp_dtypes,
45-
_usm_types,
4647
)
4748

4849

@@ -71,33 +72,6 @@ def test_abs_out_type(dtype):
7172
assert np.allclose(dpt.asnumpy(r), dpt.asnumpy(dpt.abs(X)))
7273

7374

74-
@pytest.mark.parametrize("usm_type", _usm_types)
75-
def test_abs_usm_type(usm_type):
76-
q = get_queue_or_skip()
77-
78-
arg_dt = np.dtype("i4")
79-
input_shape = (10, 10, 10, 10)
80-
X = dpt.empty(input_shape, dtype=arg_dt, usm_type=usm_type, sycl_queue=q)
81-
X[..., 0::2] = 1
82-
X[..., 1::2] = 0
83-
84-
Y = dpt.abs(X)
85-
assert Y.usm_type == X.usm_type
86-
assert Y.sycl_queue == X.sycl_queue
87-
assert Y.flags.c_contiguous
88-
89-
expected_Y = dpt.asnumpy(X)
90-
assert np.allclose(dpt.asnumpy(Y), expected_Y)
91-
92-
93-
def test_abs_types_property():
94-
get_queue_or_skip()
95-
types = dpt.abs.types
96-
assert isinstance(types, list)
97-
assert len(types) > 0
98-
assert types == dpt.abs.types_
99-
100-
10175
@pytest.mark.parametrize("dtype", _all_dtypes[1:])
10276
def test_abs_order(dtype):
10377
q = get_queue_or_skip()
@@ -222,3 +196,44 @@ def test_abs_alignment(dtype):
222196

223197
dpt.abs(x[:-1], out=r[1:])
224198
assert np.allclose(dpt.asnumpy(r[1:]), dpt.asnumpy(r2))
199+
200+
201+
def test_abs_errors():
202+
q1 = get_queue_or_skip()
203+
q2 = dpctl.SyclQueue()
204+
205+
x = dpt.ones(2, dtype="float32", sycl_queue=q1)
206+
y = dpt.empty_like(x, sycl_queue=q2)
207+
with pytest.raises(dpt.ExecutionPlacementError) as excinfo:
208+
dpt.abs(x, out=y)
209+
assert "Input and output allocation queues are not compatible" in str(
210+
excinfo.value
211+
)
212+
213+
x = dpt.ones(2, dtype="float32")
214+
y = dpt.empty(3, dtype=x.dtype)
215+
with pytest.raises(ValueError) as excinfo:
216+
dpt.abs(x, out=y)
217+
assert "The shape of input and output arrays are inconsistent" in str(
218+
excinfo.value
219+
)
220+
221+
x = np.ones(2, dtype="float32")
222+
with pytest.raises(TypeError) as excinfo:
223+
dpt.abs(x)
224+
assert re.match(
225+
"Expected dpnp.tensor.usm_ndarray, got.*",
226+
str(excinfo.value),
227+
)
228+
229+
x = dpt.ones(2, dtype="float32")
230+
y = np.empty(x.shape, dtype=x.dtype)
231+
with pytest.raises(TypeError) as excinfo:
232+
dpt.abs(x, out=y)
233+
assert "output array must be of usm_ndarray type" in str(excinfo.value)
234+
235+
x = dpt.ones(5, dtype="f4")
236+
y = dpt.zeros_like(x, dtype="int8")
237+
with pytest.raises(ValueError) as excinfo:
238+
dpt.abs(x, out=y)
239+
assert re.match("Output array of type.*is needed", str(excinfo.value))

dpnp/tests/tensor/elementwise/test_add.py

Lines changed: 15 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@
4343
from .utils import (
4444
_all_dtypes,
4545
_compare_dtypes,
46-
_usm_types,
4746
)
4847

4948

@@ -89,21 +88,6 @@ def test_add_dtype_matrix(op1_dtype, op2_dtype):
8988
assert (dpt.asnumpy(r2) == np.full(r2.shape, 2, dtype=r2.dtype)).all()
9089

9190

92-
@pytest.mark.parametrize("op1_usm_type", _usm_types)
93-
@pytest.mark.parametrize("op2_usm_type", _usm_types)
94-
def test_add_usm_type_matrix(op1_usm_type, op2_usm_type):
95-
get_queue_or_skip()
96-
97-
sz = 128
98-
ar1 = dpt.ones(sz, dtype="i4", usm_type=op1_usm_type)
99-
ar2 = dpt.ones_like(ar1, dtype="i4", usm_type=op2_usm_type)
100-
101-
r = dpt.add(ar1, ar2)
102-
assert isinstance(r, dpt.usm_ndarray)
103-
expected_usm_type = dpt.get_coerced_usm_type((op1_usm_type, op2_usm_type))
104-
assert r.usm_type == expected_usm_type
105-
106-
10791
def test_add_order():
10892
get_queue_or_skip()
10993

@@ -283,23 +267,17 @@ def test_add_types_property():
283267

284268

285269
def test_add_errors():
286-
get_queue_or_skip()
287-
try:
288-
gpu_queue = dpctl.SyclQueue("gpu")
289-
except dpctl.SyclQueueCreationError:
290-
pytest.skip("SyclQueue('gpu') failed, skipping")
291-
try:
292-
cpu_queue = dpctl.SyclQueue("cpu")
293-
except dpctl.SyclQueueCreationError:
294-
pytest.skip("SyclQueue('cpu') failed, skipping")
295-
296-
ar1 = dpt.ones(2, dtype="float32", sycl_queue=gpu_queue)
297-
ar2 = dpt.ones_like(ar1, sycl_queue=gpu_queue)
298-
y = dpt.empty_like(ar1, sycl_queue=cpu_queue)
270+
q1 = get_queue_or_skip()
271+
q2 = dpctl.SyclQueue()
272+
273+
ar1 = dpt.ones(2, dtype="float32", sycl_queue=q1)
274+
ar2 = dpt.ones_like(ar1, dtype="float32", sycl_queue=q2)
275+
y = dpt.empty_like(ar1, sycl_queue=q2)
299276
with pytest.raises(dpt.ExecutionPlacementError) as excinfo:
300277
dpt.add(ar1, ar2, out=y)
301-
assert "Input and output allocation queues are not compatible" in str(
302-
excinfo.value
278+
assert re.match(
279+
"Execution placement can not be unambiguously inferred.*",
280+
str(excinfo.value),
303281
)
304282

305283
ar1 = dpt.ones(2, dtype="float32")
@@ -327,17 +305,8 @@ def test_add_errors():
327305
dpt.add(ar1, ar2, out=y)
328306
assert "output array must be of usm_ndarray type" in str(excinfo.value)
329307

330-
331-
@pytest.mark.parametrize("dtype", _all_dtypes)
332-
def test_add_dtype_error(
333-
dtype,
334-
):
335-
q = get_queue_or_skip()
336-
skip_if_dtype_not_supported(dtype, q)
337-
338-
ar1 = dpt.ones(5, dtype=dtype)
308+
ar1 = dpt.ones(5, dtype="f4")
339309
ar2 = dpt.ones_like(ar1, dtype="f4")
340-
341310
y = dpt.zeros_like(ar1, dtype="int8")
342311
with pytest.raises(ValueError) as excinfo:
343312
dpt.add(ar1, ar2, out=y)
@@ -469,39 +438,12 @@ def test_add_inplace_operator_mutual_broadcast():
469438

470439

471440
def test_add_inplace_errors():
472-
get_queue_or_skip()
473-
try:
474-
gpu_queue = dpctl.SyclQueue("gpu")
475-
except dpctl.SyclQueueCreationError:
476-
pytest.skip("SyclQueue('gpu') failed, skipping")
477-
try:
478-
cpu_queue = dpctl.SyclQueue("cpu")
479-
except dpctl.SyclQueueCreationError:
480-
pytest.skip("SyclQueue('cpu') failed, skipping")
481-
482-
ar1 = dpt.ones(2, dtype="float32", sycl_queue=gpu_queue)
483-
ar2 = dpt.ones_like(ar1, sycl_queue=cpu_queue)
484-
with pytest.raises(dpt.ExecutionPlacementError):
485-
dpt.add(ar1, ar2, out=ar1)
486-
487-
ar1 = dpt.ones(2, dtype="float32")
488-
ar2 = dpt.ones(3, dtype="float32")
489-
with pytest.raises(ValueError):
490-
dpt.add(ar1, ar2, out=ar1)
491-
492-
ar1 = np.ones(2, dtype="float32")
493-
ar2 = dpt.ones(2, dtype="float32")
494-
with pytest.raises(TypeError):
495-
dpt.add(ar1, ar2, out=ar1)
496-
497-
ar1 = dpt.ones(2, dtype="float32")
498-
ar2 = {}
499-
with pytest.raises(ValueError):
500-
dpt.add(ar1, ar2, out=ar1)
441+
q1 = get_queue_or_skip()
442+
q2 = dpctl.SyclQueue()
501443

502-
ar1 = dpt.ones((2, 1), dtype="float32")
503-
ar2 = dpt.ones((1, 2), dtype="float32")
504-
with pytest.raises(ValueError):
444+
ar1 = dpt.ones(2, dtype="float32", sycl_queue=q1)
445+
ar2 = dpt.ones_like(ar1, sycl_queue=q2)
446+
with pytest.raises(dpt.ExecutionPlacementError):
505447
dpt.add(ar1, ar2, out=ar1)
506448

507449

dpnp/tests/tensor/elementwise/test_atan2.py

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@
2626
# THE POSSIBILITY OF SUCH DAMAGE.
2727
# *****************************************************************************
2828

29-
import ctypes
30-
3129
import numpy as np
3230
import pytest
3331
from numpy.testing import assert_allclose
@@ -86,26 +84,6 @@ def test_atan2_dtype_matrix(op1_dtype, op2_dtype):
8684
assert_allclose(dpt.asnumpy(r), expected, atol=tol, rtol=tol)
8785

8886

89-
@pytest.mark.parametrize("arr_dt", _no_complex_dtypes[1:])
90-
def test_atan2_python_scalar(arr_dt):
91-
q = get_queue_or_skip()
92-
skip_if_dtype_not_supported(arr_dt, q)
93-
94-
X = dpt.ones((10, 10), dtype=arr_dt, sycl_queue=q)
95-
py_ones = (
96-
bool(1),
97-
int(1),
98-
float(1),
99-
np.float32(1),
100-
ctypes.c_int(1),
101-
)
102-
for sc in py_ones:
103-
R = dpt.atan2(X, sc)
104-
assert isinstance(R, dpt.usm_ndarray)
105-
R = dpt.atan2(sc, X)
106-
assert isinstance(R, dpt.usm_ndarray)
107-
108-
10987
@pytest.mark.parametrize("dt", ["f2", "f4", "f8"])
11088
def test_atan2_special_case_one_nan(dt):
11189
"""If either x1_i or x2_i is NaN, the result is NaN."""
@@ -212,7 +190,7 @@ def test_atan2_special_case_pzero_and_nzero(dt):
212190

213191

214192
@pytest.mark.parametrize("dt", ["f2", "f4", "f8"])
215-
def test_atan2_special_case_pzero_and_negatvie(dt):
193+
def test_atan2_special_case_pzero_and_negative(dt):
216194
"""
217195
If x1_i is +0 and x2_i is less than 0, the result
218196
is an approximation to +pi.

dpnp/tests/tensor/elementwise/test_bitwise_and.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -103,18 +103,6 @@ def test_bitwise_and_bool():
103103
assert dpt.all(dpt.equal(r_bw, r_lo))
104104

105105

106-
@pytest.mark.parametrize("dtype", ["?"] + _integral_dtypes)
107-
def test_bitwise_and_inplace_python_scalar(dtype):
108-
q = get_queue_or_skip()
109-
skip_if_dtype_not_supported(dtype, q)
110-
X = dpt.zeros((10, 10), dtype=dtype, sycl_queue=q)
111-
dt_kind = X.dtype.kind
112-
if dt_kind == "b":
113-
X &= False
114-
else:
115-
X &= int(0)
116-
117-
118106
@pytest.mark.parametrize("op1_dtype", ["?"] + _integral_dtypes)
119107
@pytest.mark.parametrize("op2_dtype", ["?"] + _integral_dtypes)
120108
def test_bitwise_and_inplace_dtype_matrix(op1_dtype, op2_dtype):

dpnp/tests/tensor/elementwise/test_bitwise_invert.py

Lines changed: 0 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
from .utils import (
3939
_compare_dtypes,
4040
_integral_dtypes,
41-
_usm_types,
4241
)
4342

4443

@@ -92,52 +91,6 @@ def test_bitwise_invert_dtype_matrix(op_dtype):
9291
assert dpt.all(dpt.equal(r, r3))
9392

9493

95-
@pytest.mark.parametrize("op_usm_type", _usm_types)
96-
def test_bitwise_invert_usm_type_matrix(op_usm_type):
97-
get_queue_or_skip()
98-
99-
sz = 128
100-
ar1 = dpt.asarray(
101-
np.random.randint(0, 2, sz), dtype="i4", usm_type=op_usm_type
102-
)
103-
104-
r = dpt.bitwise_invert(ar1)
105-
assert isinstance(r, dpt.usm_ndarray)
106-
assert r.usm_type == op_usm_type
107-
108-
109-
def test_bitwise_invert_order():
110-
get_queue_or_skip()
111-
112-
ar1 = dpt.ones((20, 20), dtype="i4", order="C")
113-
r1 = dpt.bitwise_invert(ar1, order="C")
114-
assert r1.flags.c_contiguous
115-
r2 = dpt.bitwise_invert(ar1, order="F")
116-
assert r2.flags.f_contiguous
117-
r3 = dpt.bitwise_invert(ar1, order="A")
118-
assert r3.flags.c_contiguous
119-
r4 = dpt.bitwise_invert(ar1, order="K")
120-
assert r4.flags.c_contiguous
121-
122-
ar1 = dpt.zeros((20, 20), dtype="i4", order="F")
123-
r1 = dpt.bitwise_invert(ar1, order="C")
124-
assert r1.flags.c_contiguous
125-
r2 = dpt.bitwise_invert(ar1, order="F")
126-
assert r2.flags.f_contiguous
127-
r3 = dpt.bitwise_invert(ar1, order="A")
128-
assert r3.flags.f_contiguous
129-
r4 = dpt.bitwise_invert(ar1, order="K")
130-
assert r4.flags.f_contiguous
131-
132-
ar1 = dpt.ones((40, 40), dtype="i4", order="C")[:20, ::-2]
133-
r4 = dpt.bitwise_invert(ar1, order="K")
134-
assert r4.strides == (20, -1)
135-
136-
ar1 = dpt.zeros((40, 40), dtype="i4", order="C")[:20, ::-2].mT
137-
r4 = dpt.bitwise_invert(ar1, order="K")
138-
assert r4.strides == (-1, 20)
139-
140-
14194
def test_bitwise_invert_large_boolean():
14295
get_queue_or_skip()
14396

dpnp/tests/tensor/elementwise/test_bitwise_left_shift.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -115,14 +115,6 @@ def test_bitwise_left_shift_range(op_dtype):
115115
assert dpt.all(dpt.equal(z, 0))
116116

117117

118-
@pytest.mark.parametrize("dtype", _integral_dtypes)
119-
def test_bitwise_left_shift_inplace_python_scalar(dtype):
120-
q = get_queue_or_skip()
121-
skip_if_dtype_not_supported(dtype, q)
122-
X = dpt.zeros((10, 10), dtype=dtype, sycl_queue=q)
123-
X <<= int(0)
124-
125-
126118
@pytest.mark.parametrize("op1_dtype", _integral_dtypes)
127119
@pytest.mark.parametrize("op2_dtype", _integral_dtypes)
128120
def test_bitwise_left_shift_inplace_dtype_matrix(op1_dtype, op2_dtype):

dpnp/tests/tensor/elementwise/test_bitwise_or.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -103,18 +103,6 @@ def test_bitwise_or_bool():
103103
assert dpt.all(dpt.equal(r_bw, r_lo))
104104

105105

106-
@pytest.mark.parametrize("dtype", ["?"] + _integral_dtypes)
107-
def test_bitwise_or_inplace_python_scalar(dtype):
108-
q = get_queue_or_skip()
109-
skip_if_dtype_not_supported(dtype, q)
110-
X = dpt.zeros((10, 10), dtype=dtype, sycl_queue=q)
111-
dt_kind = X.dtype.kind
112-
if dt_kind == "b":
113-
X |= False
114-
else:
115-
X |= int(0)
116-
117-
118106
@pytest.mark.parametrize("op1_dtype", ["?"] + _integral_dtypes)
119107
@pytest.mark.parametrize("op2_dtype", ["?"] + _integral_dtypes)
120108
def test_bitwise_or_inplace_dtype_matrix(op1_dtype, op2_dtype):

dpnp/tests/tensor/elementwise/test_bitwise_right_shift.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -115,14 +115,6 @@ def test_bitwise_right_shift_range(op_dtype):
115115
assert dpt.all(dpt.equal(z, 0))
116116

117117

118-
@pytest.mark.parametrize("dtype", _integral_dtypes)
119-
def test_bitwise_right_shift_inplace_python_scalar(dtype):
120-
q = get_queue_or_skip()
121-
skip_if_dtype_not_supported(dtype, q)
122-
X = dpt.zeros((10, 10), dtype=dtype, sycl_queue=q)
123-
X >>= int(0)
124-
125-
126118
@pytest.mark.parametrize("op1_dtype", _integral_dtypes)
127119
@pytest.mark.parametrize("op2_dtype", _integral_dtypes)
128120
def test_bitwise_right_shift_inplace_dtype_matrix(op1_dtype, op2_dtype):

0 commit comments

Comments
 (0)