麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

Multicore Programming OpenMP: Part 2

2019-11-14 12:08:01
字體:
來源:轉載
供稿:網友

CPU無法達到peak performance的原因矩陣乘法的討論介紹理論基礎塊狀矩陣計算優化技巧代價模型strength reduction內聯函數inline f循環展開loop unrolling去掉下標計算sub-exPRession eliminate查表look up table合并循環減少條件判斷

轉載請注明出處:http://blog.csdn.net/c602273091/article/details/54851077

上一節說到的是OpenMP的寫法,這一次主要是介紹代碼優化。

CPU無法達到peak performance的原因

這里寫圖片描述 本來CPU的性能應該如上圖所示的,但是實際使用的時候并沒有達到這個效果。

主要是因為:

存儲器的層次設計。發生cache、TLB miss的時候,就需要等待很多個周期;

流水線、ILP等等并行設計有缺陷,使得吞吐量無法達到預期;

有的操作比如存儲操作看似不需要浪費周期,其實數據傳輸等等會浪費不少周期。

矩陣乘法的討論

介紹

這里寫圖片描述 原始的矩陣乘法就如上圖的實現。

但是使用加速之后效果怎么樣呢?ATLAS做加速的效果遠遠超過了三個循環的矩陣計算。 這里寫圖片描述

理論基礎

在這里需要介紹一些存儲器方面的知識。

這里寫圖片描述 矩陣存儲分為行優先和列優先的。行列優先的不同使得每次存入cache的一行是列方向或者是行方向。

現在解構一下取數據的關系: 這里寫圖片描述

對存儲數組A、B、C計算讀取次數。 這里寫圖片描述

塊狀矩陣計算

使用塊狀計算矩陣,如下圖。那么之前計算矩陣就改成了四個循環。 這里寫圖片描述

想對這塊更了解,可以看我之前寫的18-600里cache的介紹。 想直觀看這個算法,可以看: 這里寫圖片描述

優化技巧

代價模型

計算代價的部分如下圖:(左邊是具體每部分、右邊是具體例子) 這里寫圖片描述

計算一開始的代價:19n 這里寫圖片描述

去掉結構體,去掉了索引這個步驟:6n 這里寫圖片描述

改變循環體內部可以移出的操作:5n 這里寫圖片描述

使用循環展開:3.5n 這里寫圖片描述

strength reduction

減少需要浪費很多資源的操作,比如去掉除法、log等等或者替換成別的操作。 這里寫圖片描述

內聯函數(inline f)

這里寫圖片描述 減少函數調用,把簡單函數改成內聯函數。

循環展開(loop unrolling)

這里寫圖片描述 這里主要是涉及CPU在取內存中數據到寄存器的時候,循環展開可以減少CPU周期。

去掉下標計算(sub-expression eliminate)

這里寫圖片描述 有時候計算循環中的下表很浪費CPU周期,一部分放到循環外就可以加快速度。

查表(look up table)

這里寫圖片描述 提前計算好要用到的一些數據,尤其減少循環多次計算的浪費。這個做法和暴力破解很像。

合并循環

這里寫圖片描述 減少循環次數,可以減少不少計數器的操作。

減少條件判斷

減少循環中的條件判斷,如果你提前知道哪個是需要跳過的。 這里寫圖片描述


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 精品国产乱码久久久久久丨区2区 | 国产精品高潮99久久久久久久 | 国产成人综合在线视频 | 一级电影免费看 | 免费看毛片的网站 | 亚洲成人精品区 | 精品国产一二区 | 日本免费aaa观看 | 黄色免费av | 欧美中文字幕一区二区 | 亚洲小视频在线播放 | 亚洲一级片在线观看 | 久久久久久久久久综合 | 一级视频网站 | 草草视频免费 | 91,视频免费看 | 亚洲精品无码不卡在线播放he | 色操网| 综合国产一区 | 久久久一区二区三区精品 | 大片毛片 | 久久国产精品久久久久久久久久 | 国产一级一区二区 | 黄色一级片免费观看 | 精品一区免费 | 92精品国产自产在线 | 欧美日韩在线中文字幕 | 精品一区久久久 | 毛片成人 | 午夜精品毛片 | 538任你躁在线精品视频网站 | 欧美日韩在线看片 | 蜜桃精品视频 | 2021国产精品视频 | 91久久国产露脸精品国产护士 | 免费国产自久久久久三四区久久 | 欧美性色黄大片www 操碰网 | 31freehdxxxx欧美 | 久草成人在线 | 国产精品成人免费一区久久羞羞 | 91精品国产福利尤物免费 |