Forums - How does AdrenoProfilor calculate the %shader busy metric?

5 posts / 0 new
Last post
How does AdrenoProfilor calculate the %shader busy metric?
wang_88yufei
Join Date: 28 Feb 14
Posts: 10
Posted: Wed, 2014-05-07 22:18

Hi:

Two questions about "%shader busy " metric calculation in Adreno Profiler.

1. For one frame, formular should be

          %shader busy = (shader units active cycles) / (one frame cycles)     (1)

          or %shader busy = (shader units active cycles) / (GPU busy cycles in one frame)     (2)

      (1) and (2), which one is correct? or all wrong?

 

2. User manual said: %shader busy is Percentage of time that all Shader cores are busy.

    For Adreno 330 on Nexus5, (1)How many shader cores in it?

    (2) Suppose a case, 330 have 4 shader cores(just a suppose), an Application only use 3 of them which means 3 shader cores are always busy, and the other one is always idle. What valve shall we get from %shader busy metric? 0%, 75% or 100%?? I really puzzled by the description of "all Shader cores are busy" in document.

 

Please help

Thanks

  • Up0
  • Down0
Dave Astle
Profile picture
Join Date: 19 Oct 12
Location: San Diego, CA
Posts: 99
Posted: Fri, 2014-05-09 11:28

It's the percentage of cycles that the shader units were busy divided by the total number of cycles that the GPU did work during the sampling period.

  • Up0
  • Down0
wang_88yufei
Join Date: 28 Feb 14
Posts: 10
Posted: Mon, 2014-05-12 00:23

Thank you very much.

Could you please also kindly answer my second question:

 

2. User manual said: %shader busy is Percentage of time that all Shader cores are busy.

    For Adreno 330 on Nexus5, (1)How many shader cores in it?

    (2) Suppose a case, 330 have 4 shader cores(just a suppose), an Application only use 3 of them which means 3 shader cores are always busy, and the other one is always idle. What valve shall we get from %shader busy metric? 0%, 75% or 100%?? I really puzzled by the description of "all Shader cores are busy" in document.

  • Up0
  • Down0
Dave Astle
Profile picture
Join Date: 19 Oct 12
Location: San Diego, CA
Posts: 99
Posted: Mon, 2014-05-12 08:20

For every cycle in which a shader unit is active, it increments a counter. All shader units share the same counter, so we take that value and divide it by the number of shader units (which is 4 on Adreno 330), and then divide that number by the total number of GPU cycles during the sampling period. With the Adreno 300 family, we are not able to track utilization of each individual shader unit because the hardware doesn't support it.

The situation you describe - where 3 units are 100% busy and the 4th is idle - never happens. Loads are distributed over all of the units, and when they are idle waiting for data, they are powered down. So a value of 75% would indicate that 25% of the time, all of the cores are idle waiting for data.

  • Up0
  • Down0
wang_88yufei
Join Date: 28 Feb 14
Posts: 10
Posted: Tue, 2014-05-13 10:39

I got it. It's very useful for me.

Thank you very much!!

  • Up0
  • Down0
or Register

Opinions expressed in the content posted here are the personal opinions of the original authors, and do not necessarily reflect those of Qualcomm Incorporated or its subsidiaries (“Qualcomm”). The content is provided for informational purposes only and is not meant to be an endorsement or representation by Qualcomm or any other party. This site may also provide links or references to non-Qualcomm sites and resources. Qualcomm makes no representations, warranties, or other commitments whatsoever about any non-Qualcomm sites or third-party resources that may be referenced, accessible from, or linked to this site.