Skip to content

Commit cda4574

Browse files
Changes test_func_order tests for unary functions
The change is to iterate over permutations first, doing some work that does not depend on the order, and then iterate over orders. This should save doing some computations 4 times (once for each order), now only done once.
1 parent 6ae9f3d commit cda4574

16 files changed

+77
-73
lines changed

dpctl/tests/elementwise/test_abs.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,18 +84,19 @@ def test_abs_order(dtype):
8484
skip_if_dtype_not_supported(dtype, q)
8585

8686
arg_dt = np.dtype(dtype)
87+
exp_dt = np.abs(np.ones(tuple(), dtype=arg_dt)).dtype
8788
input_shape = (10, 10, 10, 10)
8889
X = dpt.empty(input_shape, dtype=arg_dt, sycl_queue=q)
8990
X[..., 0::2] = 1
9091
X[..., 1::2] = 0
9192

92-
for ord in ["C", "F", "A", "K"]:
93-
for perms in itertools.permutations(range(4)):
94-
U = dpt.permute_dims(X[:, ::-1, ::-1, :], perms)
93+
for perms in itertools.permutations(range(4)):
94+
U = dpt.permute_dims(X[:, ::-1, ::-1, :], perms)
95+
expected_Y = np.ones(U.shape, dtype=exp_dt)
96+
expected_Y[..., 1::2] = 0
97+
expected_Y = np.transpose(expected_Y, perms)
98+
for ord in ["C", "F", "A", "K"]:
9599
Y = dpt.abs(U, order=ord)
96-
expected_Y = np.ones(Y.shape, dtype=Y.dtype)
97-
expected_Y[..., 1::2] = 0
98-
expected_Y = np.transpose(expected_Y, perms)
99100
assert np.allclose(dpt.asnumpy(Y), expected_Y)
100101

101102

dpctl/tests/elementwise/test_complex.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ def test_complex_order(np_call, dpt_call, dtype):
120120
expected_Y = np_call(dpt.asnumpy(U))
121121
for ord in ["C", "F", "A", "K"]:
122122
Y = dpt_call(U, order=ord)
123-
assert np.allclose(dpt.asnumpy(Y), expected_Y)
123+
assert_allclose(dpt.asnumpy(Y), expected_Y)
124124

125125

126126
@pytest.mark.parametrize("dtype", ["c8", "c16"])

dpctl/tests/elementwise/test_exp2.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,11 +103,11 @@ def test_exp2_order(dtype):
103103
X[..., 0::2] = 1 / 4
104104
X[..., 1::2] = 1 / 2
105105

106-
for ord in ["C", "F", "A", "K"]:
107-
for perms in itertools.permutations(range(4)):
108-
U = dpt.permute_dims(X[:, ::-1, ::-1, :], perms)
106+
for perms in itertools.permutations(range(4)):
107+
U = dpt.permute_dims(X[:, ::-1, ::-1, :], perms)
108+
expected_Y = np.exp2(dpt.asnumpy(U))
109+
for ord in ["C", "F", "A", "K"]:
109110
Y = dpt.exp2(U, order=ord)
110-
expected_Y = np.exp2(dpt.asnumpy(U))
111111
tol = 8 * max(
112112
dpt.finfo(Y.dtype).resolution,
113113
np.finfo(expected_Y.dtype).resolution,

dpctl/tests/elementwise/test_expm1.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,11 +103,11 @@ def test_expm1_order(dtype):
103103
X[..., 0::2] = 1 / 50
104104
X[..., 1::2] = 1 / 25
105105

106-
for ord in ["C", "F", "A", "K"]:
107-
for perms in itertools.permutations(range(4)):
108-
U = dpt.permute_dims(X[:, ::-1, ::-1, :], perms)
106+
for perms in itertools.permutations(range(4)):
107+
U = dpt.permute_dims(X[:, ::-1, ::-1, :], perms)
108+
expected_Y = np.expm1(dpt.asnumpy(U))
109+
for ord in ["C", "F", "A", "K"]:
109110
Y = dpt.expm1(U, order=ord)
110-
expected_Y = np.expm1(dpt.asnumpy(U))
111111
tol = 8 * max(
112112
dpt.finfo(Y.dtype).resolution,
113113
np.finfo(expected_Y.dtype).resolution,

dpctl/tests/elementwise/test_isfinite.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import numpy as np
2020
import pytest
21+
from numpy.testing import assert_allclose
2122

2223
import dpctl.tensor as dpt
2324
from dpctl.tests.helper import get_queue_or_skip, skip_if_dtype_not_supported
@@ -90,9 +91,9 @@ def test_isfinite_order(dtype):
9091
input_shape = (10, 10, 10, 10)
9192
X = dpt.ones(input_shape, dtype=arg_dt, sycl_queue=q)
9293

93-
for ord in ["C", "F", "A", "K"]:
94-
for perms in itertools.permutations(range(4)):
95-
U = dpt.permute_dims(X[::2, ::-1, ::-1, ::5], perms)
94+
for perms in itertools.permutations(range(4)):
95+
U = dpt.permute_dims(X[::2, ::-1, ::-1, ::5], perms)
96+
expected_Y = np.full(U.shape, fill_value=True, dtype=dpt.bool)
97+
for ord in ["C", "F", "A", "K"]:
9698
Y = dpt.isfinite(U, order=ord)
97-
expected_Y = np.full(Y.shape, True, dtype=Y.dtype)
98-
assert np.allclose(dpt.asnumpy(Y), expected_Y)
99+
assert_allclose(dpt.asnumpy(Y), expected_Y)

dpctl/tests/elementwise/test_isinf.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import numpy as np
2020
import pytest
21+
from numpy.testing import assert_allclose
2122

2223
import dpctl.tensor as dpt
2324
from dpctl.tests.helper import get_queue_or_skip, skip_if_dtype_not_supported
@@ -84,9 +85,9 @@ def test_isinf_order(dtype):
8485
input_shape = (10, 10, 10, 10)
8586
X = dpt.ones(input_shape, dtype=arg_dt, sycl_queue=q)
8687

87-
for ord in ["C", "F", "A", "K"]:
88-
for perms in itertools.permutations(range(4)):
89-
U = dpt.permute_dims(X[::2, ::-1, ::-1, ::5], perms)
88+
for perms in itertools.permutations(range(4)):
89+
U = dpt.permute_dims(X[::2, ::-1, ::-1, ::5], perms)
90+
expected_Y = np.full(U.shape, fill_value=False, dtype=dpt.bool)
91+
for ord in ["C", "F", "A", "K"]:
9092
Y = dpt.isinf(U, order=ord)
91-
expected_Y = np.full(Y.shape, False, dtype=Y.dtype)
92-
assert np.allclose(dpt.asnumpy(Y), expected_Y)
93+
assert_allclose(dpt.asnumpy(Y), expected_Y)

dpctl/tests/elementwise/test_isnan.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,9 @@ def test_isnan_order(dtype):
9090
input_shape = (10, 10, 10, 10)
9191
X = dpt.ones(input_shape, dtype=arg_dt, sycl_queue=q)
9292

93-
for ord in ["C", "F", "A", "K"]:
94-
for perms in itertools.permutations(range(4)):
95-
U = dpt.permute_dims(X[::2, ::-1, ::-1, ::5], perms)
93+
for perms in itertools.permutations(range(4)):
94+
U = dpt.permute_dims(X[::2, ::-1, ::-1, ::5], perms)
95+
expected_Y = np.full(U.shape, fill_value=False, dtype=dpt.bool)
96+
for ord in ["C", "F", "A", "K"]:
9697
Y = dpt.isnan(U, order=ord)
97-
expected_Y = np.full(Y.shape, False, dtype=Y.dtype)
9898
assert np.allclose(dpt.asnumpy(Y), expected_Y)

dpctl/tests/elementwise/test_log.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,11 +103,11 @@ def test_log_order(dtype):
103103
X[..., 0::2] = 4 * dpt.e
104104
X[..., 1::2] = 10 * dpt.e
105105

106-
for ord in ["C", "F", "A", "K"]:
107-
for perms in itertools.permutations(range(4)):
108-
U = dpt.permute_dims(X[:, ::-1, ::-1, :], perms)
106+
for perms in itertools.permutations(range(4)):
107+
U = dpt.permute_dims(X[:, ::-1, ::-1, :], perms)
108+
expected_Y = np.log(dpt.asnumpy(U))
109+
for ord in ["C", "F", "A", "K"]:
109110
Y = dpt.log(U, order=ord)
110-
expected_Y = np.log(dpt.asnumpy(U))
111111
tol = 8 * max(
112112
dpt.finfo(Y.dtype).resolution,
113113
np.finfo(expected_Y.dtype).resolution,

dpctl/tests/elementwise/test_log10.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,11 +107,11 @@ def test_log_order(dtype):
107107
X[..., 0::2] = 4 * dpt.e
108108
X[..., 1::2] = 10 * dpt.e
109109

110-
for ord in ["C", "F", "A", "K"]:
111-
for perms in itertools.permutations(range(4)):
112-
U = dpt.permute_dims(X[:, ::-1, ::-1, :], perms)
110+
for perms in itertools.permutations(range(4)):
111+
U = dpt.permute_dims(X[:, ::-1, ::-1, :], perms)
112+
expected_Y = np.log10(dpt.asnumpy(U))
113+
for ord in ["C", "F", "A", "K"]:
113114
Y = dpt.log10(U, order=ord)
114-
expected_Y = np.log10(dpt.asnumpy(U))
115115
tol = 8 * max(
116116
dpt.finfo(Y.dtype).resolution,
117117
np.finfo(expected_Y.dtype).resolution,

dpctl/tests/elementwise/test_log1p.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,11 +103,11 @@ def test_log1p_order(dtype):
103103
X[..., 0::2] = dpt.e / 1000
104104
X[..., 1::2] = dpt.e / 100
105105

106-
for ord in ["C", "F", "A", "K"]:
107-
for perms in itertools.permutations(range(4)):
108-
U = dpt.permute_dims(X[:, ::-1, ::-1, :], perms)
106+
for perms in itertools.permutations(range(4)):
107+
U = dpt.permute_dims(X[:, ::-1, ::-1, :], perms)
108+
expected_Y = np.log1p(dpt.asnumpy(U))
109+
for ord in ["C", "F", "A", "K"]:
109110
Y = dpt.log1p(U, order=ord)
110-
expected_Y = np.log1p(dpt.asnumpy(U))
111111
tol = 8 * max(
112112
dpt.finfo(Y.dtype).resolution,
113113
np.finfo(expected_Y.dtype).resolution,

0 commit comments

Comments
 (0)