Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In CUDA profiler nvvp, what does the "Shared/Global Memory Replay Overhead" mean? How is it computed?

When we use CUDA profiler nvvp, there are several "overhead"s correlated with instructions, for example:

  • Branch Divergence Overhead;
  • Shared/Global Memory Replay Overhead; and
  • Local/Global Cache Replay Overhead.

My Questions are:

  1. What cause(s) these overheads?And
  2. how are they computed?
  3. Similarly, how are Global Load/Store Efficiency computed?

Attachment: I've found all the formulas computing these overheads in the 'CUDA Profiler Users Guide' packed in CUDA5 toolkit.

like image 392
troore Avatar asked Nov 25 '12 14:11

troore


1 Answers

You can find some of the answers to your question here:

Why does CUDA Profiler indicate replayed instructions: 82% != global replay + local replay + shared replay?

Replayed Instructions (%) This gives the percentage of instructions replayed during kernel execution. Replayed instructions are the difference between the numbers of instructions that are actually issued by the hardware to the number of instructions that are to be executed by the kernel. Ideally this should be zero. This is calculated as 100 * (instructions issued - instruction executed) / instruction issued

Global memory replay (%) Percentage of replayed instructions caused due to global memory accesses. This is calculated as 100 * (l1 global load miss) / instructions issued

Local memory replay (%) Percentage of replayed instructions caused due to local memory accesses. This is calculated as 100 * (l1 local load miss + l1 local store miss) / instructions issued

Shared bank conflict replay (%) Percentage of replayed instructions caused due to shared memory bank conflicts. This is calculated as 100 * (l1 shared conflict)/ instructions issued

like image 163
BenC Avatar answered Sep 29 '22 05:09

BenC