def test_where_for_raised_errors(): check_import('opencl') check_import('cuda') # check errors a = array.arange(0, 10, 1, backend='opencl', dtype=np.int32) b = array.arange(10, 20, 1, backend='cuda', dtype=np.int32) with pytest.raises(TypeError): array.where(a > 5, a, b) b = array.arange(10, 20, 1, backend='opencl', dtype=np.float32) with pytest.raises(TypeError): array.where(a > 5, a, b)
def test_where(backend): check_import(backend) # Given a = array.arange(0, 10, 1, backend=backend) b = array.arange(10, 20, 1, backend=backend) # When out = np.array([10, 11, 12, 13, 14, 15, 6, 7, 8, 9]) # Then ans = array.where(a > 5, a, b) assert np.all(ans.get() == out)
def test_align(backend): check_import(backend) # Given dev_array = Array(np.int32, backend=backend) orig_array = array.arange(0, 16, 1, dtype=np.int32, backend=backend) dev_array.set_data(orig_array) indices = array.arange(15, -1, -1, dtype=np.int32, backend=backend) # When dev_array = dev_array.align(indices) # Then assert np.all(dev_array.get() == indices.get())
def test_remove(backend): check_import(backend) # Given dev_array = Array(np.int32, backend=backend) orig_array = array.arange(0, 16, 1, dtype=np.int32, backend=backend) dev_array.set_data(orig_array) indices = array.arange(0, 8, 1, dtype=np.int32, backend=backend) # When dev_array.remove(indices) # Then assert np.all(dev_array.get() == (8 + indices).get())
def test_align(self, backend): check_import(backend) self.setup() # Given pa = self.pa pa.add_property('force', stride=3) h = DeviceHelper(pa, backend=backend) # When pa.set_device_helper(h) n = 5 h.resize(n) h.x.set(np.array([2.0, 3.0, 4.0, 5.0, 6.0], h.x.dtype)) h.force.set(np.arange(n * 3, dtype=h.force.dtype)) indices = array.arange(4, -1, -1, dtype=np.int32, backend=backend) h.align(indices) # Then assert np.all(h.x.get() == np.array([6., 5., 4., 3., 2.])) x = np.arange(n * 3) x.shape = (n, 3) expect = x[::-1, :].ravel() assert np.all(h.force.get() == expect)
def test_sum(dtype, backend): check_import(backend) # Given x = array.arange(0, 5, 1, backend=backend, dtype=dtype) # When out = array.sum(x) # Then assert (out == 10)
def test_minimum(dtype, backend): check_import(backend) # Given x = array.arange(3, 5, 1, backend=backend, dtype=dtype) # When out = array.minimum(x) # Then assert (out == 3)
def test_align_multiple(backend): check_import(backend) # Given dev_array_a = Array(np.uint32, backend=backend) dev_array_b = Array(np.float32, backend=backend) orig_array_a = array.arange(0, 1024, 1, dtype=np.uint32, backend=backend) orig_array_b = array.arange( 1024, 2048, 1, dtype=np.float32, backend=backend) dev_array_a.set_data(orig_array_a) dev_array_b.set_data(orig_array_b) indices = array.arange(1023, -1, -1, dtype=np.int64, backend=backend) # When dev_array_a, dev_array_b = array.align([dev_array_a, dev_array_b], indices) # Then assert np.all(dev_array_a.get() == indices.get()) assert np.all(dev_array_b.get() - 1024 == indices.get())
def test_ones_like(backend): check_import(backend) # Given x = array.arange(1, 10, 1, dtype=np.int32) # When y = array.ones_like(x) z = array.zeros_like(x) # Then assert np.all(y.get() == np.ones_like(x)) assert np.all(z.get() == np.zeros_like(x))
def test_comparison(backend, dtype, method): check_import(backend) if dtype == np.float64: get_config().use_double = True # Given x = array.arange(0., 10., 1., dtype=dtype, backend=backend) # When out = getattr(x, method)(5) # Then x_np = np.arange(10, dtype=dtype) comp = [int(i) for i in getattr(x_np, method)(5)] assert np.all(out.get() == comp)
def test_copy_values(backend): check_import(backend) # Given dev_array = make_dev_array(backend) dev_array.fill(2) dest = array.empty(8, dtype=np.int32, backend=backend) indices = array.arange(0, 8, 1, dtype=np.int32, backend=backend) # When dev_array.copy_values(indices, dest) # Then assert np.all(dev_array[:len(indices)].get() == dest.get())
def test_take_bool(dtype, backend): check_import(backend) if dtype == np.float64: get_config().use_double = True # Given x = array.arange(0, 10, 1, backend=backend, dtype=dtype) cond = x > 5 # When out = array.take_bool(x, cond) # Then ans = np.arange(6, 10, dtype=dtype) assert np.all(out.get() == ans)
def test_align(self, backend): check_import(backend) self.setup() # Given pa = self.pa h = DeviceHelper(pa, backend=backend) # When pa.set_device_helper(h) h.resize(5) h.x.set(np.array([2.0, 3.0, 4.0, 5.0, 6.0], h.x.dtype)) indices = array.arange(4, -1, -1, dtype=np.int32, backend=backend) h.align(indices) # Then assert np.all(h.x.get() == np.array([6., 5., 4., 3., 2.]))