6

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

4

1 回答 1

10

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

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

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

于 2012-07-02T00:49:28.303 回答