【发布时间】:2012-07-01 19:25:02
【问题描述】:
Compute Capability 2.0 (Fermi) 发布后,我想知道是否还有任何用于共享内存的用例。也就是说,什么时候使用共享内存比让 L1 在后台发挥它的魔力更好?
共享内存是否只是为了让为 CC
为了通过共享内存进行协作,块中的线程写入共享内存并与__syncthreads()同步。为什么不简单地写入全局内存(通过 L1),并与__threadfence_block() 同步?后一个选项应该更容易实现,因为它不必与两个不同的值位置相关,并且它应该更快,因为没有从全局内存到共享内存的显式复制。由于数据被缓存在 L1 中,线程不必等待数据真正到达全局内存。
使用共享内存,可以保证放置在那里的值在整个块的持续时间内保持在那里。这与 L1 中的值相反,如果不经常使用它们就会被驱逐。在任何情况下,将这些很少使用的数据缓存在共享内存中,而不是让 L1 根据算法实际具有的使用模式来管理它们更好吗?
【问题讨论】:
标签: caching cuda shared-memory