This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Understanding Mali GPU Hardware Counters

Hi ,

I have read your blog on Mali GPU Hardware Counters. I have a few questions. 

The Mali Job Manager Cycles:GPU cycles counter gives the total amount of cycles, the GPU was active. If I execute a compute workload (not graphics), I should be able to predict the execution time of the kernel should be from Tripipe cycles counter.  There is always a differnce in value  between the Mali Job Manager Cycles:GPU cycles and Mali Core Cycles:Tripipe cycles. What does this extra cycles signify. I know that the values reported by streamline is average value across all the shader cores but still what does this extra cycles signify?

I also would like to know what exactly does the  Mali Core Cycles:Compute cycles and Mali Compute Threads:Compute cycles awaiting descriptors counters report ??.

This is because I ran a OpenCL benchamark with zero arithmetic instructions but still the values of Mali Core Cycles:Compute cycles and Mali Compute Threads:Compute cycles awaiting descriptors  are not zero while Mali Compute Threads:Compute tasks and Mali Compute Threads:Compute threads started were zero.

Also the tripipe cycles counter value should be equal to the maximum of cycles spent in Arithmetic/LS-pipeline/Texture pipeline but even when there are no texture and Arithmetic instructions, the value of Mali Core Cycles:Tripipe cycles is not the same as Mali Load/Store Pipe:LS instruction issues counter. Why this is happening? If I am executing only memory instructions, Mali Core Cycles:Tripipe cycles should be equal to Mali Load/Store Pipe cycles instead I see that  Mali Core Cycles:Compute cycles , Mali Compute Threads:Compute cycles awaiting descriptors and  Mali Core Cycles:Tripipe cycles have similar values??

 

It would be helpful if you can give some insights to these behaviours?

P.S. I am doing an academic project and i am modeling the performance of opencl kernel on Mali GPUs.

P.P.S.I am not an android developer looking at optimizations

Parents
  • Hi ,

    Thankyou for your quick reply. I have a few questions

    In the blog, LS CPI is calculated as LS-Instruction Issues/ LS-instructions

    Does the Mali Load/Store Pipe:LS instruction issues counter report the cycles taken to complete all the load/store instructions of all the threads in the kernel. I meant does the counter adds the memory stall cycles as well?

    How can I get the cycles taken for executing Arithmetic instructions  and cycles taken for executing LS -instructions separately ? The tripipe cycles gives the max of (A1/A2/LS/TEx)

    In general, GPU Active Cycles = Tripipe Cycles + Ovehead1 cycles

                        Tripipe Cycles =  max of (A1/A2/LS/) + Overhead2 Cycles

                          Compute Cycles == Tripipe Cycles

    Is my understanding Correct?

Reply
  • Hi ,

    Thankyou for your quick reply. I have a few questions

    In the blog, LS CPI is calculated as LS-Instruction Issues/ LS-instructions

    Does the Mali Load/Store Pipe:LS instruction issues counter report the cycles taken to complete all the load/store instructions of all the threads in the kernel. I meant does the counter adds the memory stall cycles as well?

    How can I get the cycles taken for executing Arithmetic instructions  and cycles taken for executing LS -instructions separately ? The tripipe cycles gives the max of (A1/A2/LS/TEx)

    In general, GPU Active Cycles = Tripipe Cycles + Ovehead1 cycles

                        Tripipe Cycles =  max of (A1/A2/LS/) + Overhead2 Cycles

                          Compute Cycles == Tripipe Cycles

    Is my understanding Correct?

Children