您能否解释在 CUDA 编程中同时使用“L1 和 L2”缓存或“仅 L2”缓存之间的区别?在时间执行中我应该期待什么?我什么时候可以期待更小的 GPU 时间?当我同时启用 L1 和 L2 缓存或仅启用 L2 时?谢谢
问问题
2224 次
1 回答
11
通常,您会同时启用 L1 和 L2 缓存。您应该尝试尽可能多地合并您的内存访问,即,warp 中的线程应该尽可能多地访问同一 128B 段内的数据(有关此主题的更多信息,请参阅CUDA 编程指南)。
有些程序无法以这种方式进行优化,例如它们的内存访问是完全随机的。对于这些情况,绕过 L1 缓存可能是有益的,从而避免在您只需要例如 4 个字节时加载整个 128B 行(您仍将加载 32B,因为这是最小值)。显然有效率提升:4 个有用字节从 128 提高到 4 从 32。
于 2012-04-16T21:50:03.453 回答