【发布时间】:2014-08-10 02:43:35
【问题描述】:
blog post 解释了内存库冲突如何影响转置函数的性能。
现在我不禁想知道:“普通”cpu(在多线程上下文中)是否也会发生同样的情况?或者这是特定于 CUDA/OpenCL 的?或者它甚至没有出现在现代 CPU 中,因为它们的缓存大小相对较大?
【问题讨论】:
-
GPU 和 CPU 以相同的方式访问内存,缓存并不神奇。在 CPU 上转置也会很慢。
-
是的,CPU 也存在缓存库冲突。即使数据适合 L1 缓存,我个人也观察到 AMD Piledriver 写入 5 个按临界步幅间隔开的流的速度降低了 > 10 倍。
-
我承认缓存库冲突和假别名是不同的,但很难区分。所以我可能遇到了错误的别名而不是银行冲突。
-
他们肯定会遭受银行冲突的困扰,尽管这是所讨论的确切微架构的产物。参见here,例如关于 Haswell 与 SandyBridge 的银行业务变化
-
@rubenvb:我从这个问题中删除了 CUDA 标签是有原因的——它与 CUDA 编程无关。为什么重新添加它?
标签: c opencl cpu-cache bank-conflict