C语言 在非gpu硬件上发生Do bank冲突



这篇博文解释了内存库冲突如何影响转置函数的性能。

现在我不禁想知道:同样的事情发生在一个"正常"的cpu(在多线程上下文中)?或者这是CUDA/OpenCL特有的?或者它甚至没有出现在现代cpu中,因为它们的缓存大小相对较大?

自20世纪60年代最早的矢量处理cpu以来,一直存在银行冲突这是由交错存储器或多通道存储器访问引起的。

交错存储器访问或MCMA解决了RAM访问速度慢的问题,通过分阶段访问到每个单词的记忆来自不同的银行或通过不同的渠道。但是有一个副作用,访问同一存储库的内存比访问相邻存储库的内存需要更长的时间。

摘自维基百科上1980年代的Cray 2 http://en.wikipedia.org/wiki/Cray-2

"主存库被安排在象限中,可以同时访问,允许程序员将数据分散到内存中以获得更高的并行性。这种方法的缺点是,在前台处理器中设置分散/收集单元的成本相当高。与内存库数量相对应的跨步冲突遭受了性能损失(延迟),这在基于2次fft的算法中偶尔会发生。由于Cray 2的内存比Cray 1或x - mp大得多,这个问题很容易通过在数组中添加一个额外的未使用元素来分散工作来解决。

相关内容

  • 没有找到相关文章

最新更新