Numba — не удается определить тип Numba

#python #numba

#python #numba

Вопрос:

Я не смог найти, как это сделать. Рассмотрим этот dict:

 this_size = numba.typed.Dict.empty(key_type=numba.types.float64, value_type=numba.types.float64)
  

Я в @numba.jit(nopython = True) деле . Я пытаюсь суммировать значения этого dict . Но я получаю:

 TypingError: Failed in nopython mode pipeline (step: nopython frontend)
Untyped global name 'sum': cannot determine Numba type of <class 'builtin_function_or_method'>

File "trial.py", line 163:
def strat_1(bid_price, ask_price, deal_size, deal_price, posture, post_update, is_out, num_ticks, tick_size, point_value):
    <source elided>
                BBB[i] = sum(this_size.values())
  

Ответ №1:

Редактировать: sum теперь поддерживается с версии Numba 0.54! (примечания к выпуску, PR)


Похоже sum , его нет в списке поддерживаемых встроенных функций (начиная с версии Numba 0.51.2). Прямо сейчас Numba поддерживает растущее, но все еще довольно ограниченное подмножество ванильного Python и NumPy.

Numba поддерживает np.sum , хотя я не смог убедить его принимать значения вашего словаря (это может сработать с немного большей доработкой). Единственный способ, которым я получил его для компиляции, — это откат ванильного цикла for:

 import numba
import numpy as np

this_size = numba.typed.Dict.empty(key_type=numba.types.float64, value_type=numba.types.float64)

@numba.njit
def my_sum(d):
  total = 0.0
  for val in d.values():
    total  = val
  return total

print(my_sum(this_size))