Я играл с numba и numexpr, пытаясь ускорить простое умножение матричных элементов. Я не смог получить лучшие результаты, они оба в основном (по скорости) эквивалентны функции numpys multiply. Кому-нибудь повезло в этой области? Я использую numba и numexpr неправильно (я совершенно новичок в этом), или это совсем плохой подход, чтобы попытаться ускорить это. Вот воспроизводимый код, спасибо вам за продвинутый:
import numpy as np
from numba import autojit
import numexpr as ne
a=np.random.rand(10,5000000)
# numpy
multiplication1 = np.multiply(a,a)
# numba
def multiplix(X,Y):
M = X.shape[0]
N = X.shape[1]
D = np.empty((M, N), dtype=np.float)
for i in range(M):
for j in range(N):
D[i,j] = X[i, j] * Y[i, j]
return D
mul = autojit(multiplix)
multiplication2 = mul(a,a)
# numexpr
def numexprmult(X,Y):
M = X.shape[0]
N = X.shape[1]
return ne.evaluate("X * Y")
multiplication3 = numexprmult(a,a)