我有一个函数调用另一个函数,我想使用numba的提前(AOT)编译器。
简化的例子:
from numba.pycc import CC
cc = CC('test')
cc.verbose = True
@cc.export('calc', 'f8(f8, f8)')
def calc(a, b):
return a + b
@cc.export('calc2', 'f8(f8, f8)')
def calc2(a, b):
return a * calc(a, b)
if __name__ == "__main__":
cc.compile()
当我运行这段代码时,我得到以下错误:
Untyped global name 'calc': Cannot determine Numba type of <class 'function'>
我认为这意味着Numba不喜欢依赖函数。关于如何解决这个错误的建议?
需要在依赖函数前面添加@njit()
装饰器。对于当前的情况,代码将变成:
@nb.njit()
@cc.export('calc', 'f8(f8, f8)')
def calc(a, b):
return a + b