示例#1
0
def test_modify():
    r3 = CudaFn(3)
    xd = r3.element([1, 2, 3])
    yd = r3.element(data_ptr=xd.data_ptr)

    yd[:] = [5, 6, 7]

    assert all_equal(xd, yd)
示例#2
0
def test_modify():
    r3 = CudaFn(3)
    xd = r3.element([1, 2, 3])
    yd = r3.element(data_ptr=xd.data_ptr)

    yd[:] = [5, 6, 7]

    assert all_equal(xd, yd)
示例#3
0
def test_sub_vector():
    r6 = CudaFn(6)
    r3 = CudaFn(3)
    xd = r6.element([1, 2, 3, 4, 5, 6])

    yd = r3.element(data_ptr=xd.data_ptr)
    yd[:] = [7, 8, 9]

    assert all_almost_equal([7, 8, 9, 4, 5, 6], xd)
示例#4
0
def test_offset_sub_vector():
    r6 = CudaFn(6)
    r3 = CudaFn(3)
    xd = r6.element([1, 2, 3, 4, 5, 6])

    yd = r3.element(data_ptr=xd.data_ptr + 3 * xd.space.dtype.itemsize)
    yd[:] = [7, 8, 9]

    assert all_equal([1, 2, 3, 7, 8, 9], xd)
示例#5
0
def test_sub_vector():
    r6 = CudaFn(6)
    r3 = CudaFn(3)
    xd = r6.element([1, 2, 3, 4, 5, 6])

    yd = r3.element(data_ptr=xd.data_ptr)
    yd[:] = [7, 8, 9]

    assert all_almost_equal([7, 8, 9, 4, 5, 6], xd)
示例#6
0
def test_offset_sub_vector():
    r6 = CudaFn(6)
    r3 = CudaFn(3)
    xd = r6.element([1, 2, 3, 4, 5, 6])

    yd = r3.element(data_ptr=xd.data_ptr + 3 * xd.space.dtype.itemsize)
    yd[:] = [7, 8, 9]

    assert all_equal([1, 2, 3, 7, 8, 9], xd)
示例#7
0
def test_ndarray_init():
    r3 = CudaFn(3)

    x0 = np.array([1., 2., 3.])
    x = r3.element(x0)
    assert all_equal(x, x0)

    x0 = np.array([1, 2, 3], dtype=float64)
    x = r3.element(x0)
    assert all_equal(x, x0)

    x0 = np.array([1, 2, 3], dtype=int)
    x = r3.element(x0)
    assert all_equal(x, x0)
示例#8
0
def test_ndarray_init():
    r3 = CudaFn(3)

    x0 = np.array([1., 2., 3.])
    x = r3.element(x0)
    assert all_equal(x, x0)

    x0 = np.array([1, 2, 3], dtype=float64)
    x = r3.element(x0)
    assert all_equal(x, x0)

    x0 = np.array([1, 2, 3], dtype=int)
    x = r3.element(x0)
    assert all_equal(x, x0)
示例#9
0
def test_getitem():
    r3 = CudaFn(3)
    y = [1, 2, 3]
    x = r3.element(y)

    for index in [0, 1, 2, -1, -2, -3]:
        assert x[index] == y[index]
示例#10
0
def test_setitem():
    r3 = CudaFn(3)
    x = r3.element([42, 42, 42])

    for index in [0, 1, 2, -1, -2, -3]:
        x[index] = index
        assert x[index] == index
示例#11
0
def _test_getslice(slice):
    # Validate get against python list behaviour
    r6 = CudaFn(6)
    y = [0, 1, 2, 3, 4, 5]
    x = r6.element(y)

    assert all_equal(x[slice], y[slice])
示例#12
0
def _test_getslice(slice):
    # Validate get against python list behaviour
    r6 = CudaFn(6)
    y = [0, 1, 2, 3, 4, 5]
    x = r6.element(y)

    assert all_equal(x[slice], y[slice])
示例#13
0
def test_getslice_index_error():
    r3 = CudaFn(3)
    xd = r3.element([1, 2, 3])

    # Bad slice
    with pytest.raises(IndexError):
        xd[10:13]
示例#14
0
def test_setitem():
    r3 = CudaFn(3)
    x = r3.element([42, 42, 42])

    for index in [0, 1, 2, -1, -2, -3]:
        x[index] = index
        assert x[index] == index
示例#15
0
def test_getitem():
    r3 = CudaFn(3)
    y = [1, 2, 3]
    x = r3.element(y)

    for index in [0, 1, 2, -1, -2, -3]:
        assert x[index] == y[index]
示例#16
0
def test_getslice_index_error():
    r3 = CudaFn(3)
    xd = r3.element([1, 2, 3])

    # Bad slice
    with pytest.raises(IndexError):
        xd[10:13]
示例#17
0
def test_setitem_index_error():
    r3 = CudaFn(3)
    x = r3.element([1, 2, 3])

    with pytest.raises(IndexError):
        x[-4] = 0

    with pytest.raises(IndexError):
        x[3] = 0
示例#18
0
def test_setitem_index_error():
    r3 = CudaFn(3)
    x = r3.element([1, 2, 3])

    with pytest.raises(IndexError):
        x[-4] = 0

    with pytest.raises(IndexError):
        x[3] = 0
示例#19
0
def test_inner():
    r3 = CudaFn(3)
    x = r3.element([1, 2, 3])
    y = r3.element([5, 3, 9])

    correct_inner = 1 * 5 + 2 * 3 + 3 * 9

    # Space function
    assert almost_equal(r3.inner(x, y), correct_inner)

    # Exponent != 2 -> no inner product
    r3 = CudaFn(3, exponent=1)
    x = r3.element([1, 2, 3])
    y = r3.element([5, 3, 9])

    with pytest.raises(NotImplementedError):
        r3.inner(x, y)
    with pytest.raises(NotImplementedError):
        x.inner(y)
示例#20
0
def _test_setslice(slice):
    # Validate set against python list behaviour
    r6 = CudaFn(6)
    z = [7, 8, 9, 10, 11, 10]
    y = [0, 1, 2, 3, 4, 5]
    x = r6.element(y)

    x[slice] = z[slice]
    y[slice] = z[slice]
    assert all_equal(x, y)
示例#21
0
def _test_setslice(slice):
    # Validate set against python list behaviour
    r6 = CudaFn(6)
    z = [7, 8, 9, 10, 11, 10]
    y = [0, 1, 2, 3, 4, 5]
    x = r6.element(y)

    x[slice] = z[slice]
    y[slice] = z[slice]
    assert all_equal(x, y)
示例#22
0
def _test_dtype(dt):
    if dt not in CUDA_DTYPES:
        with pytest.raises(TypeError):
            r3 = CudaFn(3, dt)
    else:
        r3 = CudaFn(3, dt)
        x = r3.element([1, 2, 3])
        y = r3.element([4, 5, 6])
        z = x + y
        assert all_almost_equal(z, [5, 7, 9])
示例#23
0
def _test_dtype(dt):
    if dt not in CUDA_DTYPES:
        with pytest.raises(TypeError):
            r3 = CudaFn(3, dt)
    else:
        r3 = CudaFn(3, dt)
        x = r3.element([1, 2, 3])
        y = r3.element([4, 5, 6])
        z = x + y
        assert all_almost_equal(z, [5, 7, 9])
示例#24
0
def test_inner():
    r3 = CudaFn(3)
    x = r3.element([1, 2, 3])
    y = r3.element([5, 3, 9])

    correct_inner = 1 * 5 + 2 * 3 + 3 * 9

    # Space function
    assert almost_equal(r3.inner(x, y), correct_inner)

    # Exponent != 2 -> no inner product
    r3 = CudaFn(3, exponent=1)
    x = r3.element([1, 2, 3])
    y = r3.element([5, 3, 9])

    with pytest.raises(NotImplementedError):
        r3.inner(x, y)
    with pytest.raises(NotImplementedError):
        x.inner(y)
示例#25
0
def test_slice_is_view():
    # Verify that modifications of a view modify the original data
    r10 = CudaFn(10)
    xh = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    xd = r10.element(xh)

    yh = xh[1:8:2]
    yh[:] = [0, 0, 0, 0]

    yd = xd[1:8:2]
    yd[:] = [0, 0, 0, 0]

    assert all_equal(xh, xd)
    assert all_equal(yh, yd)
示例#26
0
def test_slice_is_view():
    # Verify that modifications of a view modify the original data
    r10 = CudaFn(10)
    xh = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    xd = r10.element(xh)

    yh = xh[1:8:2]
    yh[:] = [0, 0, 0, 0]

    yd = xd[1:8:2]
    yd[:] = [0, 0, 0, 0]

    assert all_equal(xh, xd)
    assert all_equal(yh, yd)
示例#27
0
def test_slice_of_slice():
    # Verify that creating slices from slices works as expected
    r10 = CudaFn(10)
    xh = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    xd = r10.element(xh)

    yh = xh[1:8:2]
    yd = xd[1:8:2]

    assert all_equal(yh, yd)

    zh = yh[1::2]
    zd = yd[1::2]

    assert all_equal(zh, zd)
示例#28
0
def test_slice_of_slice():
    # Verify that creating slices from slices works as expected
    r10 = CudaFn(10)
    xh = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    xd = r10.element(xh)

    yh = xh[1:8:2]
    yd = xd[1:8:2]

    assert all_equal(yh, yd)

    zh = yh[1::2]
    zd = yd[1::2]

    assert all_equal(zh, zd)
示例#29
0
def test_setslice_index_error():
    r3 = CudaFn(3)
    xd = r3.element([1, 2, 3])

    # Bad slice
    with pytest.raises(IndexError):
        xd[10:13] = [1, 2, 3]

    # Bad size of rhs
    with pytest.raises(IndexError):
        xd[:] = []

    with pytest.raises(IndexError):
        xd[:] = [1, 2]

    with pytest.raises(IndexError):
        xd[:] = [1, 2, 3, 4]
示例#30
0
def test_setslice_index_error():
    r3 = CudaFn(3)
    xd = r3.element([1, 2, 3])

    # Bad slice
    with pytest.raises(IndexError):
        xd[10:13] = [1, 2, 3]

    # Bad size of rhs
    with pytest.raises(IndexError):
        xd[:] = []

    with pytest.raises(IndexError):
        xd[:] = [1, 2]

    with pytest.raises(IndexError):
        xd[:] = [1, 2, 3, 4]
示例#31
0
def test_iterator():
    r3 = CudaFn(3)
    y = [1, 2, 3]
    x = r3.element(y)

    assert all_equal([a for a in x], [b for b in y])
示例#32
0
def test_iterator():
    r3 = CudaFn(3)
    y = [1, 2, 3]
    x = r3.element(y)

    assert all_equal([a for a in x], [b for b in y])
示例#33
0
def test_vector_init():
    rn = CudaFn(5)
    weight_vec = _pos_vector(rn)

    CudaFnVectorWeighting(weight_vec)
    CudaFnVectorWeighting(rn.element(weight_vec))
示例#34
0
def test_vector_init():
    rn = CudaFn(5)
    weight_vec = _pos_vector(rn)

    CudaFnArrayWeighting(weight_vec)
    CudaFnArrayWeighting(rn.element(weight_vec))