Мне определенно чего-то не хватает, когда дело доходит до вывода типов в Numba. Я написал этот небольшой образец и не могу понять, почему он не может определить тип при компиляции. Вы можете воспроизвести его, просто попытавшись запустить его:
import numpy as np
from numba import njit, prange
@njit(["void(uint8[::1], int16)"])
def run_a(arr, numeric):
final_result = run_b(arr, numeric) # <<== FAILS HERE
print(final_result)
@njit(["float64(uint8[::1], int16)"], fastmath=True, nogil=True)
def run_b(arr, numeric):
value1 = 1.0
value_array = np.zeros(numeric, np.float64)
return value1 + value_array.sum()
array = np.arange(10, dtype=np.uint8)
run_a(array, 2)
Он не работает с:
numba.core.errors.TypingError: Failed in nopython mode pipeline (step: nopython frontend)
Untyped global name 'run_b': cannot determine Numba type of <class 'numba.core.ir.UndefinedType'>
File "tests.py", line 7:
def run_a(arr, numeric):
final_result = run_b(arr, numeric)
^
Почему он не может вывести типы в этом вызове? Я даже аннотировал сигнатуры функций, так что, насколько я могу судить, не должно быть никаких сомнений в их типе. Это всего лишь образец кода, я пытаюсь понять, что не так.
Что мне не хватает? Как заставить это скомпилировать?