"an intermediate result is being cached" 是什么意思?
What does "an intermediate result is being cached" mean?
我有一组 n 向量存储在 3 x n 矩阵 z
中。我使用 np.einsum
找到外积。当我使用它计时时:
%timeit v=np.einsum('i...,j...->ij...',z,z)
我得到了结果:
The slowest run took 7.23 times longer than the fastest. This could mean that an
intermediate result is being cached
100000 loops, best of 3: 2.9 µs per loop
这里发生了什么,可以避免吗?最好的 3 是 2.9us,但最慢的可能更典型。
消息"intermediate result is being cached"只是%timeit 报告的固定消息中的盲目猜测。它可能是真的,也可能不是真的,你不应该认为它是正确的。
特别是,第一个 运行 最慢的最常见原因之一是数组仅在第一个 运行.[=11= 之后才位于 CPU cache 中]
CPUs 自动缓存东西;你无法避免这一点,而且你真的不想避免它。然而,优化算法使CPU缓存能够最佳工作是当今高性能计算需要考虑的瓶颈之一。
我有一组 n 向量存储在 3 x n 矩阵 z
中。我使用 np.einsum
找到外积。当我使用它计时时:
%timeit v=np.einsum('i...,j...->ij...',z,z)
我得到了结果:
The slowest run took 7.23 times longer than the fastest. This could mean that an
intermediate result is being cached
100000 loops, best of 3: 2.9 µs per loop
这里发生了什么,可以避免吗?最好的 3 是 2.9us,但最慢的可能更典型。
消息"intermediate result is being cached"只是%timeit 报告的固定消息中的盲目猜测。它可能是真的,也可能不是真的,你不应该认为它是正确的。
特别是,第一个 运行 最慢的最常见原因之一是数组仅在第一个 运行.[=11= 之后才位于 CPU cache 中]
CPUs 自动缓存东西;你无法避免这一点,而且你真的不想避免它。然而,优化算法使CPU缓存能够最佳工作是当今高性能计算需要考虑的瓶颈之一。