2014-05-14 99 views
0

對於許多並行程序而言,並行化會帶來相當大的成本,使加速次級線性化。在這種情況下,並行版本比順序版本的能源效率低。 但是,人們可能會關注時間表現和能源效率,是否有任何通常用於此目的的具體指標?是否有任何衡量性能和能效的指標?

更具體地說,可以確定最佳能量和性能目標的線程數的度量。

+1

http://en.wikipedia.org/wiki/Performance_per_watt? – nos

+0

@nos謝謝!那個更適合評估架構設計。但就我而言,硬件是固定的。可調參數是要使用的線程數。 – JackWM

回答

3

最常用的指標是每瓦性能。看看「Green500列表」。維基百科也有關於每瓦性能的文章。該指標並沒有像第一次出現那樣清晰,因爲「表現」並不是明確的劃分。 FLOPS目前非常受歡迎,但它有很多缺陷。我不同意性能/瓦特不能用來評估軟件的性能。根據您的應用程序,您可能需要使用性能/瓦特/秒。

我不知道爲什麼你要確定能源效率,如果並行是花費你。事實上,我並不真正瞭解並行機制如何降低能源效率,除非您使用單核機器,進行純計算,並且在線程之間進行大量顛簸。我猜這不是你自己的代碼。

軟件功效:最重要的兩個因素是:

  • 讓你的運算更快地完成
  • 確保計算之間的時間段是真正的空閒

這些因素分解成整個主機的其他更具體的指導方針:

  • 避免ti明中斷和(快門)輪詢
  • 減少同步構建
  • 利用並行(線程和矢量)
  • 使用一個很好的優化編譯器
  • 使用一個線程池,如果你不斷地創建和終止大量的線程
  • 使用高效的高性能庫
  • 避免虛擬機(例如java和閃光燈)
  • 使用現代(滴答)OS
  • 等等,等等等等

劃分的並行線程之間的計算應減少計算時間,不然爲什麼添加其併發症? (是的,我瞭解某些編程結構(如遞歸)可能導致代碼更簡單,更簡潔但性能更差,但這些例外。)減少計算應提高能效。如果沒有,請查看算法和代碼練習。

如果你能給我更多關於你的應用的細節,我可能會提出更具體的建議。