0

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

我想用该值区分以下概念。

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

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

我怎样才能找到答案?由于inst_compute_ld_st,ldst_issued和的值ldst_executed非零,是否可以丢弃第一个问题?还是有别的东西?

该设备是M2000,即CC5.3 CC5.2

4

1 回答 1

3

nvprof 支持事件(原始计数器)和指标。这些可以使用以下命令进行查询: nvprof --query-events 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:本地内存流量与 L1 和 L2 缓存之间的总内存流量的比率,以百分比表示
  • 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 是通过通用地址空间或本地地址空间执行到本地内存的指令数。在 CC5 上。/6.* 我不记得这是否包括完全谓词的指令。

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

l2_local_*_bytes 是加载/存储到 L2 缓存的数据字节数。

于 2019-04-18T13:49:03.827 回答