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

Joh*_*Kay 14 c cuda gpu-programming gpu-shared-memory gpu-local-memory

我只发现本地内存比寄存器内存慢,每个线程两种类型.

共享内存应该很快,但它比[线程]的本地内存更快?

我想要做的是一种中值滤波器,但具有给定的百分位数而不是中位数.因此,我需要获取列表的块,对它们进行排序,然后选择一个合适的列表.但我无法开始对共享内存列表进行排序或出现问题.只要复制到本地内存,我会失去很多性能吗?

tal*_*ies 24

本地内存只是线程本地全局内存.它比寄存器或共享内存要慢得多(在带宽和延迟方面).它还消耗了可用于全局内存事务的内存控制器带宽.溢出或故意使用本地内存对性能的影响可能是从轻微到严重,具体取决于您使用的硬件以及本地内存的使用方式.

根据Vasily Volkov的研究 - 在较低占用率(pdf)下看到更好的性能 - 共享内存和Fermi GPU上的寄存器之间的有效带宽差异大约为8倍(共享内存大约为1000 Gb/s,8000 Gb/s)对于寄存器).这有点与CUDA文档相矛盾,这意味着共享内存在速度上与寄存器相当.