def test_add_with_out(): t1 = ones((3, 4), chunk_size=2) t2 = ones(4, chunk_size=2) t3 = add(t1, t2, out=t1) assert isinstance(t1.op, TensorAdd) assert t1.op.out.key == t1.op.lhs.key assert t3 is t1 assert t3.shape == (3, 4) assert t3.op.lhs.extra_params.raw_chunk_size == 2 assert t3.op.rhs is t2.data assert t3.key != t3.op.lhs.key t1, t3 = tile(t1, t3) assert isinstance(t1.chunks[0].op, TensorAdd) assert t1.chunks[0].op.out.key == t1.chunks[0].op.lhs.key with pytest.raises(TypeError): add(t1, t2, out=1) with pytest.raises(ValueError): add(t1, t2, out=t2) with pytest.raises(TypeError): truediv(t1, t2, out=t1.astype('i8')) t1 = ones((3, 4), chunk_size=2, dtype=float) t2 = ones(4, chunk_size=2, dtype=int) t3 = add(t2, 1, out=t1) assert t3.shape == (3, 4) assert t3.dtype == np.float64
def testAddWithOut(self): t1 = ones((3, 4), chunk_size=2) t2 = ones(4, chunk_size=2) t3 = add(t1, t2, out=t1) self.assertIsInstance(t1.op, TensorAdd) self.assertEqual(t1.op.out.key, t1.op.lhs.key) self.assertIs(t3, t1) self.assertEqual(t3.shape, (3, 4)) self.assertEqual(t3.op.lhs.extra_params.raw_chunk_size, 2) self.assertIs(t3.op.rhs, t2.data) self.assertNotEqual(t3.key, t3.op.lhs.key) t3.tiles() self.assertIsInstance(t1.chunks[0].op, TensorAdd) self.assertEqual(t1.chunks[0].op.out.key, t1.chunks[0].op.lhs.key) with self.assertRaises(TypeError): add(t1, t2, out=1) with self.assertRaises(ValueError): add(t1, t2, out=t2) with self.assertRaises(TypeError): truediv(t1, t2, out=t1.astype('i8')) t1 = ones((3, 4), chunk_size=2, dtype=float) t2 = ones(4, chunk_size=2, dtype=int) t3 = add(t2, 1, out=t1) self.assertEqual(t3.shape, (3, 4)) self.assertEqual(t3.dtype, np.float64)
def testDtype(self): t1 = ones((2, 3), dtype='f4', chunk_size=2) t = truediv(t1, 2, dtype='f8') self.assertEqual(t.dtype, np.float64) with self.assertRaises(TypeError): truediv(t1, 2, dtype='i4')
def test_dtype(): t1 = ones((2, 3), dtype='f4', chunk_size=2) t = truediv(t1, 2, dtype='f8') assert t.dtype == np.float64 with pytest.raises(TypeError): truediv(t1, 2, dtype='i4')
def testDtypeExecution(self): a = ones((10, 20), dtype='f4', chunk_size=5) c = truediv(a, 2, dtype='f8') res = self.executor.execute_tensor(c, concat=True)[0] self.assertEqual(res.dtype, np.float64) c = truediv(a, 0, dtype='f8') res = self.executor.execute_tensor(c, concat=True)[0] self.assertTrue(np.isinf(res[0, 0])) with self.assertRaises(FloatingPointError): with np.errstate(divide='raise'): c = truediv(a, 0, dtype='f8') _ = self.executor.execute_tensor(c, concat=True)[0] # noqa: F841
def test_dtype_execution(setup): a = ones((10, 20), dtype='f4', chunk_size=5) c = truediv(a, 2, dtype='f8') res = c.execute().fetch() assert res.dtype == np.float64 c = truediv(a, 0, dtype='f8') res = c.execute().fetch() assert np.isinf(res[0, 0]) with pytest.raises(FloatingPointError): with np.errstate(divide='raise'): c = truediv(a, 0, dtype='f8') _ = c.execute().fetch() # noqa: F841
def testAddWithOutExecution(self): data1 = np.random.random((5, 9, 4)) data2 = np.random.random((9, 4)) arr1 = tensor(data1.copy(), chunk_size=3) arr2 = tensor(data2.copy(), chunk_size=3) add(arr1, arr2, out=arr1) res = self.executor.execute_tensor(arr1, concat=True)[0] self.assertTrue(np.array_equal(res, data1 + data2)) arr1 = tensor(data1.copy(), chunk_size=3) arr2 = tensor(data2.copy(), chunk_size=3) arr3 = add(arr1, arr2, out=arr1.astype('i4'), casting='unsafe') res = self.executor.execute_tensor(arr3, concat=True)[0] np.testing.assert_array_equal(res, (data1 + data2).astype('i4')) arr1 = tensor(data1.copy(), chunk_size=3) arr2 = tensor(data2.copy(), chunk_size=3) arr3 = truediv(arr1, arr2, out=arr1, where=arr2 > .5) res = self.executor.execute_tensor(arr3, concat=True)[0] self.assertTrue( np.array_equal( res, np.true_divide(data1, data2, out=data1.copy(), where=data2 > .5))) arr1 = tensor(data1.copy(), chunk_size=4) arr2 = tensor(data2.copy(), chunk_size=4) arr3 = add(arr1, arr2, where=arr1 > .5) res = self.executor.execute_tensor(arr3, concat=True)[0] expected = np.add(data1, data2, where=data1 > .5) self.assertTrue(np.array_equal(res[data1 > .5], expected[data1 > .5])) arr1 = tensor(data1.copy(), chunk_size=4) arr3 = add(arr1, 1, where=arr1 > .5) res = self.executor.execute_tensor(arr3, concat=True)[0] expected = np.add(data1, 1, where=data1 > .5) self.assertTrue(np.array_equal(res[data1 > .5], expected[data1 > .5])) arr1 = tensor(data2.copy(), chunk_size=3) arr3 = add(arr1[:5, :], 1, out=arr1[-5:, :]) res = self.executor.execute_tensor(arr3, concat=True)[0] expected = np.add(data2[:5, :], 1) self.assertTrue(np.array_equal(res, expected))
def test_add_with_out_execution(setup): data1 = np.random.random((5, 9, 4)) data2 = np.random.random((9, 4)) arr1 = tensor(data1.copy(), chunk_size=3) arr2 = tensor(data2.copy(), chunk_size=3) add(arr1, arr2, out=arr1) res = arr1.execute().fetch() np.testing.assert_array_equal(res, data1 + data2) arr1 = tensor(data1.copy(), chunk_size=3) arr2 = tensor(data2.copy(), chunk_size=3) arr3 = add(arr1, arr2, out=arr1.astype('i4'), casting='unsafe') res = arr3.execute().fetch() np.testing.assert_array_equal(res, (data1 + data2).astype('i4')) arr1 = tensor(data1.copy(), chunk_size=3) arr2 = tensor(data2.copy(), chunk_size=3) arr3 = truediv(arr1, arr2, out=arr1, where=arr2 > .5) res = arr3.execute().fetch() np.testing.assert_array_equal( res, np.true_divide(data1, data2, out=data1.copy(), where=data2 > .5)) arr1 = tensor(data1.copy(), chunk_size=4) arr2 = tensor(data2.copy(), chunk_size=4) arr3 = add(arr1, arr2, where=arr1 > .5) res = arr3.execute().fetch() expected = np.add(data1, data2, where=data1 > .5) np.testing.assert_array_equal( res[data1 > .5], expected[data1 > .5]) arr1 = tensor(data1.copy(), chunk_size=4) arr3 = add(arr1, 1, where=arr1 > .5) res = arr3.execute().fetch() expected = np.add(data1, 1, where=data1 > .5) np.testing.assert_array_equal(res[data1 > .5], expected[data1 > .5]) arr1 = tensor(data2.copy(), chunk_size=3) arr3 = add(arr1[:5, :], 1, out=arr1[-5:, :]) res = arr3.execute().fetch() expected = np.add(data2[:5, :], 1) np.testing.assert_array_equal(res, expected)