用于CUDA中广播行为的常量缓存与纹理缓存

时间:2014-02-28 00:07:18

标签: caching nvidia gpu-constant-memory

我对计算能力3.5的设备的常量缓存和纹理缓存之间的差异感兴趣,特别是广播行为。 当warp中的所有线程从常量内存发出对同一数据元素的请求并且它在缓存中命中时,它将在一个周期内广播到所有线程。在这种情况下,纹理缓存的行为是什么?负载是否被序列化?

另外,我认为常量和纹理缓存都是每个多处理器并因此由多个块共享是正确的吗?

1 个答案:

答案 0 :(得分:1)

NVIDIA不提供有关常量缓存大小或位置的其他详细信息。

纹理缓存的数量各不相同。

  • 每个SM的CC 2.0 1纹理单元
  • CC 2.1 2每个SM的纹理单位(每个warp调度程序1个)
  • CC 3.0 / 3.5 4每个SM的纹理单位(每个warp调度程序1个)
  • CC 3.2 / gk208 2每个SM的纹理单位(每2个warp调度程序1个)

块中的变形将在SM中的warp调度程序中分配。

如果warp中的所有32个线程执行索引常量读取到同一地址,则如果请求在缓存中命中,则将在1指令问题中执行。

如果warp中的所有32个线程在CC3.5纹理缓存中执行LDG到同一地址,则将请求数据并在8个周期内返回。