我已经使用OpenBlas编译了numpy,我想知道为什么einsum比dot慢得多(我理解在三个索引的情况下,但我不明白为什么在两个索引的情况下性能也较差)?这里有一个例子:
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像numpy.dot一样使用OpenBlas和并行化呢?为什么np.einsum如果注意到点积不直接调用np.dot呢?