15

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

共享内存应该是快的,但它比本地内存(线程的)快吗?

我想做的是一种中值过滤器,但使用给定的百分位数而不是中值。因此,我需要获取列表中的大部分内容,对它们进行排序,然后选择一个合适的。但我无法开始对共享内存列表进行排序,否则会出错。仅复制到本地内存会损失很多性能吗?

4

1 回答 1

25

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

根据 Vasily Volkov 的研究 - 请参阅Better performance at lower occupancy ( pdf ) - 共享内存和 Fermi GPU 上的寄存器之间的有效带宽差异约为 8 倍(共享内存约为 1000 Gb/s 和 8000 Gb/s用于寄存器)。这在某种程度上与 CUDA 文档相矛盾,这意味着共享内存在速度上与寄存器相当。

于 2011-08-30T09:33:12.793 回答