我遇到了以下问题。我想使用 为我的 cuda 应用程序测量gst_efficiency
和。随 cuda 5.0 分发的文档告诉我使用以下公式为具有计算能力 2.0-3.0 的设备生成这些:gld_efficiency
nvprof
gld_efficiency = 100 * gld_requested_throughput / gld_throughput
gst_efficiency = 100 * gst_requested_throughput / gst_throughput
对于所需的指标,给出了以下公式:
gld_throughput = ((128 * global_load_hit) + (l2_subp0_read_requests + l2_subp1_read_requests) * 32 - (l1_local_ld_miss * 128)) / gputime
gst_throughput = (l2_subp0_write_requests + l2_subp1_write_requests) * 32 - (l1_local_ld_miss * 128)) / gputime
gld_requested_throughput = (gld_inst_8bit + 2 * gld_inst_16bit + 4 * gld_inst_32bit + 8
* gld_inst_64bit + 16 * gld_inst_128bit) / gputime
gst_requested_throughput = (gst_inst_8bit + 2 * gst_inst_16bit + 4 * gst_inst_32bit + 8
* gst_inst_64bit + 16 * gst_inst_128bit) / gputime
由于没有给出所用指标的公式,我假设这些是 nvprof 可以计算的事件。但是我的 gtx 460 上似乎没有一些事件(也尝试过 gtx 560 Ti)。我粘贴了.nvprof --query-events
任何想法出了什么问题或我误解了什么?
编辑:
我不想使用 CUDA Visual Profiler,因为我试图分析我的应用程序的不同参数。因此,我想nvprof
使用多个参数配置运行,记录多个事件(每个事件都在一次运行中),然后将数据输出到表格中。我已经把它自动化了,并为其他指标工作(即发出的指令),并希望这样做以提高加载和存储效率。这就是为什么我对涉及nvvp
. 顺便说一句,因为我的应用程序nvvp
无法计算存储效率所需的指标,所以在这种情况下它根本对我没有帮助。