【问题标题】:Why loop tiling?为什么要循环平铺?
【发布时间】:2015-02-03 04:44:24
【问题描述】:

根据维基百科 (http://en.wikipedia.org/wiki/Loop_tiling) 和许多其他来源,循环平铺 是一种循环优化技术,有助于利用缓存(参考位置)。将迭代空间划分为块数,从而更好地利用缓存。

从上面的链接中,有人可以解释它对一维案例有什么不同(概述部分)吗?在我看来,两种情况下都会发生相同数量的缓存未命中。

【问题讨论】:

  • 我认为这只是为了演示该技术。实际使用的是嵌套循环,AFAIK。

标签: loops caching optimization tiling


【解决方案1】:

“一维案例”是不完整的,它只是用来描述阻塞的概念。没有“身体”,所以没有什么可以分析的。

阻塞在算法中多次使用相同数据的情况下很有用,阻塞确保数据在你重用时一直在缓存中。

这样的例子

for(i=0; i<N; ++i){
  // Processing 1
  ...
}
for(i=0; i<N; ++i){
  // Processing 2
  ...
}

for(j=0; j<N; j+=B){
  for(i=j; i<min(N, j+B); ++i){
    // Processing 1
    ....
  for(i=j; i<min(N, j+B); ++i){
    // Processing 2
    ....
  }
}

会更有说服力。

【讨论】:

    猜你喜欢
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多