Ejemplo n.º 1
0
def test_gemv(m, n, dtype, rng):
    tols = tolerances[dtype]

    A, X, Y = gemv_system(queue, m, n, dtype, rng)
    clA, clX, clY = map(to_ocl, (A, X, Y))

    try:
        blas.setup()

        # normal gemv
        clX.set(X)
        clY.fill(0)
        event = blas.gemv(queue, clA, clX, clY)
        assert np.allclose(clY.get(), np.dot(A, X), **tols)
        assert isinstance(event, cl.Event)

        # transposed gemv
        clX.fill(0)
        clY.set(Y)
        blas.gemv(queue, clA, clY, clX, transA=True)
        assert np.allclose(clX.get(), np.dot(A.T, Y), **tols)

        # sliced gemv
        clX.set(X)
        clY.fill(0)
        blas.gemv(queue, clA[:-1, 1:], clX[:-1], clY[1:])
        Yslice = clY.get()
        assert np.allclose(Yslice[0], 0, **tols)
        assert np.allclose(Yslice[1:], np.dot(A[:-1, 1:], X[:-1]), **tols)

    finally:
        blas.teardown()
Ejemplo n.º 2
0
def test_gemv(m, n, dtype, rng):
    tols = tolerances[dtype]

    A, X, Y = gemv_system(queue, m, n, dtype, rng)
    clA, clX, clY = map(to_ocl, (A, X, Y))

    try:
        blas.setup()

        # normal gemv
        clX.set(X)
        clY.fill(0)
        event = blas.gemv(queue, clA, clX, clY)
        assert np.allclose(clY.get(), np.dot(A, X), **tols)
        assert isinstance(event, cl.Event)

        # transposed gemv
        clX.fill(0)
        clY.set(Y)
        blas.gemv(queue, clA, clY, clX, transA=True)
        assert np.allclose(clX.get(), np.dot(A.T, Y), **tols)

        # sliced gemv
        clX.set(X)
        clY.fill(0)
        blas.gemv(queue, clA[:-1, 1:], clX[:-1], clY[1:])
        Yslice = clY.get()
        assert np.allclose(Yslice[0], 0, **tols)
        assert np.allclose(Yslice[1:], np.dot(A[:-1, 1:], X[:-1]), **tols)

    finally:
        blas.teardown()
Ejemplo n.º 3
0
def test_check_dtype(rng):
    dtype = 'float32'
    m, n = 3, 4
    sA, sX, sY = gemv_system(queue, m, n, dtype, rng)
    dA, dX, dY = map(lambda x: x.astype('float64'), [sA, sX, sY])
    cA, cX, cY = map(lambda x: x.astype('complex64'), [sA, sX, sY])
    zA, zX, zY = map(lambda x: x.astype('complex128'), [sA, sX, sY])

    clsA, clsX, clsY = map(to_ocl, (sA, sX, sY))
    cldA, cldX, cldY = map(to_ocl, (dA, dX, dY))
    clcA, clcX, clcY = map(to_ocl, (cA, cX, cY))
    clzA, clzX, clzY = map(to_ocl, (zA, zX, zY))

    try:
        blas.setup()

        with pytest.raises(ValueError):
            blas.gemv(queue, cldA, clsX, clsY)

        with pytest.raises(ValueError):
            blas.gemv(queue, clsA, cldX, clsY)

        with pytest.raises(ValueError):
            blas.gemv(queue, clcA, cldX, clcY)

        with pytest.raises(ValueError):
            blas.gemv(queue, clzA, cldX, clzY)
    finally:
        blas.teardown()
Ejemplo n.º 4
0
def test_check_dtype(rng):
    dtype = 'float32'
    m, n = 3, 4
    sA, sX, sY = gemv_system(queue, m, n, dtype, rng)
    dA, dX, dY = map(lambda x: x.astype('float64'), [sA, sX, sY])
    cA, cX, cY = map(lambda x: x.astype('complex64'), [sA, sX, sY])
    zA, zX, zY = map(lambda x: x.astype('complex128'), [sA, sX, sY])

    clsA, clsX, clsY = map(to_ocl, (sA, sX, sY))
    cldA, cldX, cldY = map(to_ocl, (dA, dX, dY))
    clcA, clcX, clcY = map(to_ocl, (cA, cX, cY))
    clzA, clzX, clzY = map(to_ocl, (zA, zX, zY))

    try:
        blas.setup()

        with pytest.raises(ValueError):
            blas.gemv(queue, cldA, clsX, clsY)

        with pytest.raises(ValueError):
            blas.gemv(queue, clsA, cldX, clsY)

        with pytest.raises(ValueError):
            blas.gemv(queue, clcA, cldX, clcY)

        with pytest.raises(ValueError):
            blas.gemv(queue, clzA, cldX, clzY)
    finally:
        blas.teardown()