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
def converter(blaze_type): """ Generate an element-wise conversion function that numba can jit-compile. """ T = to_numba(blaze_type) def convert(value): return T(value) return convert
def construct_blaze_kernel(function, overload): """ Parameters ========== function: blaze.function.BlazeFunc overload: blaze.overloading.Overload """ func = overload.func polysig = overload.sig monosig = overload.resolved_sig numba_impls = function.find_impls(func, polysig, 'numba') llvm_impls = function.find_impls(func, polysig, 'llvm') if numba_impls: [impl] = numba_impls argtypes = [to_numba(a.measure) for a in monosig.argtypes] restype = to_numba(monosig.restype.measure) return frompyfunc(impl, (argtypes, restype), monosig.argtypes) elif llvm_impls: [impl] = llvm_impls return BlazeElementKernel(impl, monosig.argtypes) else: return None
def tree_arg(type): kind = llvm_array.SCALAR rank = 0 llvmtype = to_numba(type.measure).to_llvm() tree = Argument(type, kind, rank, llvmtype) return tree