2012-04-16 138 views
4

请您介绍一下在CUDA编程中使用“L1和L2”高速缓存还是“仅L2”高速缓存之间的区别?我应该在时间执行中期待什么?我什么时候可以期待更短的时间?当我启用L1和L2缓存或只启用L2时?谢谢CUDA编程 - L1和L2高速缓存

回答

8

通常你会离开L1和L2缓存启用。你应该尝试尽可能地合并你的存储器访问,即一个warp内的线程应该尽可能地访问同一个128B段内的数据(关于这个主题的更多信息,请参阅CUDA Programming Guide)。

某些程序无法以这种方式进行优化,例如,它们的存储器访问完全是随机的。对于这些情况,绕过L1缓存可能会有所帮助,从而避免在仅需要时加载整个128B行,例如4个字节(因为这是最小值,您仍将加载32B)。显然有一个效率增益:从128的4个有用字节从32提高到4。

+1

谢谢汤姆!我还不能投票!但你的回答对我来说非常有用:) – 2012-04-17 01:51:39