2010-08-19 53 views
2

与cuda一起编程时,整合与银行冲突有什么区别?
只有当共享内存中的银行冲突时,全局内存才会发生合并?
我应该担心聚结,如果我有> 1.2支持的GPU?它是否自己处理聚结?整合与银行冲突(Cuda)

回答

5

是的,凝聚的读/写操作,适用于全球的读取和银行的冲突是适用于共享内存读/写。

不同的计算能力的设备有不同的行为在这里,但1.2的GPU仍然需要小心,以确保你合并的读取和写入 - 它只是有一些优化技术,使东西更容易为你

你应该阅读CUDA Best Practices指南。这涉及到这些问题的大量细节。

2

是:合并访问仅与全局内存相关,银行冲突仅与共享内存相关。

退房也是高级CUDA C语言培训课程,首节进入一些细节来解释> 1.2的GPU硬件如何帮助你,你仍然需要考虑的优化。它也解释了共享内存银行冲突。例如,请查看this recording

扫描减少样品中的SDK也解释了存储器组冲突真的很好用渐进式改进的内核。

1

A> 1.2 GPU将尝试这样做可以WRT聚结最好的,因为它是能够组存储器访问适合的256个字节的同一存储器原子之内的相同的大小和写入出来作为1个存储器写入。 GPU将负责重新排序访问并将它们对齐到正确的内存边界。 (在早期的GPU中,warp内的内存交易必须与内存原子对齐,并且必须按照正确的顺序排列。)

但是,为了获得最佳性能,您仍然需要确保那些合并机会可用。如果warp中的所有线程都将内存事务处理为完全不同的内存原子,则聚合器无法执行任何操作,因此仍需要了解内核的内存局部性行为。