跨越CUDA内核的L1缓存持久性

时间:2012-07-02 00:13:36

标签: cuda gpu cpu-cache

据我所知,GPU上的共享内存不会持久存在于不同的内核中。但是,L1缓存是否会在不同的内核调用中持续存在?

1 个答案:

答案 0 :(得分:6)

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

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

当另一个内核运行时,缓存中的数据不可能有效,因为许多warp很可能是由该SM运行的,因此对于以前的内核来说,所以它并不重要。它持续存在。