cuda 分析器中的本地缓存命中指标

local cache hit metric in cuda profiler

对于某些 CUDA 应用程序分析,我看到本地命中率(local_hit_rate 指标)的值为 0%。

我想用那个值来区分以下概念。

  1. 应用程序无法访问本地缓存。

  2. 对本地缓存的所有访问均未命中。

我怎样才能找到答案?由于 inst_compute_ld_stldst_issuedldst_executed 的值都非零,所以可以放弃第一个问题吗?或者还有别的?

设备是M2000即CC5.3CC5.2

nvprof 支持事件(原始计数器)和指标。这些可以使用以下命令查询: nvprof --查询事件 nvprof --query-metrics

CC5./6. 本地内存指标

  • local_load_transactions_per_request:为每个本地内存负载执行的本地内存负载事务的平均数量
  • local_store_transactions_per_request:为每个本地内存存储执行的本地内存存储交易的平均数量
  • local_load_transactions:本地内存加载事务数
  • local_store_transactions:本地内存存储事务数
  • local_hit_rate:本地加载和存储的命中率
  • local_memory_overhead:本地内存流量占一级缓存和二级缓存之间总内存流量的比率,以百分比表示
  • local_load_throughput:本地内存负载吞吐量
  • local_store_throughput:本地内存存储吞吐量
  • inst_executed_local_loads:本地负载的翘曲级别说明
  • inst_executed_local_stores:本地商店的变形级别说明
  • l2_local_load_bytes:从 L2 读取的字节数,用于本地加载的统一缓存中未命中
  • l2_local_global_store_bytes:从本地和全局存储的统一缓存写入 L2 的字节数。这不包括全局原子。
  • local_load_requests:来自多处理器的本地加载请求总数
  • local_store_requests:来自多处理器的本地存储请求总数

local__request 是通过通用地址 space 或本地地址 space 对本地内存执行的指令数。在 CC5./6.* 我不记得这是否包括完全谓词的指令。

local_*_transactions 是由于请求的大小(32 位,64 位,...)和请求的地址分歧而发生的缓存访问次数。如果这是非零,则访问了本地内存。

l2_local_*_bytes是数据loaded/stored到二级缓存的字节数。