Exemplo n.º 1
0
def get_context_from_string(ctxstr):
    import xobjects as xo

    if ctxstr is None:
        return xo.ContexCPU()
    else:
        ll = ctxstr.split(":")
        if len(ll) <= 1:
            ctxtype = ll[0]
            option = []
        else:
            ctxtype, options = ctxstr.split(":")
            option = options.split(",")
    if ctxtype == "ContextCpu":
        if len(option) == 0:
            return xo.ContextCpu()
        else:
            return xo.ContextCpu(omp_num_threads=int(option[0]))
    elif ctxtype == "ContextCupy":
        if len(option) == 0:
            return xo.ContextCupy()
        else:
            return xo.ContextCupy(device=int(option[0]))
    elif ctxtype == "ContextPyopencl":
        if len(option) == 0:
            return xo.ContextPyopencl()
        else:
            return xo.ContextPyopencl(device=option[0])
    else:
        raise ValueError(f"Cannot create context from `{ctxstr}`")
Exemplo n.º 2
0
def get_test_contexts():
    import os
    import xobjects as xo

    ctxstr = os.environ.get("XOBJECTS_TEST_CONTEXTS")
    if ctxstr is None:
        yield xo.ContextCpu()
        #yield xo.ContextCpu(omp_num_threads=2)
        if xo.ContextCupy in xo.context.available:
            yield xo.ContextCupy()
        if xo.ContextPyopencl in xo.context.available:
            yield xo.ContextPyopencl()
    elif ctxstr == "all":
        yield xo.ContextCpu()
        yield xo.ContextCpu(omp_num_threads=2)
        if xo.ContextCupy in xo.context.available:
            yield xo.ContextCupy()
        if xo.ContextPyopencl in xo.context.available:
            for dd in xo.ContextPyopencl.get_devices():
                yield xo.ContextPyopencl(device=dd)

    else:
        for cc in ctxstr.split(";"):
            yield get_context_from_string(cc)
Exemplo n.º 3
0
import xobjects as xo

ctx = xo.ContextPyopencl()

buff = ctx.new_buffer(16)
Exemplo n.º 4
0
        "Prism_compute_volume": xo.Kernel(args=[xo.Arg(Prism, name="prism")])
    })

triangle = Triangle(b=2, h=3)
prism_triangle = Prism(base=triangle, height=5)
square = Square(a=2)
prism_square = Prism(base=square, height=10)

context.kernels.Prism_compute_volume(prism=prism_triangle)
context.kernels.Prism_compute_volume(prism=prism_square)

assert prism_triangle.volume == 45
assert prism_square.volume == 120

# OpenCL
context = xo.ContextPyopencl()
context.add_kernels(
    kernels={
        "Prism_compute_volume": xo.Kernel(args=[xo.Arg(Prism, name="prism")])
    })

triangle = Triangle(b=2, h=3, _context=context)
prism_triangle = Prism(base=triangle, height=5, _context=context)
square = Square(a=2, _context=context)
prism_square = Prism(base=square, height=10, _context=context)

context.kernels.Prism_compute_volume(prism=prism_triangle)
context.kernels.Prism_compute_volume(prism=prism_square)

assert prism_triangle.volume == 45
assert prism_square.volume == 120
Exemplo n.º 5
0
def test_cl_init():
    ctx = xo.ContextPyopencl(device="0.0")