【问题标题】:How to measure power efficiency increase or decrease for code change [closed]如何测量代码更改的电源效率增加或减少[关闭]
【发布时间】:2018-10-09 07:26:56
【问题描述】:

在嵌入式/移动环境中,我们在为其开发软件时必须考虑电池电量消耗,因此节能软件编程在嵌入式/移动世界中很重要。

问题是,(关于 Assembly/C/C++

认为当它在任意平台上运行时我们有稳定的软件版本X它消耗Y量的功率(以瓦为单位),现在我们将执行一些代码变化,我们想在构建时测量它对能源消耗及其效率的影响。

INT16U x = OXFFFF;
/... some code in stable release .../
for(;x<4096;++x)
{
   /... some code in stable release .../

   INT64U foo = x >> 256 ? x : 4096 ;  // point 1  sample code change;
   if(~foo & foo) foo %= 64 ;         // point 1  sample code change;

   /... some code in stable release .../
}

如果我们想测量此代码如何更改@point1 对能源效率的影响(相对于稳定版本统计)而不是分析空间和时间(性能加内存),如果我们想要用 C/C++ 构建一个简单的能量/功率分析和分析工具,

  • 是否有任何推荐的 C/C++ 库或源来构建功耗分析工具?
  • 如果我们必须通过每次代码更改的 CPU/GPU 指令级别更改来分析和确定功耗级别的变化,例如point1,我们如何确定任意 CPU 或 GPU 上的每条指令的功耗各自的平台?
  • 开发人员如何知道由于在应用程序构建时而不是运行时更改代码而降低或增加了多少功耗?

【问题讨论】:

  • 将功率计连接到设备的电源?
  • @Someprogrammerdude 够准确吗?
  • 是的,基本上每个人都会检查电脑的耗电量。
  • @Someprogrammerdude 你对此有何看法? software.intel.com/en-us/articles/…

标签: c++ c mobile embedded profiling


【解决方案1】:

TL;DR 你不能用软件来做,只能用物理仪表。

完善“@Some程序员老兄”已经暗示的内容:

一个问题是,某个操作在硬件上的实际实现是未知的。您可能会获得带有循环/操作码的列表,但您不知道这些循环的作用。可以走很长的路,有些需要更多的零件才能通过一些更少的等等,因此不知道单个循环需要多少功率。

另一个问题是具有大域(例如 16 位 ADC)和多个输入(例如:一次读取多个传感器)的复杂代码中几乎不确定的路径,尤其是在使用浮点运算时。

可以得到功耗的相对差异,但只能是粗略的。粗略类似于“相同代码的 100 个循环需要比 10 更多的功率”粗略。或者:如果它运行得更快,它很可能需要更少的电力。

不行,你必须吞下苦果,然后去下一家 Rhode&Schwarz(不是附属公司,在写这篇文章的时候刚在侧边栏看到一个广告)商店买一个电源,一米(实际上是两)、频率发生器和必要的连接材料。将使您在中上五位数范围内做空(美元)。拥有它后,您需要测量您获得的每批处理器的多个 MCU/CPU(大约 30+ 以能够假设均匀分布)的功耗。

如果您还没有这些工具,那就需要大量的工作和投资。测量本身也是一种艺术形式,你需要知道自己在做什么,很多事情都会出错。

如果您想与军方签订 100 万美元的合同,并且需要保证您的东西能够在一块电池上运行五年(而且军方说的第一件事就是打耳光),那么花这笔钱可能是个好主意上面写着“每 6 个月更换一次电池!”的标签)否则:甚至不要开始,不值得头疼。

【讨论】:

  • 英特尔在他们的 System Studio 软件包中提供了这个工具,software.intel.com/en-us/articles/… 同样,我们不能开发类似的东西吗?不是那么先进,但是,至少测量一下我们的代码需要多少能量
  • @Dinithi 英特尔构建了硬件和编译器,并拥有测量某些东西的所有必要知识(从您链接的网页中不清楚具体是什么以及如何精确)。我们另一边没有这些知识,只能在上面贴上一米。如果输入不确切或太大或太多,仍然存在复杂性问题。
  • 非常感谢您的想法和想法,该链接还有一些其他信息链接到他们的分析工具。我最初是通过分析组装说明并收集一些参考统计数据来了解我们的稳定的代码,那么我们可以预测更新指令和例程的功率增益或耗散量? (再次假设我们为稳定版本代码收集了预样本数据,因为这是我们考虑的参考)
  • @Dinithi 你如何获得参考统计数据?是的,通过测量。这次是非常精确的测量。增加设备价格的幅度。
  • 是的,这很难,deamentaemnudi 也检查一下:D linkedin.com/learning/windows-power-tools-optimizing-code/…
猜你喜欢
  • 2017-03-29
  • 2021-09-13
  • 2018-12-08
  • 1970-01-01
  • 1970-01-01
  • 2013-10-22
  • 1970-01-01
  • 2018-12-30
  • 1970-01-01
相关资源
最近更新 更多