如何使用numba AOT编译多个相关函数?

时间:2019-03-18 15:43:29

标签: python compilation numba

我想使用numba.pycc.CC提前编译函数(AOT)。我的问题是,我在2个脚本中有3个功能(其中一个主要功能取决于其他两个),我只想 export 其中一个功能(主要功能),但是我仍然想要编译所有这三个函数,以便它们快速运行。从上面的文档来看,它似乎没有解释如何做到这一点。

伪代码看起来像这样

# script1.py

from script2 import _func2
from numba.pycc import CC
cc = CC("my_module")


@cc.export("main", "f8[:, :](f8[;, :], f8)")
def main(mat, n):
    """Use _func1 to operate on an array `mat`"""
    final_result = 2 * _func1(mat, n)
    return final_result


def _func1(mat, n):
    """Use _func2 to operate on an array `mat`"""
    out = ... <operate on `mat`> ...
    out = _func2(out, n)
    return out

然后是script2.py:

# script2.py

def _func2(mat, n):
    result = ... <operate on `mat`>...
    return result

当然,如果我不装饰其他功能,则会出现numba错误

>>> Untyped global name '_func1': cannot determine Numba type of <class 'function'>

文档似乎执行此操作的方法是导出每个函数,但这不是我想要执行的操作。我只想导出main,但仍然具有用numba编译的所有功能jit。即使我尝试用jit装饰每个函数,我仍然会遇到相同的错误。

我如何编译所有功能,但仅导出main

0 个答案:

没有答案