Exemplo n.º 1
0
def construct_blaze_kernel(py_func, signature):
    """
    Parameters
    ==========
    function: blaze.function.BlazeFunc
    overload: blaze.overloading.Overload
    """
    nb_argtypes = [to_numba(a.measure) for a in signature.argtypes]
    nb_restype = to_numba(signature.restype.measure)
    return frompyfunc(py_func, (nb_argtypes, nb_restype), signature.argtypes)
Exemplo n.º 2
0
def converter(blaze_dtype, blaze_argtype):
    """
    Generate an element-wise conversion function that numba can jit-compile.
    """
    dtype = to_numba(blaze_dtype.measure)
    argtype = to_numba(blaze_argtype.measure)
    @jit(dtype(argtype))
    def convert(value):
        return dtype(value)
    return convert
Exemplo n.º 3
0
def construct_blaze_kernel(py_func, signature):
    """
    Parameters
    ==========
    function: blaze.function.BlazeFunc
    overload: blaze.overloading.Overload
    """
    nb_argtypes = [to_numba(a.measure) for a in signature.argtypes]
    nb_restype = to_numba(signature.restype.measure)
    return frompyfunc(py_func, (nb_argtypes, nb_restype), signature.argtypes)
Exemplo n.º 4
0
def converter(blaze_dtype, blaze_argtype):
    """
    Generate an element-wise conversion function that numba can jit-compile.
    """
    dtype = to_numba(blaze_dtype.measure)
    argtype = to_numba(blaze_argtype.measure)

    @jit(dtype(argtype))
    def convert(value):
        return dtype(value)

    return convert
Exemplo n.º 5
0
def construct_blaze_kernel(function, overload):
    """
    Parameters
    ==========
    function: blaze.function.BlazeFunc
    overload: blaze.overloading.Overload
    """
    monosig = overload.resolved_sig
    argtypes = monosig.argtypes

    # Try a numba implementation
    py_func, signature = find_impl(function, 'numba', argtypes, monosig)
    if py_func is not None:
        nb_argtypes = [to_numba(a.measure) for a in signature.argtypes]
        nb_restype = to_numba(signature.restype.measure)
        return frompyfunc(py_func, (nb_argtypes, nb_restype), argtypes)

    # Try an LLVM implementation
    py_func, signature = find_impl(function, 'numba', argtypes, monosig)
    if py_func is not None:
        return BlazeElementKernel(py_func, signature.argtypes)
Exemplo n.º 6
0
def leaf_arg(type):
    kind = llvm_array.SCALAR
    rank = 0
    llvmtype = to_numba(type.measure).to_llvm()
    tree = Argument(type, kind, rank, llvmtype)
    return tree
Exemplo n.º 7
0
def leaf_arg(type):
    kind = llvm_array.SCALAR
    rank = 0
    llvmtype = to_numba(type.measure).to_llvm()
    tree = Argument(type, kind, rank, llvmtype)
    return tree