Есть ли причина, по которой следующий код запускается за 2 секунды,
def euclidean_distance_square(x1, x2):
return -2*np.dot(x1, x2.T) + np.expand_dims(np.sum(np.square(x1), axis=1), axis=1) + np.sum(np.square(x2), axis=1)
а следующий код numba выполняется за 12 секунд?
@jit(nopython=True)
def euclidean_distance_square(x1, x2):
return -2*np.dot(x1, x2.T) + np.expand_dims(np.sum(np.square(x1), axis=1), axis=1) + np.sum(np.square(x2), axis=1)
Мой x1 является матрицей размерности (1, 512), а x2 - матрицей размерности (3000000, 512). Странно, что numba может быть намного медленнее. Я использую это неправильно?
Мне действительно нужно ускорить это, потому что мне нужно запустить эту функцию 3 миллиона раз, а 2s все еще слишком медленный.
Мне нужно запустить это на CPU, потому что, поскольку вы можете видеть, что размер x2 настолько огромен, его нельзя загрузить на графический процессор (или, по крайней мере, мой GPU), недостаточно памяти.