What represents the callstack shown in NSight when opening a nv-gpudmp?

Hi,
Documentation question here.
We got a GPU page fault that generated a nv-gpudmp file thanks to Aftermath, along with other useful data.
When I opened the dump, I clicked on a callstack that was resolved after the symbols were provided.

What represents the callstack ?
Does it show the call that eventually led to the GPU page fault ?
How Aftermath is able to get this information since the GPU crash occurred asynchronously and way after the driver call was made ?
Thanks for your help
Ludovic

Hello,
Thank you for using Nsight Aftermath. I discussed your question with the engineering team and below should give you some insight into how things work.

  • The “call stack capture feature”, when enabled, automatically adds event markers for every draw, compute dispatch, ray tracing dispatch, and copy command that is recorded into a D3D12 command list or Vulkan command buffer.
  • The call stack is the driver call stack within the draw (or other) command when it was recorded into the D3D12 command list or Vulkan command buffer.
  • This is similar to the application adding a user event marker for each of commands and passing the current call stack as the marker data (except that the call stack would be only for the application side in that case).
  • The same restrictions as for other event markers apply. They only provide context about what part of the submitted command list/buffer has finished executing on the GPU, what work is currently in flight, and for what the GPU has not been started processing the corresponding command at the time of the crash.
  • No, they do not point at the exact command that has caused the fault. Actually, the event markers for the call stacks are added before the corresponding command. So they may report either as executing or as finished depending on concurrent execution on the GPU. If they are reported as finished it only means that all work before this point was executed without a fault.

Here is what the documentation says:

// With this flag set, event markers are automatically set for all draw calls,
// compute dispatches and copy operations to capture the call stack for the
// corresponding API call as the event marker payload.
// Requires also GFSDK_Aftermath_FeatureFlags_EnableMarkers to be set.
//
// Using this option should be considered carefully. Enabling call stack capturing
// can cause considerable CPU overhead.
//
GFSDK_Aftermath_FeatureFlags_CallStackCapturing = 0x40000000,
1 Like