您好,能否请您解释一下在CUDA编程中使用“L1和L2”缓存与仅使用“L2”缓存之间的区别?我应该期望什么样的执行时间?何时可以期望更小的GPU时间?当我同时启用L1和L2缓存或只启用L2缓存时会有什么不同呢?谢谢。
一般情况下,您应该保持L1和L2高速缓存都启用。尽可能将内存访问合并,即warp中的线程应尽可能访问同一128B段内的数据(有关此主题的更多信息,请参见CUDA编程指南)。 有些程序无法以这种方式进行优化,例如它们的内存访问是完全随机的。对于这些情况,绕过L1高速缓存可能会有益,从而避免在只需要4字节时加载整个128B行(因为最小值仍为32B)。显然,这样可提高效率:从128个有用字节中获得4个,可以改进为从32个中获取4个。