本文整理汇总了Python中numba.targets.imputils.impl_ret_borrowed函数的典型用法代码示例。如果您正苦于以下问题:Python impl_ret_borrowed函数的具体用法?Python impl_ret_borrowed怎么用?Python impl_ret_borrowed使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了impl_ret_borrowed函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: dot_3_vm
def dot_3_vm(context, builder, sig, args):
"""
np.dot(vector, matrix, out)
np.dot(matrix, vector, out)
"""
xty, yty, outty = sig.args
assert outty == sig.return_type
dtype = xty.dtype
x = make_array(xty)(context, builder, args[0])
y = make_array(yty)(context, builder, args[1])
out = make_array(outty)(context, builder, args[2])
x_shapes = cgutils.unpack_tuple(builder, x.shape)
y_shapes = cgutils.unpack_tuple(builder, y.shape)
out_shapes = cgutils.unpack_tuple(builder, out.shape)
if xty.ndim < yty.ndim:
# Vector * matrix
# Asked for x * y, we will compute y.T * x
mty = yty
m_shapes = y_shapes
do_trans = yty.layout == 'F'
m_data, v_data = y.data, x.data
def check_args(a, b, out):
m, = a.shape
_m, n = b.shape
if m != _m:
raise ValueError("incompatible array sizes for "
"np.dot(a, b) (vector * matrix)")
if out.shape != (n,):
raise ValueError("incompatible output array size for "
"np.dot(a, b, out) (vector * matrix)")
else:
# Matrix * vector
# We will compute x * y
mty = xty
m_shapes = x_shapes
do_trans = xty.layout == 'C'
m_data, v_data = x.data, y.data
def check_args(a, b, out):
m, _n = a.shape
n, = b.shape
if n != _n:
raise ValueError("incompatible array sizes for np.dot(a, b) "
"(matrix * vector)")
if out.shape != (m,):
raise ValueError("incompatible output array size for "
"np.dot(a, b, out) (matrix * vector)")
context.compile_internal(builder, check_args,
signature(types.none, *sig.args), args)
for val in m_shapes:
check_c_int(context, builder, val)
call_xxgemv(context, builder, do_trans, mty, m_shapes, m_data,
v_data, out.data)
return impl_ret_borrowed(context, builder, sig.return_type,
out._getvalue())
开发者ID:Alexhuszagh,项目名称:numba,代码行数:60,代码来源:linalg.py
示例2: array_min
def array_min(context, builder, sig, args):
ty = sig.args[0].dtype
if isinstance(ty, (types.NPDatetime, types.NPTimedelta)):
# NaT is smaller than every other value, but it is
# ignored as far as min() is concerned.
nat = ty("NaT")
def array_min_impl(arry):
min_value = nat
it = arry.flat
for v in it:
if v != nat:
min_value = v
break
for v in it:
if v != nat and v < min_value:
min_value = v
return min_value
else:
def array_min_impl(arry):
for v in arry.flat:
min_value = v
break
for v in arry.flat:
if v < min_value:
min_value = v
return min_value
res = context.compile_internal(builder, array_min_impl, sig, args)
return impl_ret_borrowed(context, builder, sig.return_type, res)
开发者ID:MatthieuDartiailh,项目名称:numba,代码行数:34,代码来源:arraymath.py
示例3: get_attr_impl
def get_attr_impl(context, builder, typ, value, attr):
"""
Generic getattr() for @jitclass instances.
"""
if attr in typ.struct:
# It's a struct field
inst = context.make_helper(builder, typ, value=value)
data_pointer = inst.data
data = context.make_data_helper(builder, typ.get_data_type(),
ref=data_pointer)
return imputils.impl_ret_borrowed(context, builder,
typ.struct[attr],
getattr(data, _mangle_attr(attr)))
elif attr in typ.jitprops:
# It's a jitted property
getter = typ.jitprops[attr]['get']
sig = templates.signature(None, typ)
dispatcher = types.Dispatcher(getter)
sig = dispatcher.get_call_type(context.typing_context, [typ], {})
call = context.get_function(dispatcher, sig)
out = call(builder, [value])
_add_linking_libs(context, call)
return imputils.impl_ret_new_ref(context, builder, sig.return_type, out)
raise NotImplementedError('attribute {0!r} not implemented'.format(attr))
开发者ID:numba,项目名称:numba,代码行数:25,代码来源:base.py
示例4: impl_dict_getiter
def impl_dict_getiter(context, builder, sig, args):
"""Implement iter(Dict). Semantically equivalent to dict.keys()
"""
[td] = sig.args
[d] = args
iterablety = types.DictKeysIterableType(td)
it = context.make_helper(builder, iterablety.iterator_type)
fnty = ir.FunctionType(
ir.VoidType(),
[ll_dictiter_type, ll_dict_type],
)
fn = builder.module.get_or_insert_function(fnty, name='numba_dict_iter')
proto = ctypes.CFUNCTYPE(ctypes.c_size_t)
dictiter_sizeof = proto(_helperlib.c_helpers['dict_iter_sizeof'])
state_type = ir.ArrayType(ir.IntType(8), dictiter_sizeof())
pstate = cgutils.alloca_once(builder, state_type, zfill=True)
it.state = _as_bytes(builder, pstate)
it.parent = d
dp = _dict_get_data(context, builder, iterablety.parent, args[0])
builder.call(fn, [it.state, dp])
return impl_ret_borrowed(
context,
builder,
sig.return_type,
it._getvalue(),
)
开发者ID:numba,项目名称:numba,代码行数:31,代码来源:dictobject.py
示例5: getitem_list
def getitem_list(context, builder, sig, args):
inst = ListInstance(context, builder, sig.args[0], args[0])
index = args[1]
index = inst.fix_index(index)
result = inst.getitem(index)
return impl_ret_borrowed(context, builder, sig.return_type, result)
开发者ID:dhavide,项目名称:numba,代码行数:8,代码来源:listobj.py
示例6: array_prod
def array_prod(context, builder, sig, args):
def array_prod_impl(arr):
c = 1
for v in arr.flat:
c *= v
return c
res = context.compile_internal(builder, array_prod_impl, sig, args, locals=dict(c=sig.return_type))
return impl_ret_borrowed(context, builder, sig.return_type, res)
开发者ID:MatthieuDartiailh,项目名称:numba,代码行数:9,代码来源:arraymath.py
示例7: array_sum
def array_sum(context, builder, sig, args):
zero = sig.return_type(0)
def array_sum_impl(arr):
c = zero
for v in arr.flat:
c += v
return c
res = context.compile_internal(builder, array_sum_impl, sig, args, locals=dict(c=sig.return_type))
return impl_ret_borrowed(context, builder, sig.return_type, res)
开发者ID:MatthieuDartiailh,项目名称:numba,代码行数:11,代码来源:arraymath.py
示例8: codegen
def codegen(context, builder, sig, args):
[d] = args
[td] = sig.args
iterhelper = context.make_helper(builder, resty)
iterhelper.parent = d
iterhelper.state = iterhelper.state.type(None)
return impl_ret_borrowed(
context,
builder,
resty,
iterhelper._getvalue(),
)
开发者ID:numba,项目名称:numba,代码行数:12,代码来源:dictobject.py
示例9: array_max
def array_max(context, builder, sig, args):
def array_max_impl(arry):
for v in arry.flat:
max_value = v
break
for v in arry.flat:
if v > max_value:
max_value = v
return max_value
res = context.compile_internal(builder, array_max_impl, sig, args)
return impl_ret_borrowed(context, builder, sig.return_type, res)
开发者ID:denfromufa,项目名称:numba,代码行数:12,代码来源:arraymath.py
示例10: array_max
def array_max(context, builder, sig, args):
def array_max_impl(arry):
it = np.nditer(arry)
for view in it:
max_value = view.item()
break
for view in it:
v = view.item()
if v > max_value:
max_value = v
return max_value
res = context.compile_internal(builder, array_max_impl, sig, args)
return impl_ret_borrowed(context, builder, sig.return_type, res)
开发者ID:Alexhuszagh,项目名称:numba,代码行数:14,代码来源:arraymath.py
示例11: list_mul_inplace
def list_mul_inplace(context, builder, sig, args):
inst = ListInstance(context, builder, sig.args[0], args[0])
src_size = inst.size
mult = args[1]
zero = ir.Constant(mult.type, 0)
mult = builder.select(cgutils.is_neg_int(builder, mult), zero, mult)
nitems = builder.mul(mult, src_size)
inst.resize(nitems)
with cgutils.for_range_slice(builder, src_size, nitems, src_size, inc=True) as (dest_offset, _):
with cgutils.for_range(builder, src_size) as loop:
value = inst.getitem(loop.index)
inst.setitem(builder.add(loop.index, dest_offset), value)
return impl_ret_borrowed(context, builder, sig.return_type, inst.value)
开发者ID:dhavide,项目名称:numba,代码行数:17,代码来源:listobj.py
示例12: imp
def imp(context, builder, typ, val):
ary = aryty(context, builder)
dtype = elemty.dtype
newshape = [self.get_constant(types.intp, s) for s in
elemty.shape]
newstrides = [self.get_constant(types.intp, s) for s in
elemty.strides]
newdata = cgutils.get_record_member(builder, val, offset,
self.get_data_type(dtype))
arrayobj.populate_array(
ary,
data=newdata,
shape=cgutils.pack_array(builder, newshape),
strides=cgutils.pack_array(builder, newstrides),
itemsize=context.get_constant(types.intp, elemty.size),
meminfo=None,
parent=None,
)
res = ary._getvalue()
return impl_ret_borrowed(context, builder, typ, res)
开发者ID:shaweiguo,项目名称:numba,代码行数:21,代码来源:base.py
示例13: attr_impl
def attr_impl(context, builder, typ, value, attr):
if attr in typ.struct:
inst_struct = cgutils.create_struct_proxy(typ)
inst = inst_struct(context, builder, value=value)
data_pointer = inst.data
data_struct = cgutils.create_struct_proxy(typ.get_data_type(),
kind='data')
data = data_struct(context, builder, ref=data_pointer)
return imputils.impl_ret_borrowed(context, builder,
typ.struct[attr],
getattr(data, attr))
elif attr in typ.jitprops:
getter = typ.jitprops[attr]['get']
sig = templates.signature(None, typ)
dispatcher = types.Dispatcher(getter)
sig = dispatcher.get_call_type(context.typing_context, [typ], {})
call = context.get_function(dispatcher, sig)
out = call(builder, [value])
return imputils.impl_ret_new_ref(context, builder, sig.return_type, out)
raise NotImplementedError('attribute {0!r} not implemented'.format(attr))
开发者ID:dhavide,项目名称:numba,代码行数:21,代码来源:base.py
示例14: index_wrap_array
def index_wrap_array(context, builder, sig, args):
dest = make_index(context, builder, sig.return_type)
dest.data = args[1]
return impl_ret_borrowed(context, builder, sig.return_type, dest._getvalue())
开发者ID:Alexhuszagh,项目名称:numba,代码行数:4,代码来源:pdlike_usecase.py
示例15: list_add_inplace
def list_add_inplace(context, builder, sig, args):
assert sig.args[0].dtype == sig.return_type.dtype
dest = _list_extend_list(context, builder, sig, args)
return impl_ret_borrowed(context, builder, sig.return_type, dest.value)
开发者ID:dhavide,项目名称:numba,代码行数:5,代码来源:listobj.py
示例16: series_wrap_array
def series_wrap_array(context, builder, sig, args):
src = make_series(context, builder, sig.args[0], value=args[0])
dest = make_series(context, builder, sig.return_type)
dest.values = args[1]
dest.index = src.index
return impl_ret_borrowed(context, builder, sig.return_type, dest._getvalue())
开发者ID:Alexhuszagh,项目名称:numba,代码行数:6,代码来源:pdlike_usecase.py
示例17: getiter_list
def getiter_list(context, builder, sig, args):
inst = ListIterInstance.from_list(context, builder, sig.return_type, args[0])
return impl_ret_borrowed(context, builder, sig.return_type, inst.value)
开发者ID:dhavide,项目名称:numba,代码行数:3,代码来源:listobj.py
示例18: dot_3_vm
def dot_3_vm(context, builder, sig, args):
"""
np.dot(vector, matrix, out)
np.dot(matrix, vector, out)
"""
xty, yty, outty = sig.args
assert outty == sig.return_type
dtype = xty.dtype
x = make_array(xty)(context, builder, args[0])
y = make_array(yty)(context, builder, args[1])
out = make_array(outty)(context, builder, args[2])
x_shapes = cgutils.unpack_tuple(builder, x.shape)
y_shapes = cgutils.unpack_tuple(builder, y.shape)
out_shapes = cgutils.unpack_tuple(builder, out.shape)
if xty.ndim < yty.ndim:
# Vector * matrix
# Asked for x * y, we will compute y.T * x
mty = yty
m, n = m_shapes = y_shapes
do_trans = yty.layout == 'F'
m_data, v_data = y.data, x.data
def check_args(a, b, out):
m, = a.shape
_m, n = b.shape
if m != _m:
raise ValueError("incompatible array sizes for np.dot(a, b) "
"(vector * matrix)")
if out.shape != (n,):
raise ValueError("incompatible output array size for np.dot(a, b, out) "
"(vector * matrix)")
else:
# Matrix * vector
# We will compute x * y
mty = xty
m, n = m_shapes = x_shapes
do_trans = xty.layout == 'C'
m_data, v_data = x.data, y.data
def check_args(a, b, out):
m, _n= a.shape
n, = b.shape
if n != _n:
raise ValueError("incompatible array sizes for np.dot(a, b) "
"(matrix * vector)")
if out.shape != (m,):
raise ValueError("incompatible output array size for np.dot(a, b, out) "
"(matrix * vector)")
context.compile_internal(builder, check_args,
signature(types.none, *sig.args), args)
check_c_int(context, builder, m)
check_c_int(context, builder, n)
fnty = ir.FunctionType(ir.IntType(32),
[ll_char, ll_char_p, # kind, trans
intp_t, intp_t, # m, n
ll_void_p, ll_void_p, intp_t, # alpha, a, lda
ll_void_p, ll_void_p, ll_void_p, # x, beta, y
])
fn = builder.module.get_or_insert_function(fnty, name="numba_xxgemv")
alpha = make_constant_slot(context, builder, dtype, 1.0)
beta = make_constant_slot(context, builder, dtype, 0.0)
if mty.layout == 'F':
lda = m_shapes[0]
else:
m, n = n, m
lda = m_shapes[1]
kind = get_blas_kind(dtype)
kind_val = ir.Constant(ll_char, ord(kind))
trans = context.insert_const_string(builder.module,
"t" if do_trans else "n")
res = builder.call(fn, (kind_val, trans, m, n,
builder.bitcast(alpha, ll_void_p),
builder.bitcast(m_data, ll_void_p), lda,
builder.bitcast(v_data, ll_void_p),
builder.bitcast(beta, ll_void_p),
builder.bitcast(out.data, ll_void_p)))
check_blas_return(context, builder, res)
return impl_ret_borrowed(context, builder, sig.return_type, out._getvalue())
开发者ID:maartenscholl,项目名称:numba,代码行数:86,代码来源:arraymath.py
示例19: imp
def imp(context, builder, typ, val):
dptr = cgutils.get_record_member(builder, val, offset,
context.get_data_type(elemty))
align = None if typ.aligned else 1
res = self.unpack_value(builder, elemty, dptr, align)
return impl_ret_borrowed(context, builder, typ, res)
开发者ID:christwell,项目名称:numba,代码行数:6,代码来源:base.py
示例20: set_inplace
def set_inplace(context, builder, sig, args, op_impl=op_impl):
assert sig.return_type == sig.args[0]
op_impl(context, builder, sig, args)
return impl_ret_borrowed(context, builder, sig.args[0], args[0])
开发者ID:FedericoStra,项目名称:numba,代码行数:4,代码来源:setobj.py
注:本文中的numba.targets.imputils.impl_ret_borrowed函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论