2 Replies Latest reply on Feb 5, 2016 6:01 AM by DevK

    Using RAPL utility to distribute power between CPU and GPU

    DevK

      Hi,

       

      We have i7-4790K processor with integrated HD 4600 graphics. It is a 88W TDP part.

       

      I recently used RAPL to measure power of x86-cores (pp0) , GPU (pp1) and the package (pkg) as a whole. One thing, I noticed during my experiments is that the maximum power dissipated in CPU and GPU devices are very different. In particular, I noticed that the maximum pp0 power is around 45W while maximum pp1 power is only about 18 watt across wide range of cpu-gpu workloads.

       

      Further, by putting a lower cap on pp0 and pp1 domains, I am able to bring down the power dissipation in each domain. However, I am not able to increase the maximum power allowed to dissipate in GPU (pp1). I am wondering if there is a way to increase the power limit of pp1 domain?

       

      Thanks,
      Kapil

        • 1. Re: Using RAPL utility to distribute power between CPU and GPU
          ArminM

          What means lower cap?

           

          The power limit of the GPU is limited by:

          1. clock frequency

          2. number of FETs used there

          3. thermal design / thermal lmit

          • 2. Re: Using RAPL utility to distribute power between CPU and GPU
            DevK

            Thanks Armin!

             

            Sorry, I meant the "max cap", not "lower cap"

             

            Actually, by  putting a max limit  individually to pp0 or pp1 domains, I am able to limit their maximum power. In my case, it works as long as I put the max cap of any value lower than 18W for gpu and lower than 45W for cpu.

             

            I want to somehow increase the maximum power dissipation of pp1 domain. I tried many types of workloads but I noticed that pp1 power never exceeds 18W. On the other hand pp0 power goes as high as 45 W.

             

            You are right that the clock frequency (~4GHz for cpu, 1.25GHz for GPU), number of transistors (I think cpu occupies more die area than GPU), and TDP (not sure about the individual power cap of each device) are some of the reasons why gpu is never allowed to consume more than 18W. Still, I am wondering if there is a way to increase the maximum power of pp1 from 18W, say by borrowing some power from cpu and giving it to gpu. Or, will it lead to increase in power density, and thereby temperature to unsafe limit? I don't have access to gpu-side temperature sensors, but I checked the cpu-side temperature, and I noticed that maximum temperature of cpu-cores (even when the pp0 power is 45W) is never too high to cause thermal throttle.


            Actually, I was hoping if I could do something through MSRs that will allow gpu borrow some power from cpu and vice-versa. For example, I found something called "priority level"  (5-bit value) on vol. 3B, page 14-37 of the Intel 64 and IA-32 Architecture Software Developer Manual. I thought by varying the priority between 0-31 for pp0 and pp1 domain, I may be able to control the power distribution between pp0 and pp1. But, it doesn't seem to work for me. Any suggestion in this regard is appreciated.

             

            Best,

            Kapil