无类型全局名称“sum_”:无法确定 <class“function”> 的 Numba 类型

Baz*_*Baz 5 python numpy python-3.x numba

我收到错误:

numba.core.errors.TypingError: Failed in nopython mode pipeline (step: nopython frontend)
Untyped global name 'sum_': cannot determine Numba type of <class 'function'>
Run Code Online (Sandbox Code Playgroud)

对于以下代码:

import numba as nb
from numba.pycc import CC

cc = CC('yin')

@cc.export('sum_', nb.float32(nb.float32[:]))
def sum_(a):
    s = 0
    for i in a:
        s += i
    return s

@cc.export('average', nb.float32(nb.float32[:]))
def average(a):
    return sum_(a)/len(a)

cc.compile()
Run Code Online (Sandbox Code Playgroud)

我应该做什么?

Mer*_*ury 4

我以前遇到过这个问题一次。由于某种原因,提前编译模式对类型推断没有帮助,这jitnjit编译函数不同。正如此处建议的,解决方法是添加一个额外的njit装饰器。

import numba as nb
from numba.pycc import CC

cc = CC('yin')

@nb.njit
@cc.export('sum_', nb.float32(nb.float32[:]))
def sum_(a):
    s = 0
    for i in a:
        s += i
    return s

@cc.export('average', nb.float32(nb.float32[:]))
def average(a):
    return sum_(a)/len(a)

cc.compile()
Run Code Online (Sandbox Code Playgroud)