2

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

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

4

1 回答 1

1

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

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

  • CC 2.0 每个 SM 1 个纹理单元
  • CC 2.1 每个 SM 2 个纹理单元(每个扭曲调度器 1 个)
  • CC 3.0/3.5 每个 SM 4 个纹理单元(每个扭曲调度器 1 个)
  • CC 3.2/gk208 每个 SM 2 个纹理单元(每 2 个扭曲调度器 1 个)

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

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

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

于 2014-02-28T06:24:50.497 回答