#python #python-3.x #numpy #numba
#python #python-3.x #numpy #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()
Что я должен делать?
Ответ №1:
Я уже сталкивался с этой проблемой однажды. Режим компиляции с опережением времени по какой-то причине не помогает в выводе типов, в отличие 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()