User Guide

  • 2021.1
  • 03/24/2021
  • Public Content
Contents

Analyze GPU-bound Applications with Graphics Frame Analyzer

Locate bottlenecks and root-cause rendering issues to increase performance.
If your application is too resource-intensive, or you want to analyze it on a number of systems, refer to Analysis in the Network Mode topic for a detailed instruction.
Prior to profiling with Graphics Frame Analyzer, use System Analyzer or Graphics Trace Analyzer to identify whether your application is CPU- or GPU-bound. Analyze CPU-bound applications with the Graphics Trace Analyzer or Intel® VTune™ Profiler.

Capture and Open a Frame/stream.

Whether you need to analyze an exact frame, or your goal is to analyze a set of frames (stream) to locate bottlenecks in your application, start with capturing a frame/stream:
  1. Run the Graphics Monitor on your system, specify an app for analysis, and choose one of the following startup modes:
    • Stream mode
      (recommended) to capture a stream. A stream is a set of consecutive frames.
    • Frame mode
      to capture a single frame
  2. Click
    Start
    to launch the graphics application as described in Launch the Application topic. The application starts running with the Heads-Up Display overlay.
  3. Capture a frame by pressing
    Ctrl+Shift+C
    . You can capture as many frames as you need without stopping and restarting the application using the key combination.
    If you find it difficult to capture a frame at the right moment, set up a trigger to capture a frame automatically when a certain condition is met (for example, when the frame rate drops below 10 FPS). Refer to Set Up a Trigger topic for more details.
    Streams are created automatically upon startup. During the capture, all the overrides are turned off. When the capture is complete, the HUD shows a message with the file name or possible errors, if any.
    Capture streams manually in DirectX* and Vulkan* APIs by enabling the
    Deferred Stream Capture
    option in the
    Stream
    tab of the Graphics Monitor
    Options
    . The key shortcut is specified in the Shortcuts tab (the default key is "L").
  4. Open the captured frame/stream using any of these options:
  • From the
    Open File
    dialog box in the Graphics Monitor. Drag the pane to the left to see more captured frames/streams.
  • Launch the Graphics Frame Analyzer and find the captured fragment in the Open Frame Capture window. Sort and filter the captured frames/streams, to find the ones you need.
By default, the stream file opens in the Multiframe View window.
You can trim your stream using the
Trim Stream
button, which cuts the selected frames from the existing stream and saves them to a new one. This can be useful, if your stream is too large and contains only a few frames that you need. Trimming your stream can save disk space and processing time.

Locate Bottlenecks in Separate Heavy Calls

In most situations, calls with the longest duration (heaviest calls) decrease performance the most. Optimization of such calls may be highly effective for overall performance enhancement.
To analyze a separate frame with Graphics Frame Analyzer, pick it in the list of frames and press the
Open
button to enter Single Frame View. Here you can identify and explore heavy calls, and apply available experiments to significantly increase FPS.
It is possible to simultaneously open several frames captured in DirectX* 12 and Vulkan*. Choose the frames by clicking with
Shift
pressed or choose them with a mouse on the timeline.
On the Main Bar chart, you can see various metrics for the opened frame against the exact call number (X axis). Y axis shows the duration of the call in milliseconds. Frame Overview Pane shows the FPS with the current performance. The goal of the analysis is to get as close to the FPS value set in your performance goals as possible.
To analyze a draw call:
  1. Click on a draw call.
  2. Use the
    Metrics Pane
    on the right to examine domains for the selected graphics API functions in the form of call rendering stages, processes and operations.
    Domains marked green perform well and do not need optimizing. Red and yellow ones indicate bottlenecks:
    • Domains marked red indicate a block with a primary bottleneck for the current selection or entire frame, if nothing is selected. Analyze them in the first place, as they take up most of the resources.
    • Yellow domains denote a block with secondary or potential bottleneck.
  3. To see details and general recommendations for possible problem solving, click the functions and read their description below.
    Read more about optimizing graphics functions in Intel® Graphics Performance Analyzers Cookbook

Explore the Shader Program

Every programmable call has its shader program. Open
Shader Profiler
to explore the shader program and detect which calls and commands are the most time-consuming.
  1. Open the Shader Profiler by pressing the
    "SH:..."
    button.
    To interpret and edit shader code, refer to documentation for HLSL, GLSL, DXBC languages and ISA protocol (introductory article and complete documentation).
  2. Based on the information from the Shader Profiler, you can locate hotspots in your shader code and resolve any shader performance issues.
    Read more about optimizing the Shader in Shader Execution topic of Intel GPA Cookbook.
  3. After Shader Profiler analysis, you can look into other resources by pressing
    Show All Resources
    .
To avoid frequent recompiling of the application code, you can also use render state experiments in the down right corner of the view. Refer to Run Render State Experiments topic for more details.

Analyze Calls Grouped Based on the Common Bottleneck

Sometimes, there may be a situation where each individual draw call does not contribute a lot of time to the overall frame time, but a group of such calls, together, increases the total frame time significantly. Such draw calls are usually bound by a common bottleneck.
To group draw calls in chunks based on common bottleneck, use the Hotspot mode of Frame Analyzer.

Next Steps

If the performance is still not satisfactory after frame/stream analysis, use System Analyzer and to check if there are CPU-related issues in your application. If this is the case, proceed the analysis with Graphics Trace Analyzer.

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.