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

时间:2011-08-30 09:20:31

标签: c cuda gpu-programming gpu-shared-memory gpu-local-memory

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

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

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

1 个答案:

答案 0 :(得分:24)

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

根据瓦西里·沃尔科夫的研究 - 见Better performance at lower occupancypdf) - 共享存储器与费米GPU上的寄存器之间的有效带宽差异大约为8倍(约为1000 Gb / s)共享内存和8000 Gb / s的寄存器)。这有点与CUDA文档相矛盾,这意味着共享内存在速度上与寄存器相当。