【问题标题】:CUDA programming - L1 and L2 cachesCUDA 编程 - L1 和 L2 缓存
【发布时间】:2012-04-16 20:10:12
【问题描述】:

您能否解释一下在 CUDA 编程中同时使用“L1 和 L2”缓存或“仅 L2”缓存之间的区别?在时间执行中我应该期待什么?我什么时候可以期待更小的 GPU 时间?当我同时启用 L1 和 L2 缓存或仅启用 L2 时?谢谢

【问题讨论】:

    标签: cuda coalescing


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢汤姆!我还不能投票!但你的回答对我很有用:)
    猜你喜欢
    • 2013-01-20
    • 1970-01-01
    • 2011-04-11
    • 2015-06-29
    • 2014-07-04
    • 1970-01-01
    • 2017-09-24
    • 2010-11-09
    • 2020-05-19
    相关资源
    最近更新 更多