【发布时间】:2012-08-15 08:10:24
【问题描述】:
我想分析 GTX480 上的全局内存事务数。但是, uncached_global_load_transaction 选项无济于事,因为该字段的输出始终为 0。还有其他方法吗?例如,我可以启用其他计数器并根据它们计算交易数量吗?
【问题讨论】:
我想分析 GTX480 上的全局内存事务数。但是, uncached_global_load_transaction 选项无济于事,因为该字段的输出始终为 0。还有其他方法吗?例如,我可以启用其他计数器并根据它们计算交易数量吗?
【问题讨论】:
全局内存是一个虚拟地址空间。数据可以驻留在设备内存或固定系统内存中。对于 Compute Capability 2.x 设备,您可以按如下方式计算层次结构:
SM 到 L1C 全局加载事务
sm2l1c_global_load_transactions = l1_global_load_hit + l1_global_load_missSM 到 L2C 全局加载事务
sm2l2c_global_load_transactions = (l1_global_load_miss * 4) + uncached_global_load_transactionCUDA Profiler 不公开 global_atomic、global_atomic_cas 和 global_red 操作的计数器。
CUDA Profiler 不会公开计数器来根据全局与本地显示从 L2 到系统内存或设备内存的数据。您可以使用以下计数器获取 L2 的带宽和系统内存(通过 PCIe)或设备内存(DRAM)的带宽:
L2 交易
l2_read_transactions = sum(l2_subp{0,1}_read_sector_queries)设备内存(FB、DRAM)
fb_read_transactions = sum(fb_supb{0,1}_read_sectors)全局存储、本地加载/存储和 L2 到系统内存的计算遵循类似的模式。
有关详细信息,请参阅CUPTI User's Guide 部分事件参考 - 计算能力 2.x。这些字符串名称应该适用于使用 CUDA Profiler、Visual Profiler、nvprof (5.0) 和 CUPTI API 的最新驱动程序。
如果您使用 CUDA 5.0,nvprof 命令nvprof --query-events 将列出您已安装设备上的所有可用事件。
【讨论】: