关于英特尔的条带挖掘示例

时间:2014-10-17 08:31:16

标签: c++ performance for-loop cpu-cache

在英特尔的剥离采矿示例中:

https://software.intel.com/en-us/articles/strip-mining-to-optimize-memory-use-on-32-bit-intel-architecture

为什么不将Transform和Lighting合并为一个循环?它可以解决缓存驱逐问题。

有人在评论中提出了同样的问题,但没有答案。

如果分裂循环以某种方式更快......为什么?我们应该在什么条件下拆分循环?

我浏览了几篇关于分裂循环的帖子,但我仍然没有得到它。

1 个答案:

答案 0 :(得分:1)

如果只能对这些操作中的一个进行矢量化,那么组合它们可以防止循环的矢量化。在这种情况下,将阵列分成高速缓存大小的条纹会更好。我不知道这是否适用于TransformLighting。如果没有,那么它们可能不一定是示范的好例子。

当循环是部分可矢量化的(是一个单词?)而部分不是,裂变*通常是要走的路。

*拆分实际上是根据wikipedia

在文章中使用的技术的名称