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.