3

我已经搜索了有关在 CUDA 中使用 L2 缓存的其他线程。但是,找不到解决办法。如何使用 L2 缓存?是否有任何调用函数或声明供其使用?就像,为了使用共享内存,我们使用__device__ __shared__. L2 Cache有类似的东西吗?

4

1 回答 1

4

L2 缓存对设备代码是透明的。所有未在 L1 中命中的内存访问(全局、局部、表面、纹理、常量和指令)都转到 L2。所有写入都通过 L2。

CUDA C 编程指南 F.4.2:全局内存

本节提供有关 L2 的更多详细信息。

编译器标志 -dlcm=cg 可用于使全局访问在 L1 中不缓存并在 L2 中缓存。

CUDA C 编程指南 B.5:内存栅栏函数

函数 __threadfence() 可用于确保对全局内存的所有写入在 L2 中都是可见的。

函数 __threadfence_system() 可用于确保对全局内存的所有写入对主机线程都是可见的。

于 2012-09-09T15:01:43.403 回答