Vulkan Application With GPU 0% Usage (Related to Windows Task Manager, Solved)

#1

Before starting my topic, see this picture of this application (from Sascha Willems) and task manager.
(github: https://github.com/SaschaWillems/VulkanSponza)

this application renders sponza with particle effect, SSAO, based on deferred rendering.

I thought the application should occupy some of GPU usages. But it does not.
I recognized all the other examples of Sascha Willems does not have any GPU usages on my task manager. (other examples of Sascha Willems github : https://github.com/SaschaWillems/Vulkan)

I guess this phenomenon is related to Synchronization.
Because, All of the examples use one semaphore for rendering and presenting.
In addition, they does not use any fence in acquire-submit-present loop.

So, I think the applications is not utilizing the benefit of triple buffer (just only one buffer with 3 swapchain images on my desktop). In order to acquire the next image of swapchain, the application will just wait for the presentation semaphore which will be signaled after the presentation engine does its own job.

However, Even if the application have a sync structure which I described above, I think the task manager should show that the application is using a few of GPU usages. But it isn’t.

I started my vulkan study with https://vulkan-tutorial.com/
and I just draw one triangle with the tutorial. But it uses GPU a lot.


the tutorial application is utilizing the benefit of triple buffer. it has three semaphore for rendering and presenting. And it uses fence for sync between CPU and GPU.

So my questions start here.

  1. Why does not the sponza application use any GPU usage?
  2. What is the benefit of 0% GPU usage, considering the synchronization structure of sponza application?
  3. What does the difference of GPU usage between the sponza application and just one triangle application imply for the rendering? (quite broad question, but I’m in a coma with this phenomenon. so please give me any feedback the difference between two structures)
  4. What should I select the base structure of Synchronization between two cases? (I know this question depends on my application, but I’m just growing my application from scratch while studying Vulkan)

Thanks in advance!

#2

I finally found the cause of the GPU 0% Usage.

I got the hint from the description of this youtube video.


He said VK_QUEUE_COMPUTE_BIT makes application with low gpu usage (actually 0%).

After that, I modified the Sascha willems code on creating logical device. After deleting compute queue part in the code, I got the high gpu usage on the sponza application.

However, the performance is not different with GPU 0% usage. it shows almost the same fps!

Now I found the cause of the problem. But, I don’t know why it works like this. Can anyone give me the mechanism of this? And Which one is better between 0% gpu usage with compute queue logical device and high gpu usage without compute queue logical device?

#3

The value displayed by the Windows 10 task manager with default settings is pretty useless.

So please use a proper monitoring tool. Even with a basic tool like GPU-Z I get a proper GPU-Load reporting of around 80% while the Windows 10 task manager reports 0 in the default view. For compute load you have to select it manually in the task manager.

3 Likes
#4

oh… I didn’t even have a doubt for the Windows 10 task manager!!

Thank you for letting me know about this.

Plus, I just added one more answer here from Khronos Slack

Thanks, Sascha, Anteru!

1 Like
#5

Thanks chlee3211 for the question in youtube and thanks Sascha for the infos.
I have lost many hours on this bad task manager result hehe.