Могу ли я заставить выражение считаться константой с помощью numba? - PullRequest
0 голосов
/ 09 ноября 2019

Учитывая некоторый глобальный немутантный объект некоторого типа, неизвестного numba:

from types import SimpleNamespace
a = SimpleNamespace(b=2)

Я хотел бы иметь возможность ссылаться на член этого объекта как константу времени компиляции в пределах jitedфункция, что-то вроде этого:

@numba.njit
def foo():
    # return a.b   # fails, because numba tries to evaluate at runtime
    return numba.mark_this_as_constant(a.b)

Существует ли mark_this_as_constant в Numba уже под другим именем? Можно ли написать это самому, возможно, с пользовательским типом?

Я могу получить то, что хочу сегодня:

def foo(a_b=a.b):
   @numba.njit
   def foo():
       return a_b
   return foo
foo = foo()

, но это довольно грубо, и требует, чтобы я перечислял каждыйзакрытие сверху, а не в месте использования.

1 Ответ

0 голосов
/ 10 ноября 2019

вы пробовали что-то подобное?

a = SimpleNamespace(b=2)
a_b = a.b

@numba.njit
def foo():
    return a_b
...