【问题标题】:Constant cache vs Texture cache for broadcasting behaviour in CUDA用于 CUDA 中的广播行为的常量缓存与纹理缓存
【发布时间】:2014-02-28 00:07:17
【问题描述】:

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

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

【问题讨论】:

    标签: caching nvidia gpu-constant-memory


    【解决方案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 个周期内请求和返回数据。

    【讨论】:

    • 感谢您的回答。如果数据在8个周期内返回,这会比常量缓存慢吗? 1个指令问题需要一个周期吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 2012-01-08
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多