Intel® Graphics Performance Analyzers Framework: Logging Layer

When resources are not behaving as expected, it is useful to see how they are actually being processed through execution. Use the logging layer to verify that calls are running as expected and see the values of resources in the order that they're running. Also, compare capture and playback logs to correlate events from capture to playback.

 

Hello, folks. Welcome back to our Intel® Graphics Performance Analyzers video series, Intel® GPA Framework Quick Tips. Pamela Harrison here back with more insights for how to use Intel GPA framework to help with your profiling workflow.

As explained previously, we will cover a different topic each month in a two-to-three-minute video showing how to use each feature and how you can incorporate these features into your profiling process so that you can more easily achieve your optimization goals.

Let's get started with episode four: the logging layer. In 2022, we enhanced API call logging to include not just API calls but also arguments, handles, and objects. The resulting logs give you a flattened view of the data shown in order of execution so that you can view the changes in objects and subobjects step-by-step through time.

To begin, I changed to the framework directory, then capture a stream with the logging layer option added.

In this case, I am invoking deferred capture and capturing only three frames on each capture. After capturing, I identify the name of the stream that I am interested in, which for me is this latest capture.

When I play the stream back without logging, I see the default output now for playback with logging in verbose mode. Note that many terminal environments have limits on displayed lines and verbose logging can pass these limits losing data in the process. I typically redirect to a file, then view the file in a text editor. Redirecting to a file and saving it, while also enabling you to correlate the capture time log with the playback log using the capture time IDs.

The capture time IDs are GPA generated internal keys. With these IDs, you can correlate what is happening with the resources in the capture log and the play backlog.

Now that we have two logs, we can put them side by side to see step-by-step what is happening with the resources.

We cruised through the capture log to find the resource of interest, grab the hex value, then we search for that value in the playback log to correlate events from the capture to play back.

This can be really useful when your resources are not behaving as expected, and seeing the values or the ordering of the instructions can help.

Try out the GPA framework logging layer and tune in next time when Justin will show you how the screenshot layer can help you record one or more screenshots during either capture or playback. Thanks for watching.

Check back soon for our next episode of Intel GPA Framework Quick Tips.

Remember to like this video and subscribe to the Intel software YouTube* channel and to learn more about this topic, follow the links in the description.