CUDA中的本地内存比共享内存慢吗?

wlzqhblo  于 2023-05-16  发布在  其他
关注(0)|答案(1)|浏览(191)

我只发现了一个注解,本地内存比寄存器内存慢,寄存器内存是每线程两个类型。
共享内存应该很快,但它比[线程的]本地内存更快吗?
我想做的是一个中值滤波器,但是用一个给定的百分位数而不是中值。因此,我需要从列表中取出块,对它们进行排序,然后选择一个合适的。但我不能开始排序共享内存列表,否则会出错。如果只复制到本地内存,我会损失很多性能吗?

ddarikpa

ddarikpa1#

本地内存就是线程本地全局内存。它比寄存器或共享内存慢得多(在带宽和延迟方面)。它还消耗否则将可用于全局存储器事务的存储器控制器带宽。溢出或故意使用本地内存对性能的影响可能很小,也可能很严重,具体取决于您使用的硬件以及本地内存的使用方式。
根据Vasily Volkov的研究-参见Better performance at lower occupancypdf)-Fermi GPU上共享内存和寄存器之间的有效带宽差异约为8倍(共享内存约为1000 Gb/s,寄存器约为8000 Gb/s)。这与CUDA文档有些矛盾,CUDA文档暗示共享内存的速度与寄存器相当。

相关问题