Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 29 additions & 19 deletions dpnp/tests/test_linalg.py
Original file line number Diff line number Diff line change
Expand Up @@ -567,7 +567,7 @@ def test_eigenvalue_errors(self, func):


class TestEinsum:
def test_einsum_trivial_cases(self):
def test_trivial_cases(self):
a = dpnp.arange(25).reshape(5, 5)
b = dpnp.arange(5)
a_np = a.asnumpy()
Expand All @@ -593,15 +593,25 @@ def test_einsum_trivial_cases(self):
expected = numpy.einsum("i,i,i", b_np, b_np, b_np, optimize="greedy")
assert_dtype_allclose(result, expected)

def test_einsum_out(self):
def test_out(self):
a = dpnp.ones((5, 5))
out = dpnp.empty((5,))
result = dpnp.einsum("ii->i", a, out=out)
assert result is out
expected = numpy.einsum("ii->i", a.asnumpy())
assert_dtype_allclose(result, expected)

def test_einsum_error1(self):
def test_out_0d(self):
a = numpy.ones(7, dtype=int)
out = numpy.array(0, dtype=a.dtype)
ia, iout = dpnp.array(a), dpnp.array(out)

result = dpnp.einsum("i,i->", ia, ia, out=iout, optimize="optimal")
expected = numpy.einsum("i,i->", a, a, out=out, optimize="optimal")
assert_dtype_allclose(result, expected)
assert result is iout

def test_error1(self):
a = dpnp.ones((5, 5))
out = dpnp.empty((5,), sycl_queue=dpctl.SyclQueue())
# inconsistent sycl_queue
Expand All @@ -623,7 +633,7 @@ def test_einsum_error1(self):

@pytest.mark.parametrize("do_opt", [True, False])
@pytest.mark.parametrize("xp", [numpy, dpnp])
def test_einsum_error2(self, do_opt, xp):
def test_error2(self, do_opt, xp):
a = xp.asarray(0)
b = xp.asarray([0])
c = xp.asarray([0, 0])
Expand Down Expand Up @@ -682,7 +692,7 @@ def test_einsum_error2(self, do_opt, xp):

@pytest.mark.parametrize("do_opt", [True, False])
@pytest.mark.parametrize("xp", [numpy, dpnp])
def test_einsum_specific_errors(self, do_opt, xp):
def test_specific_errors(self, do_opt, xp):
a = xp.asarray(0)
# out parameter must be an array
assert_raises(TypeError, xp.einsum, "", a, out="test", optimize=do_opt)
Expand Down Expand Up @@ -1201,35 +1211,35 @@ def check_einsum_sums(self, dtype, do_opt=False):
numpy.einsum("ij,i->", a, b, optimize=do_opt),
)

def test_einsum_sums_int32(self):
def test_sums_int32(self):
self.check_einsum_sums("i4")
self.check_einsum_sums("i4", True)

def test_einsum_sums_uint32(self):
def test_sums_uint32(self):
self.check_einsum_sums("u4")
self.check_einsum_sums("u4", True)

def test_einsum_sums_int64(self):
def test_sums_int64(self):
self.check_einsum_sums("i8")

def test_einsum_sums_uint64(self):
def test_sums_uint64(self):
self.check_einsum_sums("u8")

def test_einsum_sums_float32(self):
def test_sums_float32(self):
self.check_einsum_sums("f4")

def test_einsum_sums_float64(self):
def test_sums_float64(self):
self.check_einsum_sums("f8")
self.check_einsum_sums("f8", True)

def test_einsum_sums_cfloat64(self):
def test_sums_cfloat64(self):
self.check_einsum_sums("c8")
self.check_einsum_sums("c8", True)

def test_einsum_sums_cfloat128(self):
def test_sums_cfloat128(self):
self.check_einsum_sums("c16")

def test_einsum_misc(self):
def test_misc(self):
for opt in [True, False]:
a = numpy.ones((1, 2))
b = numpy.ones((2, 2, 1))
Expand Down Expand Up @@ -1289,7 +1299,7 @@ def test_subscript_range(self):
assert_raises(ValueError, dpnp.einsum, a, [0, 52], b, [52, 2], [0, 2])
assert_raises(ValueError, dpnp.einsum, a, [-1, 5], b, [5, 2], [-1, 2])

def test_einsum_broadcast(self):
def test_broadcast(self):
a = numpy.arange(2 * 3 * 4).reshape(2, 3, 4)
b = numpy.arange(3)
a_dp = dpnp.array(a)
Expand Down Expand Up @@ -1367,7 +1377,7 @@ def test_einsum_broadcast(self):
expected,
)

def test_einsum_stride(self):
def test_stride(self):
a = numpy.arange(2 * 3).reshape(2, 3).astype(numpy.float32)
b = numpy.arange(2 * 3 * 2731).reshape(2, 3, 2731).astype(numpy.int16)
a_dp = dpnp.array(a)
Expand All @@ -1385,7 +1395,7 @@ def test_einsum_stride(self):
result = dpnp.einsum("cl, cpxy->lpxy", a_dp, b_dp)
assert_dtype_allclose(result, expected)

def test_einsum_collapsing(self):
def test_collapsing(self):
x = numpy.random.normal(0, 1, (5, 5, 5, 5))
y = numpy.zeros((5, 5))
expected = numpy.einsum("aabb->ab", x, out=y)
Expand All @@ -1395,7 +1405,7 @@ def test_einsum_collapsing(self):
assert result is y_dp
assert_dtype_allclose(result, expected)

def test_einsum_tensor(self):
def test_tensor(self):
tensor = numpy.random.random_sample((10, 10, 10, 10))
tensor_dp = dpnp.array(tensor)
expected = numpy.einsum("ijij->", tensor)
Expand Down Expand Up @@ -1657,7 +1667,7 @@ def test_output_order(self):
tmp = dpnp.einsum("...ft,mf->...mt", d, c, order="a", optimize=opt)
assert tmp.flags.c_contiguous

def test_einsum_path(self):
def test_path(self):
# Test einsum path for covergae
a = numpy.random.rand(1, 2, 3, 4)
b = numpy.random.rand(4, 3, 2, 1)
Expand Down
Loading