import numpy as np
from numba import vectorize
global DOUBLE
@vectorize("int64(int64)")
def double(x):
return 2 * x
DOUBLE = double
@vectorize("int64(int64, int64)")
def two_x_plus_y(x, y):
global DOUBLE
return DOUBLE(x) + y
< /code>
Я могу легко запустить любой из следующих кодов: < /p>
arg1 = np.arange(5, dtype=np.int64)
arg2 = arg1 + 5
scratch = np.zeros_like(arg1)
print(two_x_plus_y(arg1, arg2))
result = double(arg1, out=scratch)
assert result is scratch
print(scratch)
print(two_x_plus_y(arg1, arg2, out=scratch))
< /code>
И все работает точно так же, как я ожидал.@vectorize("int64(int64, int64)")
def two_x_plus_y_alt(x, y):
global DOUBLE
scratch = np.zeros_like(x)
DOUBLE(x, out=scratch)
return scratch + y
< /code>
Компиляция Numba не удается. Его несчастье, по -видимому, из out =
(это массово снятая версия проблемы. Я ищу, как решить ошибку компиляции ниже, а не как я должен был написать этот пример игрушки.)[code]import numpy as np from numba import vectorize
global DOUBLE
@vectorize("int64(int64)") def double(x): return 2 * x
DOUBLE = double
@vectorize("int64(int64, int64)") def two_x_plus_y(x, y): global DOUBLE return DOUBLE(x) + y < /code> Я могу легко запустить любой из следующих кодов: < /p> arg1 = np.arange(5, dtype=np.int64) arg2 = arg1 + 5 scratch = np.zeros_like(arg1)
print(two_x_plus_y(arg1, arg2))
result = double(arg1, out=scratch) assert result is scratch print(scratch)
print(two_x_plus_y(arg1, arg2, out=scratch)) < /code> И все работает точно так же, как я ожидал.@vectorize("int64(int64, int64)") def two_x_plus_y_alt(x, y): global DOUBLE scratch = np.zeros_like(x) DOUBLE(x, out=scratch) return scratch + y < /code> Компиляция Numba не удается. Его несчастье, по -видимому, из out = [/code]. Есть ли какой-нибудь обходной путь для этого?>
Новичок в Opentelemetry-CPP, поэтому я написал небольшое тестовое приложение под Ubuntu 22, чтобы сгенерировать и отправить запись журнала GRCP. Приложение компилирует и запускается, а журналы OTEL Collector показывают получение сообщения. С помощью...