【问题标题】:L1 cache persistance across CUDA kernels跨 CUDA 内核的 L1 缓存持久性
【发布时间】:2012-07-02 00:13:36
【问题描述】:

我了解 GPU 上的共享内存不会跨不同内核持续存在。但是,L1 缓存是否会在不同的内核调用中持续存在?

【问题讨论】:

标签: cuda gpu cpu-cache


【解决方案1】:

SM L1 缓存在同一流或空流上的所有操作之间失效,以保证一致性。但这并不重要,因为 GPU 上的 L1 缓存并不是真正旨在改善给定执行线程内的时间局部性。在大规模并行处理器上,重要的是并行空间局部性。这意味着您希望彼此附近执行的线程访问彼此附近的数据。

当执行缓存内存加载时,它是针对单个 warp 完成的,并且缓存存储由该 warp 中的线程访问的缓存行(理想情况下只有单个行)。如果下一个 warp 访问相同的缓存行,则缓存将命中并且延迟将减少。否则,缓存将使用不同的缓存行更新。如果内存访问非常分散,那么后面的 warp 可能会在重用之前从早期的 warp 中逐出缓存行。

当另一个内核运行时,缓存中的数据不太可能有效,因为该 SM 可能已经为前一个内核运行了许多 warp,因此它是否持续存在并不重要.

【讨论】:

  • 感谢您的回复。有没有办法确定缓存是否在不同的内核调用中失效?我正在寻找空间和时间的局部性:)
  • SM L1缓存在同一流或空流上的所有操作之间失效,以保证一致性。
  • 将我的“我认为”替换为 Greg 上面的陈述。
  • 图形管道似乎从中受益匪浅。 link
猜你喜欢
  • 1970-01-01
  • 2013-02-07
  • 1970-01-01
  • 2012-09-15
  • 2016-02-10
  • 1970-01-01
  • 2016-01-13
  • 2012-12-26
  • 1970-01-01
相关资源
最近更新 更多