Ejemplo n.º 1
0
def minimum_cl(a, b=None):

    """ Minimum values of two GPUArrays.

    Parameters
    ----------
    a : gpuarray
        First GPUArray.
    b : gpuarray
        Second GPUArray.

    Returns
    -------
    gpuarray
        Minimum values from both GPArrays, or single value if one GPUarray.

    Examples
    --------
    >>> a = minimum_cl(give_cl(queue, [1, 2, 3]), give_cl(queue, [3, 2, 1]))
    [1, 2, 1]

    >>> type(a)
    <class 'pyopencl.array.Array'>

    """

    if b is not None:
        return cl_array.minimum(a, b)
    return cl_array.min(a)
Ejemplo n.º 2
0
    def minimum(t: Tensor, uts: Union[Tensor, Scalar]) -> Tensor:
        """Returns the minimum of a tensor."""

        if t.gpu:
            if not isinstance(uts, Tensor):
                ot: cl.array.Array = clarray.empty(QUEUE,
                                                   t.shape,
                                                   dtype=np.float32).fill(uts)
                return Tensor(clarray.minimum(t._data, ot), gpu=True)

            return Tensor(clarray.minimum(t._data, uts._data), gpu=True)

        if not isinstance(uts, Tensor):
            return Tensor(np.minimum(t._data, uts))

        return Tensor(np.minimum(t._data, uts._data))
Ejemplo n.º 3
0
def test_if_positive(ctx_getter):
    context = ctx_getter()
    queue = cl.CommandQueue(context)

    from pyopencl.clrandom import rand as clrand

    l = 20000
    a_gpu = clrand(context, queue, (l,), numpy.float32)
    b_gpu = clrand(context, queue, (l,), numpy.float32)
    a = a_gpu.get()
    b = b_gpu.get()

    max_a_b_gpu = cl_array.maximum(a_gpu, b_gpu)
    min_a_b_gpu = cl_array.minimum(a_gpu, b_gpu)

    print(max_a_b_gpu)
    print(numpy.maximum(a, b))

    assert la.norm(max_a_b_gpu.get()- numpy.maximum(a, b)) == 0
    assert la.norm(min_a_b_gpu.get()- numpy.minimum(a, b)) == 0
Ejemplo n.º 4
0
def test_if_positive(ctx_factory):
    context = ctx_factory()
    queue = cl.CommandQueue(context)

    from pyopencl.clrandom import rand as clrand

    ary_len = 20000
    a_gpu = clrand(queue, (ary_len,), np.float32)
    b_gpu = clrand(queue, (ary_len,), np.float32)
    a = a_gpu.get()
    b = b_gpu.get()

    max_a_b_gpu = cl_array.maximum(a_gpu, b_gpu)
    min_a_b_gpu = cl_array.minimum(a_gpu, b_gpu)

    print(max_a_b_gpu)
    print(np.maximum(a, b))

    assert la.norm(max_a_b_gpu.get() - np.maximum(a, b)) == 0
    assert la.norm(min_a_b_gpu.get() - np.minimum(a, b)) == 0
Ejemplo n.º 5
0
def test_if_positive(ctx_getter):
    context = ctx_getter()
    queue = cl.CommandQueue(context)

    from pyopencl.clrandom import rand as clrand

    l = 20000
    a_gpu = clrand(context, queue, (l, ), numpy.float32)
    b_gpu = clrand(context, queue, (l, ), numpy.float32)
    a = a_gpu.get()
    b = b_gpu.get()

    max_a_b_gpu = cl_array.maximum(a_gpu, b_gpu)
    min_a_b_gpu = cl_array.minimum(a_gpu, b_gpu)

    print max_a_b_gpu
    print numpy.maximum(a, b)

    assert la.norm(max_a_b_gpu.get() - numpy.maximum(a, b)) == 0
    assert la.norm(min_a_b_gpu.get() - numpy.minimum(a, b)) == 0
Ejemplo n.º 6
0
def test_if_positive(ctx_factory):
    context = ctx_factory()
    queue = cl.CommandQueue(context)

    from pyopencl.clrandom import rand as clrand

    ary_len = 20000
    a_gpu = clrand(queue, (ary_len,), np.float32)
    b_gpu = clrand(queue, (ary_len,), np.float32)
    a = a_gpu.get()
    b = b_gpu.get()

    max_a_b_gpu = cl_array.maximum(a_gpu, b_gpu)
    min_a_b_gpu = cl_array.minimum(a_gpu, b_gpu)

    print(max_a_b_gpu)
    print(np.maximum(a, b))

    assert la.norm(max_a_b_gpu.get() - np.maximum(a, b)) == 0
    assert la.norm(min_a_b_gpu.get() - np.minimum(a, b)) == 0
Ejemplo n.º 7
0
 def minimum(self, x, y):
     import pyopencl.array as cl_array
     return cl_array.minimum(x, y)