新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 實戰(zhàn)技巧,Mali GPU編程特性及二維浮點矩陣運算并行優(yōu)化詳解

實戰(zhàn)技巧,Mali GPU編程特性及二維浮點矩陣運算并行優(yōu)化詳解

作者: 時間:2015-08-17 來源:網(wǎng)絡(luò) 收藏

  筆者將clEnqueueNDRangeKernel函數(shù)中工作組大小參數(shù)設(shè)置為NULL,由 硬件自動確定最佳的工作組大小。由于內(nèi)核中每次會連續(xù)讀取4個浮點數(shù)值湊成float4類型的數(shù)據(jù),所以對于矩陣的寬度不是4的倍數(shù)的情況需要進行特殊處理,可在主機端首先將輸入矩陣A修改為N行N/4+4列,將矩陣B修改為N/4+4行N列,多出的矩陣部分均以0補齊,這樣既不影響計算結(jié)果,也不會影響線程的分配方案,實現(xiàn)并行方案的內(nèi)核函數(shù)如下所示:

本文引用地址:http://www.butianyuan.cn/article/278831.htm

  

 

  本文采用Arndale Board開發(fā)板作為測試平臺,軟件平臺采用Linaro機構(gòu)為Arndale Board定制的基于Ubuntu的嵌入式Linux操作系統(tǒng),其內(nèi)核版本為3.10.37,實驗時使用arm-linux-gnueabihf工具鏈對程序進行編譯。不同規(guī)模的二維浮點矩陣乘法運算在ARM Cortex-A15 CPU上的串行方案和-T604 上的并行方案的測試結(jié)果如面的表1所示,為不失一般性,測試時輸入矩陣內(nèi)容為隨機值,每種不同矩陣大小的測試項進行10次測試,將測試值的平均值作為測試結(jié)果。

  

 

  上表僅列出了輸入量較大時的測試結(jié)果,筆者實際測試時,發(fā)現(xiàn)輸入數(shù)據(jù)量較小的時候,并行方案沒有串行方案的效率高,因為計算過程大部分都消耗在數(shù)據(jù)的傳輸上,由于計算量小,端的計算瞬間完成,沒有辦法將 GPU訪存的延遲掩蓋,所以此時訪存速度較快的CPU端的串行方案反而效率更高。

  當(dāng)計算量逐步增加的時候,Mali GPU的并行能力逐漸體現(xiàn)出其優(yōu)勢,加速比有顯著提升,當(dāng)計算量大到一定程度的時候,加速比趨于穩(wěn)定,因為這時Mali GPU上有大量的線程切換,不僅隱蔽了訪存的延遲,也使得Mali GPU上的計算單元滿載,其計算效率已達到硬件能夠承受的極限,此時Mali GPU可以提接近40倍的供驚人的加速比。

  實際測試時,筆者使用top指令觀察矩陣進程的CPU占用量,串行方案的CPU占用量在98%左右,而基于Mali GPU的并行方案對CPU幾乎沒有占用量,說明并行方案不僅可以提升計算效率,還降低了CPU的負擔(dān),大大提升了系統(tǒng)實時性。實驗的實際測試結(jié)果和GPU異構(gòu)運算特點吻合。

  4.結(jié)語

  本文針對Mali-T604 GPU論述了基于OpenCL的Linux平臺上進行通用計算并行優(yōu)化的方法,論述了Mali-T604 GPU的硬件特點,并基于OpenCL設(shè)計了二維矩陣乘法的并行方案,在Mali-T604上獲得了驚人的加速比,結(jié)果表明Mali GPU對于龐大輸入量的計算密集型高度可數(shù)據(jù)并行化通用計算問題有顯著的加速能力,且并行優(yōu)化結(jié)果正確可靠。

c語言相關(guān)文章:c語言教程


存儲器相關(guān)文章:存儲器原理


塵埃粒子計數(shù)器相關(guān)文章:塵埃粒子計數(shù)器原理

上一頁 1 2 下一頁

關(guān)鍵詞: Mali GPU

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉