问题标签 [bank-conflict]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cuda - 合并与银行冲突(Cuda)
使用 cuda 编程时,合并和银行冲突有什么区别?
是否只是在全局内存中发生合并,而在共享内存中发生银行冲突?
如果我的 GPU 支持 >1.2,我应该担心合并吗?它自己处理合并吗?
cuda - 什么是银行冲突?(做 Cuda/OpenCL 编程)
我一直在阅读 CUDA 和 OpenCL 的编程指南,但我无法弄清楚银行冲突是什么。他们只是深入研究如何解决问题,而没有详细说明主题本身。有人可以帮我理解吗?如果帮助是在 CUDA/OpenCL 的上下文中,或者只是计算机科学中的一般银行冲突,我没有偏好。
cuda - 为什么 Cuda/OpenCL 的全局内存中没有银行冲突?
我还没有弄清楚并且谷歌没有帮助我的一件事是,为什么可能与共享内存发生银行冲突,但在全局内存中却没有?银行与寄存器会发生冲突吗?
更新 哇,我真的很感谢 Tibbit 和 Grizzly 的两个答案。看来我只能给一个答案打一个绿色的复选标记。我对堆栈溢出很陌生。我想我必须选择一个答案作为最佳答案。我可以做些什么来感谢我不给绿色检查的答案吗?
c++ - GPU 共享内存库冲突
我试图了解银行冲突是如何发生的。
如果我在全局内存中有一个大小为 256 的数组,并且我在一个块中有 256 个线程,并且我想将该数组复制到共享内存。因此每个线程都复制一个元素。
这个简单的动作会导致银行冲突吗?
现在假设数组的大小大于线程数,所以我现在使用它来将全局内存复制到共享内存:
上面的代码会导致银行冲突吗?
opencl - OpenCL 银行冲突 - 删除内存/损坏数据?
对于这个问题的含糊之处,我提前道歉。
背景:
我正在尝试在 OpenCL 中编写形态图像处理函数。我有一个 __local 缓冲区,用于存储每个像素的数据(每个像素由一个工作项表示,还没有循环展开)。此外,由于我处于测试早期,我只使用一个工作组(8x8 像素图像,因此我可以手动验证结果)。
问题:
有时必须将来自一个、两个、三个甚至四个像素的数据添加到另一个像素缓冲区中。由于这些是同一工作组中的相邻像素,我确信我会导致本地内存库冲突。没关系,速度不是我的首要任务(还!)。然而,这些银行冲突似乎正在丢弃数据,甚至破坏数据。我一直非常小心不要溢出或过度运行缓冲区。
所以,我的第一个问题是:实际上,银行冲突是否可能导致数据损坏和丢失?Opencl 规范似乎表明该操作应该序列化,从而降低带宽 - 但没有提到数据丢失。
我的第二个问题是:救命!- 我能做些什么呢?
任何指导将不胜感激 - 谢谢!
cuda - CUDA中银行冲突与合并访问之间的关系
我尝试将一些数据从共享内存传输到全局内存。一些连续的线程将访问一个银行(但不是相同的 32 位)。所以存在一些银行冲突。(我使用 Visual Profiler 进行检查)但是,这些数据也被合并,然后被传输到全局内存。(我用Visual Profiler来检查)为什么数据是以合并的方式写入全局内存的?在我看来,流式多处理器会一个一个地弹出 32 位字(基于银行的带宽)。所以内存事务不能在全局内存中合并。我在这里可能会犯一些错误。请帮忙找出错误或给我一个合理的解释。谢谢你。
cuda - 从共享内存中读取 int 数组是否会排除银行冲突?
我正在设计一个 CUDA 内核,每个线程块将启动 16 个线程。我希望处理的共享内存(即每个线程块)中有一个 N 个整数数组。
如果线程的访问模式在数组中是连续的,那么这是否意味着不会有银行冲突?我知道如果数组是 char 数组,则会发生银行冲突,但我不完全确定如果它是 int 数组会发生什么。我猜会有银行冲突,因为每组 4 个连续的整数共享同一个内存库?
如果这是真的,那么防止银行冲突的正确解决方案是什么?直方图样本中的地址加扰?
cuda - 2.x 设备中的存储库冲突
带有 2.x 设备的设备中的存储库冲突是什么?据我了解 CUDA C 编程指南,在 2.x 设备中,如果两个线程访问同一个共享内存库中的同一个 32 位字,则不会导致库冲突。相反,这个词被广播。当两个线程在同一个共享内存库中写入相同的 32 位字时,只有一个线程成功。
由于片上内存为 64 KB(共享内存为 48 KB,L1 为 16 KB,反之亦然),并且它分为 32 个存储区,我假设每个存储区由 2 KB 组成。所以我认为如果两个线程访问同一个共享内存银行中的两个不同的 32 位字,就会出现银行冲突。它是否正确?
cuda - 使用内核参数会导致银行冲突吗?
内核参数存储在片上共享内存中。如果线程尝试访问同一个存储区,共享内存可能会发生存储区冲突。 所以我的问题是:这是否意味着使用内核参数线程会导致银行冲突?
cuda - 如何减少此代码中的银行冲突?
这段 CUDA 代码在 Nsight 分析时报告了很多银行冲突。第一个片段包含常量定义和内核调用:
第二个片段包含内核代码:
我想知道为什么会发生银行冲突。我认为可能发生冲突的唯一方法是,如果映射到同一银行的不同数组中的访问被序列化。