CPU scale and GPU scale question

Hi,
I’m profiling my game running on UE4. When I compare the timing from Unreal profiling tool, or using command like “stat unit”, it never fits the timing in Nsight scrubber (it’s pretty big difference, sometime over 40%). So here are my questions:

  • Does the “GPU time scale” is supposed to give me a good representation of the GPU timing in microseconds?
  • Does the “CPU time scale” is intended to roughly represents the render-thread timing?
  • How should we understand the “Unit scale” (it doesn’t get represented in time)

Thanks!

Hi fpageau,

Precisely, Nsight Scrubber is not a profiling view, it just show you all drawcalls in current frame.

Here are the answers:

  • Does the “GPU time scale” is supposed to give me a good representation of the GPU timing in microseconds?

no, you should check Event list, Frame Profiler, Frame Timing view

  • Does the “CPU time scale” is intended to roughly represents the render-thread timing?

no

  • How should we understand the “Unit scale” (it doesn’t get represented in time)

that just means each drawcall items’ width is unit

Thanks
An

Thank you for the clarification! So Frame Timing View will be the more “Pix”/“GPAD” mindset representation over the timeline. I would be very interested by the power of the scrubber showing directly the timing for a specific perf marker. I guess that only the profiler and the Frame Timing are real replay on the GPU.

So what is the meaning of the different scale between GPU Time sacle and “Unit scale”. It would be nice to get the time spent in the GPUs Unit vs time spent by the whole frame (including possible waits for the CPU). Also, why there is timing representation in the scrubber (for GPU and CPU scale)?

Especially, what is the purpose of the CPU scale? Is there any documentation about that?

Thanks for your help!

Hi fpageau,

All of the settings of scrubber about GPU scale, CPU scale, etc. is show a different view to users. Sometime you concern CPU time, some time you concern GPU time, some time you concern both, since the sample maybe cpu bound, gpu bound or both bound.

Nsight is a tool that help your guys understand/debug the sample more effectively.

Thanks
An

Ok, I understand that, but that is why I’m wondering about the scrubber, because if, as you said, the “Nsight Scrubber is not a profiling view” and that the timings are not real, I don’t feel I should use it for that purpose.

At the begining I was glad to find in Nsight the capability of the CPU/GPU time view, and being able to quickly see if we are CPU bound of GPU bound, directly in the GPU profiler, but if I can’t trust the timing…

You also said that the “CPU time scale” is not representing the renderthread timing, so what it is representing?

Thanks for you help!

Hi,

Oh, I mean Scrubber is mainly for indicate drawcalls, the CPU/GPU scale can show you some reference, I don’t mean you can’t trust the timing.

I’m not very understand ‘renderthread timing’, AFAIK, the cpu time is calculated by add QPC [QueryPerformanceCounter] to the begin/end of each call, and then you will got cpu time.

Thanks
An