CUDA编程 - L1和L2缓存

8

您好,能否请您解释一下在CUDA编程中使用“L1和L2”缓存与仅使用“L2”缓存之间的区别?我应该期望什么样的执行时间?何时可以期望更小的GPU时间?当我同时启用L1和L2缓存或只启用L2缓存时会有什么不同呢?谢谢。

1个回答

11

一般情况下,您应该保持L1和L2高速缓存都启用。尽可能将内存访问合并,即warp中的线程应尽可能访问同一128B段内的数据(有关此主题的更多信息,请参见CUDA编程指南)。

有些程序无法以这种方式进行优化,例如它们的内存访问是完全随机的。对于这些情况,绕过L1高速缓存可能会有益,从而避免在只需要4字节时加载整个128B行(因为最小值仍为32B)。显然,这样可提高效率:从128个有用字节中获得4个,可以改进为从32个中获取4个。


2
谢谢Tom!我还不能投票!但是你的答案对我非常有用 :) - Saman I

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接