为什么Cuda / OpenCL的全球内存中没有银行冲突?
有一点我没想到并且谷歌没有帮助我,为什么可能与共享内存存在冲突,而不是全局内存?与寄存器存在银行冲突吗?
UPDATE
哇,我非常感谢Tibbit和Grizzly的两个答案。看来我只能在一个答案上给出绿色复选标记。堆栈溢出我是新手。我想我必须选择一个最好的答案。我可以做点什么来说谢谢答案我不给绿色支票吗?
没有找到相关结果
已邀请:
3 个回复
凡夕
。单个线程可以进行访问,但是事务将在块级处理(实际上是warp / half warp级别,但我并不是很复杂)。如果两个块访问相同的内存,我不相信它会花费更长的时间,并且它可能会被最新设备中的L1缓存加速 - 尽管这不是透明的。 谁可以阅读&写共享内存?
如果每个区块只有1个线程,则不会发生银行冲突,但您的性能不合理。发生银行冲突是因为一个块被分配了几个,比如512个线程,并且它们都在争夺同一个银行内的不同地址(不是完全相同的地址)。在CUDA C编程指南 - 图G2,第167页(实际上是pdf的第177页)末尾有一些关于这些冲突的优秀图片。链接到3.2版 谁可以阅读&写寄存器?
因此,一次只有一个线程正在访问它。
场竟矩喘崩
柑恫祟