未键入的全局名称 'sum_':无法确定 <class 'function'> 的 Numba 类型

Untyped global name 'sum_': cannot determine Numba type of <class 'function'>

我收到错误:

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

对于以下代码:

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()

我应该做什么?

我以前 运行 遇到过这个问题。 ahead-of-time 编译模式无助于类型推断,出于某种原因,与 jitnjit 编译函数不同。根据建议 here,解决方法是添加一个额外的 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()