未键入的全局名称 '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 编译模式无助于类型推断,出于某种原因,与 jit
或 njit
编译函数不同。根据建议 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()
我收到错误:
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 编译模式无助于类型推断,出于某种原因,与 jit
或 njit
编译函数不同。根据建议 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()