999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

面向OpenCL的Mali GPU仿真器構建研究

2015-12-26 02:49:06崔繼岳梅魁志劉冬冬李博良
西安交通大學學報 2015年2期
關鍵詞:嵌入式指令程序

崔繼岳,梅魁志,劉冬冬,李博良

(西安交通大學電子與信息工程學院,710049,西安)

?

面向OpenCL的Mali GPU仿真器構建研究

崔繼岳,梅魁志,劉冬冬,李博良

(西安交通大學電子與信息工程學院,710049,西安)

針對嵌入式GPU通用計算的仿真器構建需求,通過對通用圖形處理單元仿真器(general purpose graphics processing unit-simulator, GPGPU-sim)的計算核心、存儲結構與Mali GPU的異同進行比較分析,首先建立面向OpenCL的Mali GPU仿真器的流程與結構,并設計計算單元數、寄存器數、最小并行粒度等GPU微體系結構參數的獲取方法,在對GPGPU-sim進行修改和配置后,實現了對特定GPU架構的仿真器構建。使用矩陣相乘、圖像處理等OpenCL程序對仿真器的準確性進行測試,以程序在仿真器和硬件平臺上的執行周期數差距作為評估依據。實驗結果表明:對于測試程序集中優化前的OpenCL程序,其中70%的程序在兩個平臺上的運行周期數差距不超過30%;對于優化后的OpenCL程序,其中90%的程序的運行周期數差距不超過30%。由此證明,構建的GPU仿真器能夠滿足OpenCL程序的仿真與性能評估。

圖形處理器;OpenCL;微體系結構參數;仿真器

GPU通用計算(general purpose computing on GPU, GPGPU)技術將GPU與CPU組成異構計算平臺,使得GPU不再局限于傳統的圖形計算,可以加快現有算法運行速率[1]。嵌入式設備的GPU已經采用多核架構,使得利用嵌入式GPU進行通用計算成為新的研究方向和熱點,例如ARM發布的Mali T6系列GPU目前已支持OpenCL 1.1規范,對嵌入式平臺的GPGPU開發環境產生了需求,因此本文構建了Mali系列GPU仿真器,以滿足OpenCL程序的運行性能預測與程序優化。

1 嵌入式GPU仿真器的構建設計

GPU的體系結構決定了OpenCL程序的執行方式,與嵌入式GPU的體系結構保持一致是仿真器的準確性的前提[2]。本文以通用圖形處理單元仿真器(general purpose graphics processing unit-simulator, GPGPU-sim)作為仿真器設計基礎,對其進行修改,使其體系結構與Mali T-628一致,以完成仿真器的構建。

1.1 GPGPU-sim仿真結構

GPGPU-sim仿真器面向GPU通用計算,著色器模型采用統一渲染架構,由UBC大學Aamodt等于2009年發布,以NVIDIA的GPU為模擬對象[2]。GPGPU-sim提供了詳細的配置參數,能夠對著色器結構以及內存緩存結構進行詳細模擬,并提供了OpenCL接口,支持對OpenCL程序的仿真。

圖1 GPGPU-sim的體系結構

圖1給出了GPGPU-sim的整體結構。計算核心部分模擬了GPU的并行核心架構,每個核心都是一個單指令多線程(single instruction multiple thread, SIMT)架構。SIMT核心負責指令的執行,包括算術運算指令和數據存取指令。在SIMT核心中含有多個算術邏輯單元(arithmetic logic unit, ALU),所有的ALU執行相同的操作以實現并行化。GPGPU-sim的緩存體系模塊包括位于核心內的一級緩存、本地內存和位于存儲器的二級緩存、內存芯片(DRAM)4部分。計算核心與外部的存儲器通過內部互聯網絡總線相連。

1.2 Mali系列GPU體系結構

Mali系列GPU主要分為計算核心和存儲結構兩部分。

存儲結構部分由寄存器、一級緩存、二級緩存和系統內存4部分組成。在系統內存中劃分出4塊內存空間——私有內存、常量內存、本地內存和全局內存,分別與OpenCL的內存模型相對應,其中私有內存和寄存器共同存儲OpenCL的私有類型變量。

仿真對象Mali T-628的計算核心內部包含一個矢量處理器和一個標量處理器,矢量處理器為128位的單指令多數據(single instruction multiple data, SIMD)結構,標量處理器單周期內能夠處理不大于32位的算術運算。圖2給出了Mali GPU體系結構的抽象模型。

圖2 嵌入式GPU體系結構抽象模型

對比圖1和圖2,可以看出GPGPU-sim的體系結構和嵌入式GPU體系架構相類似,GPGPU-sim中片上互聯網絡模塊支持3種模式,不同模式對性能影響較小,因此本文對Mali T-628中互聯網絡模塊部分不做研究,仿真時將其設為蝶形模式。GPGPU-sim與Mali T-628計算核心和存儲系統體系結構的主要區別如下。

(1)GPGPU-sim計算核心為多個32位標量處理器,Mali T-628計算核心為128位矢量處理器和一個標量處理器,需要對GPGPU-sim仿真流程和計算核心部分進行修改。

(2)二級緩存的位置不同。GPGPU-sim的二級緩存在外部內存,計算核心通過互聯網絡從二級緩存中讀取數據;嵌入式GPU的二級緩存在GPU芯片內,二級緩存通過互聯網絡與外部存儲器交換數據。因此,計算核心對外部存儲器的數據傳輸在兩種架構中具有一定的等價性。

(3)本地內存的存取速率不同。GPGPU-sim中本地內存的存取速率和一級緩存一致,Mali T-628本地內存存取速率和外部存儲器一致。當OpenCL程序中大量使用本地內存時,GPGPU-sim中對本地內存中數據訪問延遲小,而Mali GPU中本地內存中數據訪問延遲大,仿真結果會有較大差別。

1.3 GPGPU-sim仿真流程修改

在NVIDIA平臺,OpenCL的kernel函數首先編譯成并行線程執行(parallel thread execution, PTX)語言,然后加載到GPU上執行。GPGPU-sim實際上是以PTX語言作為輸入,通過對其解析能夠有效確定GPU的行為實現仿真。矢量核心的特性是指令并行度隨處理數據的寬度變化,而GPGPU-sim中的標量核心指令并行度是固定的。為了使GPGPU-sim支持矢量處理器特性,本文加入了對指令的邏輯判斷,對于不同的指令分配不同的并行寬度,并將其封裝為指令檢測器模塊,修改后的仿真流程如圖3所示。

圖3 修改后的GPGPU-sim仿真流程

圖4給出了指令檢測器的內部流程。在GPGPU-sim中增加一個指令寬度標記位,每一個數據類型都有其對應的標記值。在仿真器運行前,首先對核函數進行數據類型檢測,得到標記位信息,然后對核心并行寬度進行設置,直至當前核函數執行完畢,在下一個核函數執行前再重復該過程。

圖4 指令檢測器的內部流程

2 GPU微體系結構關鍵參數獲取

GPGPU-sim提供了詳細的配置參數[3],能夠對計算核心模塊、存儲系統模塊以及互聯網絡模塊進行配置。仿真器各模塊參數與Mali GPU參數一致性越高,仿真結果就越準確。由于從公開的技術文檔無法得到Mali T-628的結構參數,本文參考NVIDIA平臺[4]以及AMD平臺[5]的體系結構來研究參數獲取。

2.1 算術運算指令延遲

指令延遲主要研究GPU的算術邏輯單元對不同算術運算指令的執行時間。為了減少誤差,需要在GPU中填充大量的指令,使得GPU在程序運行時間內主要進行數據運算,得到核函數的運行時間T后即可根據核函數內循環次數與GPU的時鐘頻率得到對應指令執行的時鐘周期數。測試結果如表1所示(Mali GPU不支持雙精度浮點數據運算)。

表1 Mali T-628算術運算指令延遲

2.2 計算單元數目

OpenCL中工作項被劃分為不同的工作組,一個工作組在GPU上的一個計算單元執行時,可以通過分配不同工作組的數目來測量計算單元的數目,當工作組的數目從1依次增加時,程序的執行時間會按照1~S,S+1~2S,…的規律呈現階梯式增長,階梯的長度S即計算單元的數目。測試程序在Mali T-628上的運行結果見圖5,可得出計算單元數為4。

圖5 執行時間與工作組數的關系

2.3 寄存器數目

在OpenCL中,每個工作項的臨時變量存放在GPU設備上的私有內存中,Mali GPU的私有內存包含兩部分,一部分是寄存器,另一部分是在設備內存中劃分的,其存取性能較寄存器有明顯差距。

如圖6所示,Mali GPU的寄存器數目可以得到確定。當單個工作項占用的臨時變量大于寄存器數目時,多余的臨時變量就會存放到設備內存的私有內存部分,計算時間會快速增長,由此可確定每個工作項最大支持的寄存器數目。圖6a中,最大寄存器數目為38,此時該工作項執行時間為0.955 s。保持每個工作項占用寄存器數目為最大值,不斷擴大工作組內工作項的數目,當整個計算單元的寄存器全部占用時,執行時間增長幅度變大。圖6b中,工作項數目增加到73時,執行時間為8.833 ms,因此一個計算單元內的寄存器數目約為73與38的乘積,即2 774。

(a) 執行時間與臨時 (b) 執行時間與工作 變量數的關系 項數的關系圖6 寄存器數目測試結果

2.4 最小并行粒度

假設GPU的最小線程并行數是N,那么該GPU將以N個工作項作為一組原子并發的線程組。如果遇到分支,那么一組N個工作項都將介入這個分支,對于不滿足條件的工作項,則會等到當前分支處理之后再執行。利用最小并行粒度內的工作項并發執行這一特性,在基準測試設計中,假設工作組大小為2N,在核函數中增加一個判斷語句,當工作項標識符小于N時執行操作A,否則執行操作B,這時2N個工作項在運行時,操作B在操作A之前執行。當工作組大小恰好為N時,操作A是在操作B之前執行的。通過標記位信息可以判斷出操作A和操作B的執行順序,從而判斷工作組大小與最小并行粒度是否相等。當工作組足夠大時,逐次遞減判斷,就可以找到最小并行粒度的值。經測試,Mali T-628最小并行粒度為1。

2.5 緩存結構

利用程序的空間局部性和時間局部性原理可以構造出一個存儲器測試程序,通過數據的訪問速率分析出緩存結構。設計的特殊數組結構及其數值初始化方式為[6]

Xi=(p+i)%L

(1)

式中:X為數組;i為數組下標;L為數組長度;p為偏移量(4B,8B,12B,…)。

當數組中偏移量不斷增加時,緩存中數據的更新次數也逐漸增加,程序的執行時間同比增長,當偏移量達到緩存中塊大小時,緩存中數據的更新次數會暫時達到一個穩定值。偏移量繼續增加到組大小時,緩存中數據的更新頻率再次達到一個穩定值。依據此特性可以分析出緩存中的塊大小和組大小。圖7顯示了利用該方法獲得的Mali T-628中緩存結構。當偏移量小于64 B時,執行時間正比增加;當偏移量為64 B時,執行時間是0.632 s;當偏移量在64 B~1 KB之間時,執行時間基本不變,可以確定塊大小為64 B;當偏移量在1 KB~30 KB時執行時間正比增加,可以確定組大小為1 KB;當偏移量為30 KB時,執行時間是1.030 s;當偏移量大于30 KB后執行時間基本不變,可以確定一個計算單元內緩存總大小為30 KB左右。

(a)偏移量遞增4 B (b)偏移量遞增1 KB圖7 執行時間與數組偏移量關系

2.6 Mali T-628體系結構參數設定

結合OpenCL中的函數clGetDeviceInfo()可以獲得Mali T-628的基本信息,最終得到的仿真器中各模塊的體系結構參數值與GPGPU-sim的默認參數值(用來模擬NVIDIA平臺的Quadro FX5800)的比較見表2。片上互聯網絡類型(Topology)、二級緩存結構(gpgpu_cache:dl2)、一級指令緩存(gpgpu_cache:il1)、一級紋理緩存(gpgpu_cache:l1)等值采用GPGPU-sim中提供的默認值。

3 實驗及結果分析

3.1 硬件平臺

實驗使用基于三星Exynos 5420 SoC的InSignal Arndale Octa 5420開發板作為平臺,操作系統為Android 4.2,內核為Linux 3.4.39。GPU為ARM的Mali T-628,核心頻率為533 MHz。

表2 Mali T-628體系結構參數

3.2 測試程序

OpenCL程序的開發分為兩種:第一種將算法用OpenCL實現;第二種依據硬件平臺的體系結構對OpenCL程序進行優化,以提升程序的運行速度。因此,仿真器的準確性測試包括優化前和優化后的兩種OpenCL程序測試。實驗選用的矩陣相乘算法實現了粗粒度和細粒度版本,其中細粒度版本每個工作項計算目標矩陣中一個元素,粗粒度版本每個工作項計算目標矩陣中一行元素;方向梯度直方圖(histogram of oriented gradient, HOG)特征提取程序的算法復雜程度較高,主要測試仿真器對于復雜算法仿真時的準確性。

3.3 實驗結果

為驗證仿真器的準確性,需要對比同樣的OpenCL程序在真實硬件與仿真器上的運行狀態。本文采用周期數作為衡量標準,仿真器運行結束后會返回執行的周期數,而真實硬件上只能返回程序運行時間,將運行時間與頻率的乘積作為硬件平臺上的運行周期。

表3、表4、表5列出了測試程序在仿真器與模擬對象Mali T-628上執行的周期數差距,對每一個測試程序均運行了多次。

測試結果表明,對于優化前的OpenCL程序,其中70%的測試程序周期數差距在30%以內;對優化后的OpenCL程序,其中90%的測試程序周期數差距在30%以內。Bakhoda等在對GPGPU-sim進行測試時,周期數差距在30%以內的測試程序占總數的67%[2]。

表3 矩陣相乘周期數差距測試結果 %

表4 圖像邊緣檢測周期數差距測試結果 %

表5 HOG特征提取周期數差距測試結果 %

因為對存儲系統中二級緩存和主存儲器的建模利用了體系結構的等價性(采用GPGPU-sim中提供的默認值),與真實GPU之間存在差距,所以在矩陣計算的粗粒度版本中,當矩陣規模增加到200階時,對外部數據訪問頻繁,仿真準確性因而變差。

4 結 論

本文通過對嵌入式GPU關鍵微體系結構的參數獲取,在現有仿真器GPGPU-sim的基礎上進行了改進,設計實現了Mali T-628 GPU仿真器,并使用多種OpenCL程序測試了仿真器的準確性和有效性。后續工作將進一步完善該仿真器存儲系統模塊參數的獲取方法,以提供更高的仿真精度。

[1] NVIDIA. NVIDIA GeForce 8800 GPU architecture overview , TB-02787-001_V01[R]. Santa Clara, CA, USA: NVIDIA Corporation, 2006.

[2] BAKHODA A, YUAN G L, FUNG W W L, et al. Analyzing CUDA workloads using a detailed GPU simulator [C]∥Proceedings of the IEEE International Symposium on Performance Analysis of Systems and Software. Piscataway, NJ, USA: IEEE, 2009: 163-174.

[3] AAMODT T M, FUNG W W L, SINGH I, et al. GPGPU-Sim 3.x manual[EB/OL]. (2012-08-08)[2013-08-08]. http:∥gpgpu-sim.org/manual/index. php/GPGPU-Sim_3.x_Manual.

[4] WONG H, PAPADOPOULOU M M, SADOOGHI-ALVANDI M, et al. Demystifying GPU microarchitecture through microbenchmarking [C]∥Proceedings of the IEEE International Symposium on Performance Analysis of Systems and Software. Piscataway, NJ, USA: IEEE, 2010: 235-246.

[5] TAYLOR R, LI Xiaoming. A micro-benchmark suite for AMD GPUs [C]∥Proceedings of the 39th International Conference on Parallel Processing Workshops. Washington, DC, USA: IEEE Computer Society, 2010: 387-396.

[6] 楊海燕, 史曉華, 孫清越, 等. 面向OpenCL的GPGPU微基準測試程序集的研究與實現 [J]. 系統工程與電子技術, 2013, 35(12): 2631-2642.

YANG Haiyan, SHI Xiaohua, SUN Qingyue, et al. OpenCL micro benchmarks: testing the performance of GPGPU software and hardware architecture [J]. Systems Engineering and Electronics, 2013, 35(12): 2631-2642.

[本刊相關文獻鏈接]

丑文龍,梅魁志,高增輝,等.ARM GPU的多任務調度設計與實現.2014,48(12):87-92.[doi:10.7652/xjtuxb2014120 14]

張虹,鄭霄,趙丹.GPU加速竇房結計算機仿真的實現及優化.2014,48(7):60-64.[doi:10.7652/xjtuxb201407011]

李亮,王恩東,朱正東,等.ARM GPU的多任務調度設計與實現.2013,47(10):44-50.[doi:10.7652/xjtuxb201310008]

張保,曹海軍,董小社,等.面向圖形處理器重疊通信與計算的數據劃分方法.2011,45(4):1-4.[doi:10.7652/xjtuxb2011 04001]

(編輯 武紅江)

Construction of Embedded Mali GPU Simulator for OpenCL

CUI Jiyue,MEI Kuizhi,LIU Dongdong,LI Boliang

(School of Electronics and Information Engineering, Xi’an Jiaotong University, Xi’an 710049, China)

The similarities and differences between GPGPU-sim and Mali GPU in computing cores and the storage structure are analyzed and compared, and simulating procedures and structures of Mali GPUs for OpenCL are built up to develop simulators for the general-purpose computing on embedded GPU. Methods to obtain the GPU microarchitecture parameters such as the computing unit number, the number of registers and the minimum parallel granularity are designed, and then the GPGPU-sim is configured and modified to construct specific GPU simulators. The accuracy of the simulator is tested through comparisons of running OpenCL programs, such as matrix multiplication and image processing on a real GPU and the simulator, and the difference between running cycles on the real GPU and the simulator is used as evaluation. Results show that the cycle differences are within 30% for about 70% OpenCL programs with simple implementation, and the cycle differences are within 30% for about 90% OpenCL programs with optimization. Therefore, it can be concluded that the constructed simulator meets the requirements of simulating and evaluating OpenCL programs on the embedded GPU.

GPU; OpenCL; microarchitecture parameters; simulator

2014-07-06。

崔繼岳(1988—),男,碩士生;梅魁志(通信作者),男,副教授。

國家高技術研究發展計劃資助項目(2012AA010904);國家自然科學基金資助項目(61375023)。

時間:2015-01-05

10.7652/xjtuxb201502004

TP391

A

0253-987X(2015)02-0020-05

網絡出版地址:http:∥www.cnki.net/kcms/detail/61.1069.T.20150105.0859.007.html

猜你喜歡
嵌入式指令程序
聽我指令:大催眠術
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
搭建基于Qt的嵌入式開發平臺
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 黄色网站不卡无码| 欧美激情二区三区| 亚洲天堂视频在线观看| 奇米精品一区二区三区在线观看| 一级不卡毛片| 日韩在线视频网站| 亚洲国产日韩欧美在线| 亚洲v日韩v欧美在线观看| 国产一级毛片yw| 日韩色图在线观看| 中文字幕2区| 国产精品亚洲日韩AⅤ在线观看| 欧洲熟妇精品视频| 最新国产成人剧情在线播放| 天天色天天综合| 无码内射中文字幕岛国片| 国产精品视频猛进猛出| 免费jjzz在在线播放国产| 国产a在视频线精品视频下载| 亚洲a免费| 国产另类乱子伦精品免费女| 欧美影院久久| 久久久噜噜噜| 国产福利不卡视频| 免费国产高清视频| 伊人91视频| 伊人无码视屏| 久热re国产手机在线观看| 午夜限制老子影院888| 精品一區二區久久久久久久網站| 麻豆国产精品| 亚洲国内精品自在自线官| 久久青青草原亚洲av无码| 日本亚洲欧美在线| 国产H片无码不卡在线视频| 国产青榴视频在线观看网站| 国产精品免费久久久久影院无码| 超碰精品无码一区二区| 国产97色在线| 国产视频你懂得| 久青草国产高清在线视频| 日韩成人高清无码| 成人福利在线视频免费观看| 伊人精品视频免费在线| 久久99精品久久久久久不卡| 免费一级成人毛片| 无码专区国产精品第一页| 免费一级成人毛片| 国产后式a一视频| 欧美精品v欧洲精品| 久久婷婷人人澡人人爱91| 欧美精品xx| 永久免费无码日韩视频| аⅴ资源中文在线天堂| 青草午夜精品视频在线观看| 精品国产香蕉伊思人在线| 中文字幕中文字字幕码一二区| 国产中文一区二区苍井空| 欧美一级视频免费| 国产精品亚洲αv天堂无码| 国产系列在线| 国产99在线| 91精品视频网站| 久久永久免费人妻精品| 久久99蜜桃精品久久久久小说| 亚洲视频色图| 美女国内精品自产拍在线播放 | 国产原创自拍不卡第一页| 久久伊伊香蕉综合精品| 全部免费特黄特色大片视频| 亚洲欧洲自拍拍偷午夜色| 久久a级片| 狠狠色婷婷丁香综合久久韩国| 欧美黑人欧美精品刺激| 国产一级裸网站| 亚洲一级毛片免费观看| 伊人久久久久久久| 亚洲中文字幕久久精品无码一区| 黄色污网站在线观看| 色综合中文| 亚洲国产欧美国产综合久久 | 999精品在线视频|