在用profiler进行程序分析时,对几个计数器的意义不明。
1.那些关于instruction的overhead是怎么算出来的?比如Branch Divergence Overhead,是什么占什么的比例?还有Shared/Global Memory Replay Overhead、Local/Global Cache Replay Overhead?
2.Requsted Global Load/Store Throughput,Dram Read/Write Throughput,Global Load/Store Throughput各是什么意思?Dram throughput和Global throughput有什么区别?
3.Global Load/Store Efficiency是怎么算出来的?
LZ可否说一下您用的是哪个版本的nvvp?我手头的版本看到的名称和您写的差别较大,或者您提供截图供大家分析也可以。
request global load/store throughput指的是kernel申请的global访问的吞吐量。
而这一申请可能会被L2 cache优化(比如有相同数据的L2只需要读取一次即可),所以最终得到的achieved global memory read/write throughput (nvvp 4.0中称法)可能会比request的少。
至于dram read/write throughput我这里没见到,尚不清楚是如何约定的,有可能和是否合并访问有关。
另外,如果您使用的是nvvp 4.0的话,您可以在pdf版的user guide的compute visual profiler counters章节的table 6和supported derived statistics章节的table 7找到相关内容的介绍。
欢迎其他版主/网友补充和指正。
祝您编码愉快~
我用的版本是4.2,截图如下:
[attach]2835[/attach]
在下面metrics和右上方properties中可以看到我原贴中描述的这些参数。
有时候如果知道这些参数的含义的话,可以大概先手算一下再和profiler分析结果比较,这样比较有利于找出程序中的问题。
确实如您所说,手册中有关于这些参数的详细计算公式,在Chapter7 Metrics那一章(我看的手册是cuda5中的CUDA Profiler Users Guide,因为我在我装的cuda 4.2 doc中没有找到这个手册)。
学习太浮躁了,不好意思。
4.2自带的文档里面我也没找到相关内容
浏览了一眼在线的CUDA5文档,确实在Metrics Reference表格里面有详细的解释。
欢迎莅临cuda zone,祝您编码愉快!
但是您说的"user guide"是指哪个手册?全称是什么?是4.0里的吗?
您说的这个手册我也找到了,是叫“Compute Visual Profiler”对吗?确实有您说的那两章,可以结合CUDA5的那个手册来看。
多谢了!
是4.0里面的compute visual profiler user guide .一个pdf文件。在4.1和4.2里面没有这个文件。
善哉!!