*修改* Nvidia Maxwell,增加了全局内存指令数

*Modified* Nvidia Maxwell, increased global memory instruction count

我使用基准测试(Parboil,Rodinia)对 GTX760(Kepler)和 GTX750Ti(Maxwell)进行了实验。然后我使用 Nvidia visual profiler 分析了结果。在大多数应用程序中,全局指令的数量在 Maxwell 架构上增加了 7-10 倍。

规格。两个显卡

GTX760 6.0Gbps 2048MB 256 位 192.2 GB/s

GTX750Ti 5.4Gbps 2048MB 128 位 86.4Gb/s

Ubuntu 14.04

CUDA 驱动程序 340.29

工具包 6.5

我编译了基准应用程序(未修改),然后从 NVVP(6.5) 收集了结果。分析所有 > 内核内存 > 从 L1/Shared 内存部分,我收集了全局负载 t运行 操作计数。

我在 kepler(link) and maxwell(link)

上附上了 histo 运行 模拟结果的截图

有人知道为什么全局指令数在 Maxwell 架构上增加了吗?

谢谢。

计数器gld_transactions在开普勒和麦克斯韦架构之间没有可比性。此外,这不等于执行的全局指令数。

在 Fermi/Kepler 这会计算 SM 到 L1 128 字节请求的数量。每执行 global/generic 条指令,它可以从 0-32 递增。

在 Maxwell 上全局操作都通过 TEX(统一缓存)。 TEX 缓存与 Fermi/Kepler L1 缓存完全不同。全局事务测量缓存中访问的 32B 扇区的数量。每执行 global/generic 条指令,它可以从 0-32 递增。

如果我们看 3 种不同的情况:

案例 1:warp 中的每个线程访问相同的 32 位偏移量。

案例 2:warp 中的每个线程访问一个 32 位偏移量,步幅为 128 字节。

案例 3:warp 中的每个线程根据其通​​道索引访问唯一的 32 位偏移量。

情况 4:warp 中的每个线程访问 128 字节内存范围内的唯一 32 位偏移量,该内存范围为 128 字节对齐。

gld_transcations 架构中的每个列表案例

            Kepler      Maxwell
Case 1      1           4
Case 2      32          32
Case 3      1           8
Case 4      1           4-16

我的建议是避免查看 gld_transactions。未来版本的 CUDA 分析器应该使用不同的指标,这些指标与过去的架构相比更具可操作性和可比性。

我建议查看 l2_{读、写}_{事务、吞吐量}。