天天看點

從功耗角度了解的性能優化

通常的性能優化都會以在規定時間範圍内完成的邏輯運算為目标,但是有趣的是我們發現也許追求相同目标下的減少額外功耗是我們真正的方向,性能僅僅是産物而非目标,為此我們提出性能的公式: 資訊有效密度/處理所需資料量需要的功耗,該公式表明我們需要提升資訊有效密度,同時減少資料處理功耗,這樣才能幫助我們最終提升性能。

提升有效資訊密度:

文章 Deep learning has a size problem

https://heartbeat.fritz.ai/deep-learning-has-a-size-problem-ea601304cd8

中,作者看到目前為了準确性,深度學習模型參數不斷擴張甚至達到83億,該模型導緻需要使用512塊 NVIDA V00 GPU計算9.2天,用于訓練該模型的能源量是美國人平均年能源消耗量的3倍以上以上,是以作者提出了“I couldn’t help but ask myself: is deep learning going in the right direction?", 同時作者發現目前很多深度學習模型在優化模型使用更少的資料(也就是提升有效資訊密度),得到幾乎相同的準确率,同時提升效率,最後作者的結論是“Shifting from state-of-the-art accuracy to state-of-the-art efficiency”

減少資料處理功耗:

雖然摩爾定律仍然持續,但是RC延遲得到的優化很少,是以從記憶體取8個位元組到計算單元需要1000pj, 而計算單元運作需要10pj,根據性能公式我們需要做3件事:1. 相同結果下減少資料通路量(也就是提升有效資訊密度),2. 減少存儲單元與計算單元的距離,減少功耗,3. 增大處理單元的并行度,減少資料在計算和存儲單元的乒乓過程,減少功耗。上述2. ,3.兩個方法也是都被FPGA或者GPU,CPU所使用,也是他們優化的方向,比如内嵌記憶體,增大緩存,甚至 processor in memory,并且增大計算向量寬度. 雖然我們沒有提到性能提升,但是性能的改善已經很明顯,前者減少延遲,後者增加吞吐,最終資料處理能力在加快.

深入背後的原因發現,所有優化工作都應該圍繞減少運作過程中狀态的變化(資訊擦除産生功耗 = K W T,K是玻爾茲曼系數,W為需要擦除的bit數,T是環境開爾文溫度),也就是減少功耗(提升資訊密度也是為了減少bit的翻轉),其包括OS上下文切換,OS頁面緩存缺失,CPU跳轉指令預測失敗,CPU緩存缺失,CPU執行通道沖突等,如果用1,0分别代表緩存命中和缺失,有0101和0011兩種情況,我們應該會選擇後者,甚至應會選擇0001,因為前者有三種變化,後者隻有一種變化, ISCA 論文《A Case for MLP-Aware Cache Replacement》就完整的描述了這個過程,他努力去擷取連續缺失或者連續命中的場景。即使我們關注的是性能,但這個卻是結果,而不是行動的原因,反之僅僅考慮速度(例如CPU 頻率),那就會落入intel P4的結局,也就是頻率雖然快,但是機關時間内可輸出的邏輯運算确很低。

目前很熱的量子計算機具有超強的計算能力,然而真正推動他前進的是可逆計算(從計算輸出可以知道輸入,無狀态改變,例如“非”運算就是典型的可逆計算)導緻量子計算機超低的功耗。是以真正推動性能優化前進是提升資訊密度,減少處理資料産生的功耗,最終減少由于狀态變換産生的額外功耗,這是一隻看不見的手,推動我們前行。

注:本文希望找到性能優化背後的推手,是以不在乎具體的實作方法,例如

http://www.cankaoxiaoxi.com/world/20160707/1221827.shtml

科學家利用獅子躲避牛頭,攻擊牛尾部的特點在牛尾部畫兩隻眼睛,有效的解決了問題。

繼續閱讀