У меня есть numpy, скомпилированный с OpenBlas, и мне интересно, почему einsum намного медленнее, чем точка (я понимаю в случае с 3 индексами, но я не понимаю, почему он также менее эффективен в случае с двумя индексами)? Вот пример:
import numpy as np
A = np.random.random([1000,1000])
B = np.random.random([1000,1000])
%timeit np.dot(A,B)
Out: 10 loops, best of 3: 26.3 ms per loop
%timeit np.einsum("ij,jk",A,B)
Out: 5 loops, best of 3: 477 ms per loop
Есть ли способ позволить einsum использовать OpenBlas и распараллеливание, например numpy.dot? Почему np.einsum не вызывает просто np.dot, если замечает скалярное произведение?