各位好:
最近研究GPU功耗的问题。
实验目的是探索GPU对平台功耗的影响。
我的实验平台是三星的ODROID,配备Mali400MP GPU处理器。
我固定过了CPU频率和总线频率。
分别将GPU频率设定为160MHz和267MHz(这两个频率是内核中提供的,Mali400MP只支持这两个频率)。
测试用例是一个3D的大型赛车游戏。
在GPU处于较高的频率下,整个ODROID平台的功耗只增加了不到5%。
我觉得这个结果不合理啊。如果只是这么点儿功耗,那么完全没必要花那么大的代价去做GPU的DVFS啊。
我看过一些论文,基本上是在说GPU功耗会成为智能手机功耗的一个新的增长点,不过,好像我的实验结果与这个结论不符合啊。
请问,我的实验有问题嘛?
谢谢大家!
首先说,不是很清楚GPU在整个平台功耗中应该占多大的比重。一般显示设备比重可能更大。另外不是很清楚你的测试结果是否正确。第三点是,不知道你固定GPU的方法是否正确。据我的了解除非你在GPU的驱动中hardcoded GPU的频率,否则ODROID 里GPU的频率会自动调节的。如果你改了GPU驱动,固定频率,不知道有没有改相应的电压。这个会跟功耗有比较直接的关系。
你好,谢谢你的关注。
首先,GPU功耗比重的问题:
我没有查到具体的ORDROID平台中mali400MP GPU占的功耗比。但是有一篇2013年的论文《Accurate GPU Power Estimation for Mobile Device Power Profiling》 ,里边有说,如下图所示
GPU功耗占到15%~20%左右,不过这篇论文中没有交代他的实验平台。
测试结果正确与否的问题:
我是采用PowerMonitor测试功耗的,相对来说还是比较准确的。前后测试场景基本保持一致。场景应该是上图所示的3D Rendering, High GPU Utilization Game。
固定GPU频率的方法:
我们开启了ODROID平台下Mali GPU的DVFS模块,其实现代码在drivers\media\video\samsung\mali\platform\orion-m400\mali_platform_dvfs.c中,这个文件应该是GPU调频的驱动文件。
关键函数是 decideNextStatus ,用来根据上一个阶段的 GPU利用率决定下一个阶段的GPU的频率等级。Mali 400 Mp提供了两个频率,因此只有两个等级供选择。
我们固定GPU频率的操作就是在这里进行的,我们将level值固定到0(对应GPU频率160MHz)或者是1(对应GPU频率267MHz),那么GPU调频的时候就会选择对应的频率。
另外,调频和调压必须是同步的,因为不同的频率需要不同的电压支撑。
我们在尝试通过开关GPU的方法,先确定GPU在我们平台中占到的功耗的比例。
Beileisun的说明很详细,非常赞。
我在GPU方面不是很专业,不过是不是GPU对性能的要求要超越对功耗的追求?
这个可能需要其他几位Mali的专家来帮忙看看
belieisun你好,
想请教您几个问题
我的设备是Samsung S3, S3的GPU也是使用Mali 400, 请问要如何在运行的时候取得此GPU的utilization呢??以及如何在运行时控制GPU的Frequency??
感谢