Как мне AOT компилировать несколько зависимых функций, используя numba? - PullRequest
0 голосов
/ 18 марта 2019

Я хочу скомпилировать функции Ahead of Time (AOT), используя numba.pycc.CC .Моя проблема в том, что у меня есть 3 функции в 2 сценариях (где одна основная функция зависит от других 2), и я хочу только экспортировать одну из этих функций (основная функция), но я все еще хочу скомпилировать все 3 функции, чтобы они работали быстро.Из приведенных выше документов, похоже, не объясняется, как это сделать.

Псевдокод выглядит следующим образом

# 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, но все функции jit скомпилированы с помощью numba.Даже если я попытаюсь украсить каждую функцию с помощью jit, я все равно получу те же ошибки.

Как мне скомпилировать все функции, но только экспортировать main?

...