Numba AOT 编译带有函数参数的函数
Numba AOT compile functions with functional arguments
我正在尝试在 Numba 中 AOT 编译一个具有功能参数的函数,但我找不到正确指定其签名的方法。使用一个非常基本的例子,使用标准的 numba @njit
装饰器,我会写:
import numba as nb
@nb.njit(nb.f8(nb.f8, nb.f8))
def fcn_sum(a, b):
return a + b
@nb.njit(nb.f8(nb.typeof(fcn_sum), nb.f8, nb.f8))
def test(fun, a, b):
return fun(a, b)
其中 nb.typeof(fcn_sum)
returns 仅对 fcn_sum
函数有效的调度程序对象。不幸的是,AOT 编译的相同策略会生成 NameError
错误,因为 nb
和 typeof
都无法识别:
@cc.export('test', 'f8(nb.typeof(fcn_sum), f8, f8)')
def test(fun, a, b):
return fun(a, b)
如何指定函数参数的签名才能使此示例正常运行?
使用与@njit 相同的签名时没有错误:
@cc.export('test', nb.f8(nb.typeof(fcn_sum), nb.f8, nb.f8))
def test(fun, a, b):
return fun(a, b)
我正在尝试在 Numba 中 AOT 编译一个具有功能参数的函数,但我找不到正确指定其签名的方法。使用一个非常基本的例子,使用标准的 numba @njit
装饰器,我会写:
import numba as nb
@nb.njit(nb.f8(nb.f8, nb.f8))
def fcn_sum(a, b):
return a + b
@nb.njit(nb.f8(nb.typeof(fcn_sum), nb.f8, nb.f8))
def test(fun, a, b):
return fun(a, b)
其中 nb.typeof(fcn_sum)
returns 仅对 fcn_sum
函数有效的调度程序对象。不幸的是,AOT 编译的相同策略会生成 NameError
错误,因为 nb
和 typeof
都无法识别:
@cc.export('test', 'f8(nb.typeof(fcn_sum), f8, f8)')
def test(fun, a, b):
return fun(a, b)
如何指定函数参数的签名才能使此示例正常运行?
使用与@njit 相同的签名时没有错误:
@cc.export('test', nb.f8(nb.typeof(fcn_sum), nb.f8, nb.f8))
def test(fun, a, b):
return fun(a, b)