我已经搜索了有关在CUDA中使用L2缓存的其他线程。但是,无法找到解决方案。我该如何利用L2缓存?是否有调用函数或声明来使用它?就像使用共享内存一样,我们使用__device__ __shared__
。是否有类似于此的东西可用于L2缓存?
L2缓存对设备代码是透明的。所有对内存(全局、本地、表面、纹理、常量和指令)的访问,如果不命中L1,则会进入L2。所有写入都通过L2。
CUDA C编程指南 F.4.2 :全局内存
本节提供了有关L2的更多细节。
编译器标志 -dlcm=cg 可用于使全局访问在L1中无缓存,并在L2中进行缓存。
CUDA C编程指南 B.5 :内存屏障函数
函数__threadfence()可用于确保全局内存中的所有写入在L2中可见。
函数__threadfence_system()可用于确保所有对全局内存的写入对主机线程可见。