Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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')
Ejemplo n.º 4
0
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')
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
    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))
Ejemplo n.º 8
0
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)