,python,python-3.x,numpy,numba"/>

首页 > 解决方案 > 未键入的全局名称“sum_”:无法确定 Numba 类型

问题描述

我收到错误消息:

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

我应该做什么?

标签: pythonpython-3.xnumpynumba

解决方案


我以前遇到过这个问题。jit由于某种原因,与njit编译函数不同,提前编译模式对类型推断没有帮助。正如这里所建议的,一种解决方法是添加一个额外的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()

推荐阅读