这个
blog post解释了内存库冲突如何杀死转置功能的性能.
现在我不得不想:在“正常”cpu(多线程上下文)中是否同样发生?还是具体针对CUDA / OpenCL?还是因为它们的缓存大小相对较大,甚至不会在现代的cpu中出现?
解决方法
自从1960年代以来最早的向量处理cpu出现了银行冲突
它是由交错存储器或多通道存储器访问引起的.
它是由交错存储器或多通道存储器访问引起的.
交互式内存访问或MCMA解决了通过分阶段访问来减慢RAM访问的问题
来自不同银行或通过不同渠道的每个单词的记忆.但是有一个副作用,来自同一个银行的存储器访问比访问相邻银行的内存需要更长的时间.
从1980年代的维基百科Cray 2 http://en.wikipedia.org/wiki/Cray-2
“主存储器被安排在象限中以同时访问,使程序员可以将数据分散在内存中,以获得更高的并行性.这种方法的缺点是在前台处理器中设置分散/收集单元的成本相当于存储库数量的冲突冲突在2功率FFT算法中偶尔会发生性能损失(延迟),因为Cray 2的存储器比Cray 1或X-MPs大得多,这个问题很容易纠正,通过添加一个额外的未使用的元素到数组来传播工作“