如何在不使用cuda中的未缓存\u全局\u加载\u事务选项的情况下分析全局内存事务的数量?

如何在不使用cuda中的未缓存\u全局\u加载\u事务选项的情况下分析全局内存事务的数量?,cuda,gpu,Cuda,Gpu,我想分析GTX480上的全局内存事务数。但是,uncached_global_load_transaction选项没有帮助,因为该字段的输出总是0。还有别的办法吗?例如,我可以启用其他计数器并根据它们计算事务数吗?全局内存是一个虚拟地址空间。数据可以驻留在设备内存或固定系统内存中。对于Compute Capability 2.x设备,您可以按如下方式计算层次结构: SM到L1C全局加载事务 缓存事务为128B sm2l1c_global_load_transactions=l1_global_

我想分析GTX480上的全局内存事务数。但是,uncached_global_load_transaction选项没有帮助,因为该字段的输出总是0。还有别的办法吗?例如,我可以启用其他计数器并根据它们计算事务数吗?

全局内存是一个虚拟地址空间。数据可以驻留在设备内存或固定系统内存中。对于Compute Capability 2.x设备,您可以按如下方式计算层次结构:

SM到L1C全局加载事务

  • 缓存事务为128B
  • sm2l1c_global_load_transactions=l1_global_load_hit+l1_global_load_miss
SM到L2C全局加载事务

  • SM未缓存全局事务或二级缓存未命中在32B事务中
  • sm2l2c_全局_加载_事务=(l1_全局_加载_未命中*4)+未缓存的_全局_加载_事务
CUDA探查器不公开全局原子、全局原子和全局红色操作的计数器

CUDA探查器不公开计数器,以根据全局与本地将数据从L2显示到系统内存或设备内存。您可以使用以下计数器获得到L2的带宽以及到系统内存(通过PCIe)或设备内存(dram)的带宽:

二级事务

  • 二级查询是32B
  • 根据CUDA探查器的版本,这包括从以下一个或多个源到L2的读取:SM L1(本地、全局、原子、表面)、TEX缓存、常量缓存、指令缓存、MMU、复制引擎等
  • l2\u read\u transactions=sum(l2\u subp{0,1}\u read\u sector\u查询)
设备存储器(FB、DRAM)

  • DRAM的读取带宽来自二级未命中和ECC(如果启用)
  • FB查询为32B
  • fb\u read\u transactions=sum(fb\u supb{0,1}\u read\u扇区)
全局存储、本地加载/存储和L2到系统内存的计算遵循类似的模式

有关更多信息,请参阅“事件参考-计算能力2.x”一节。这些字符串名称应该与使用CUDA探查器、可视探查器、nvprof(5.0)和CUPTI API的最新驱动程序配合使用


如果使用CUDA 5.0 nvprof命令,则查询事件将列出已安装设备上的所有可用事件。

这只是SM到L1缓存全局访问的事务计数。如果您需要我进一步扩展其他类型交易的答案,请回复,我将扩展答案。谢谢您的回复,但这不是我需要的。我只对全局内存事务感兴趣,所以l1命中并不重要。