【问题标题】:Can I force an expression to be treated as a constant by numba?我可以强制表达式被 numba 视为常量吗?
【发布时间】:2019-11-09 15:55:17
【问题描述】:

给定一些 numba 不知道的类型的全局非变异对象:

from types import SimpleNamespace
a = SimpleNamespace(b=2)

我希望能够将此对象的成员作为编译时常量引用到 jitted 函数中,如下所示:

@numba.njit
def foo():
    # return a.b   # fails, because numba tries to evaluate at runtime
    return numba.mark_this_as_constant(a.b)

mark_this_as_constant 是否已经以不同的名称存在于 numba 中?是否可以自己编写,也许使用自定义类型?

我今天可以得到我想要的东西:

def foo(a_b=a.b):
   @numba.njit
   def foo():
       return a_b
   return foo
foo = foo()

但这很粗略,需要我在顶部列出每个闭包,而不是在使用点。

【问题讨论】:

标签: python numba


【解决方案1】:

你尝试过这样的事情吗?

a = SimpleNamespace(b=2)
a_b = a.b

@numba.njit
def foo():
    return a_b

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-13
    • 2020-12-17
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 2019-06-11
    相关资源
    最近更新 更多