csappE3 Chapter5筆記

5.4. 消除循環(huán)的低效率

  1. 代碼移動:將要執(zhí)行多次但是計算結(jié)果不會改變的計算,移動到到循環(huán)外面即寒。


    image.png

5.5. 減少過程的調(diào)用

不判斷數(shù)組邊界減少過程調(diào)用姨蟋,對比如下:


image.png

就像stl中vector的成員函數(shù)和下標運算符at(),[]报辱,at進行范圍檢查与殃,而[]不進行范圍檢查。

5.6. 消除不必要的內(nèi)存引用

消除前:


image.png

消除后:


image.png

由于優(yōu)化前每次都要讀兩次內(nèi)存碍现,寫一次內(nèi)存幅疼,減少到讀一次內(nèi)存。主要是減少了讀寫內(nèi)存的次數(shù)昼接。

小結(jié)

對于以上三次優(yōu)化爽篷,達到的效果為:


image.png

原始代碼


image.png

消除循環(huán)的低效率


image.png

減少過程的調(diào)用


image.png

消除不必要的引用
可見消除不必要的引用能夠使得優(yōu)化的效果提升最明顯。

5.7.理解現(xiàn)代處理器

image.png

處理器能夠達到的最大優(yōu)化目標


image.png

已經(jīng)達到的優(yōu)化與目標值的對比:


image.png

5.8. 循環(huán)的展開

循環(huán)展開是達到延遲界限的手段:


image.png

循環(huán)展開后的效果如下;


image.png

展開次數(shù)與CPE的關(guān)系:


image.png

進一步優(yōu)化的瓶頸:

由于連續(xù)相乘或者相加等操作需要下次運算使用上一次的結(jié)果慢睡,使得兩個動作必須是順序化的逐工。這使得處理器無法使用流水線化的功能特性。 造成了最低只能達到延遲的界限漂辐。為了突破延遲界限泪喊,需要使得連續(xù)相乘也能并行化。

5.9. 提高并行性(利用流水線的特性)

5.9.1多個累計變量

類似于cuda中的延遲隱藏特性髓涯。使得更多的數(shù)據(jù)就位袒啼,充分利用流水線特性。
為了將相乘解偶,使用多個并聯(lián)相乘值:


image.png

這使得我們突破了延遲界限:


image.png

繼續(xù)增加多路并ixng行:


image.png

都幾乎達到了吞吐量的界限蚓再。

需要展開的數(shù)量

此數(shù)量與延遲L與容量C有關(guān)滑肉,即k>=CL。則根據(jù)下圖:

image.png

取各個的最大值摘仅,k需要值為k=CL=5*2=10靶庙。從上圖可以看出,在等于10時实檀,乘法達到吞吐量界限。

5.9.2.重新結(jié)合變換

重新結(jié)合變換也是打破了連續(xù)相乘的依賴性:


image.png

image.png

關(guān)鍵路徑:


image.png

與combine5的對比:


image.png

結(jié)果少了一次按声。

5.9.3 使用向量化的并行:

以上都是標量的修改膳犹,使用向量,可以繼續(xù)提高:


image.png

再次小結(jié)

可以總結(jié)優(yōu)化的步驟如下:

  1. 消除循環(huán)的效率(1.x倍的提升);
  2. 減少過程的調(diào)用(很少的優(yōu)化);
  3. 消除不必要的內(nèi)存引用(減少訪問內(nèi)存签则,多用寄存器)(x倍的優(yōu)化);
  4. 循環(huán)的展開须床,(1.x倍的優(yōu)化),使得達到了延遲界限;
  5. 使用流水線的特性(兩種方式)達到延遲界限 (x倍的優(yōu)化);
  6. 使用向量并行;
  7. 注意重新的結(jié)合可能影響浮點數(shù)的準確性
    可以看出對于優(yōu)化渐裂,最有效的是3豺旬、5項的優(yōu)化,即消除不必要的內(nèi)存引用與流水線特性提高并行性柒凉。

5.11. 一些限制因素

寄存器溢出:
當并行都p超出了可用寄存器數(shù)量時族阅,效率反而下降:


image.png

但是一般不會出現(xiàn),在寄存器溢出之前就達到了吞吐量界限膝捞。

--2021.04.04于清明節(jié)假期第二天


狗子上天了
狗子上樹了

放風箏時狗子風箏上樹了坦刀,為了救它,我也跟著爬上去了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蔬咬,一起剝皮案震驚了整個濱河市鲤遥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌林艘,老刑警劉巖盖奈,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異狐援,居然都是意外死亡钢坦,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門啥酱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來场钉,“玉大人,你說我怎么就攤上這事懈涛」渫颍” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長宇植。 經(jīng)常有香客問我得封,道長,這世上最難降的妖魔是什么指郁? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任忙上,我火速辦了婚禮,結(jié)果婚禮上闲坎,老公的妹妹穿的比我還像新娘疫粥。我一直安慰自己,他們只是感情好腰懂,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布梗逮。 她就那樣靜靜地躺著,像睡著了一般绣溜。 火紅的嫁衣襯著肌膚如雪慷彤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天怖喻,我揣著相機與錄音底哗,去河邊找鬼。 笑死锚沸,一個胖子當著我的面吹牛跋选,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播哗蜈,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼野建,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了恬叹?” 一聲冷哼從身側(cè)響起候生,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎绽昼,沒想到半個月后唯鸭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡硅确,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年目溉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片菱农。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡缭付,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出循未,到底是詐尸還是另有隱情陷猫,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站绣檬,受9級特大地震影響足陨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜娇未,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一墨缘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧零抬,春花似錦镊讼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至褥芒,卻和暖如春嚼松,著一層夾襖步出監(jiān)牢的瞬間嫡良,已是汗流浹背锰扶。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留寝受,地道東北人坷牛。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像很澄,于是被迫代替她去往敵國和親京闰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容