我已经用 OpenBlas 编译了 numpy,我想知道为什么 einsum 比 dot 慢得多(我理解 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 ?