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 错误,因为 nbtypeof 都无法识别:

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