楼主您好,
您可以使用这个简化的模型:
在Fermi上,在正常的读取过程中,L1 data cache将为local memory和global memory服务。
一次L1 data cache hit后,交给寄存器的数据,将是128字节。
而如果发生一次L1 miss, 数据将分成连续4次从L2 unifed cache传输到L1 cache(因为fermi上L2到1个SM只有32B/cycle的带宽)。
而上文的式子中的L2 Read request可能是L2服务L1 data cache的传输请求次数,这样正好前者 * 128 + 后者 * 32是总请求的数据量(一次前者miss等于4次后者)。
以及,这个是profiler给出的式子,但很遗憾,很多式子所依赖的基础数据并没有给出具体解释。所以这也是我的猜测。(例如L2 unifed cache还为texture cache服务,这里的L2_read_request自然应该不算给Texture cache的,给它的应该叫另外一个名字)。
大致如此吧,建议不看具体公式而直接相信并使用数值,因为一些式子无法解释(无资料)。
以及,从CUDA 5.5开始,profiler的手册里去掉了具体的公式。这强迫我们简单的相信它报告的结果。
感谢深夜来访。 |