0

对于许多并行程序,并行化带来了巨大的成本,使得加速亚线性。在这种情况下,并行版本的能源效率低于顺序版本。但是,人们可能会同时关心时间性能和能源效率,是否有任何特定的指标通常用于此目的?

更具体地说,一种可以确定最佳能量和性能目标的线程数的指标。

4

1 回答 1

3

最常见的指标是每瓦性能。看看“Green500 名单”。维基百科也有一篇关于每瓦性能的文章。该指标并不像最初出现的那样明确,因为“性能”并不明确。FLOPS目前非常流行,但也有很多不足之处。我不同意性能/瓦特不能用于评估软件的性能。根据您的应用,您可能希望使用性能/瓦特/秒。

我不知道如果并行性要花费您,您为什么要确定能源效率。事实上,我真的不明白并行性如何降低能源效率,除非您使用单核机器,进行纯计算,并且在线程之间进行大量颠簸。我猜这不是你自己的代码。

软件电源效率:最重要的两个因素是:

  • 更快地完成计算
  • 确保计算之间的时间段真正空闲

这些因素分解成一大堆其他更具体的指导方针:

  • 避免定时中断和(快门)轮询
  • 最小化同步结构
  • 利用并行性(线程和矢量化)
  • 使用一个好的优化编译器
  • 如果您不断创建和终止大量线程,请使用线程池
  • 使用高效的高性能库
  • 避免使用虚拟机(例如 java 和 flash)
  • 使用现代(无滴答声)操作系统
  • 等等等等等等

在并行线程之间划分计算应该会减少计算时间,否则为什么要增加它的复杂性?(是的,我知道某些编程结构,例如递归,可以使代码更简单、更清晰,但性能更差,但这些是例外。)减少计算应该会提高能源效率。如果没有,请查看算法和代码实践。

如果您可以向我提供有关您的应用程序的更多详细信息,我也许可以提出更具体的建议。

于 2014-05-14T20:58:40.160 回答