国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

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

發(fā)布時(shí)間:2015-10-27 11:27    發(fā)布者:designapp
關(guān)鍵詞: Mali , GPU
  基于Mali-T604嵌入式GPU的二維浮點(diǎn)矩陣運(yùn)算并行優(yōu)化
  ARM Cortex-A15系列處理器是當(dāng)前最新的嵌入式ARM SoC,該系列處理器首次集成了Mali-T600系列的移動(dòng)端GPU,該系列GPU支持OpenGL以及OpenCL等計(jì)算框架,可以有效加速通用計(jì)算,而目前對(duì)其應(yīng)用方法和實(shí)際優(yōu)化效果的研究很少。本文基于以三星的Exynos5250處理器為核心的Arndale Board嵌入式開發(fā)平臺(tái),對(duì)集成于處理器上的Mali-T604嵌入式GPU的GPGPU(General-Purpose computation on GPU)技術(shù)進(jìn)行研究并對(duì)不同運(yùn)算規(guī)模的浮點(diǎn)矩陣乘法進(jìn)行并行加速優(yōu)化,提供實(shí)際測(cè)試結(jié)果。
  GPGPU技術(shù)早年主要在超級(jí)計(jì)算機(jī)平臺(tái)進(jìn)行高性能計(jì)算,而近年該技術(shù)逐漸被引入嵌入式領(lǐng)域。但在過去的移動(dòng)GPU平臺(tái)上沒有專門針對(duì)通用計(jì)算的軟件框架和編程接口,軟件設(shè)計(jì)者難以對(duì)于數(shù)據(jù)的同步和計(jì)算的并行進(jìn)行控制,所以移動(dòng)GPU在通用計(jì)算領(lǐng)域一直難以應(yīng)用。本文基于Exynos5250 SoC平臺(tái)詳述Mali GPU的硬件特性和將其應(yīng)用于通用計(jì)算的編程的方法,最后將二維浮點(diǎn)矩陣乘法并行化作為優(yōu)化實(shí)例,驗(yàn)證Mali GPU的并行能力,為計(jì)劃使用嵌入式GPU的GPGPU技術(shù)進(jìn)行優(yōu)化工作的研究人員和應(yīng)用開發(fā)者提供技術(shù)參考和借鑒。
  1.Mali T604 GPU的硬件結(jié)構(gòu)和編程特性
  Mali是由ARM研發(fā)設(shè)計(jì)的移動(dòng)顯示芯片組(GPUs)系列,不僅能夠在移動(dòng)端提供強(qiáng)大的圖像渲染能力,同時(shí)在近期對(duì)通用計(jì)算進(jìn)行了良好的軟硬件支支持。
  1.1 Mali T604 GPU的組成結(jié)構(gòu)
  Mali-T604是Mali系列中首款使用統(tǒng)一渲染架構(gòu)Midgard的移動(dòng)GPU,Mali-T604 GPU包含4個(gè)著色器核心,采用AMBA 4 ACE-LITE總線接口,該總線以Cache Coherent Interconnect技術(shù)為特色,在多個(gè)處理器之間提供完全Cache一致性,通過ARM的一致性和互連技術(shù),計(jì)算任務(wù)在異構(gòu)系統(tǒng)中進(jìn)行共享處理時(shí),可以輕松跨越CPU、GPU和其他可用計(jì)算資源,更高效地訪問數(shù)據(jù)。圖1展示了Mali-T604 GPU的基本框架。如圖2所示,Cortex-A15 CPU核心以及Mali GPU核心物理上共享了片外的RAM存儲(chǔ)器并保持了L2Cache的一致性。
  


  圖1 Mali-T604基本硬件框圖
  


  圖2 Exynos5250處理器框圖
  Mali-T604 GPU在硬件層面優(yōu)化了對(duì)任務(wù)管理和事件依賴的處理,并將這部分功能完全集成在其硬件的任務(wù)管理單元之中,可將計(jì)算任務(wù)從CPU卸載到GPU,并在活動(dòng)的著色器核心之間實(shí)現(xiàn)無(wú)縫負(fù)載平衡。
  1.2 Mali GPU的并行化線程結(jié)構(gòu)特征
  Mali GPU進(jìn)行通用計(jì)算的技術(shù)核心是以多核多線程的思想將密集的計(jì)算任務(wù)進(jìn)行拆解,將大量的計(jì)算線程分配于眾多計(jì)算核心中,GPU可以同時(shí)處理成百上千的線程,大量晶體管用于ALU.GPU適合做高密度數(shù)據(jù)的并行運(yùn)算,只有在運(yùn)算的并行粒度足夠大的時(shí)候才能發(fā)揮出強(qiáng)大的并行運(yùn)算能力。圖3展示了CPU和Mali GPU之間工作調(diào)配的過程。
  


  圖3 Cortex-A15 CPU和Mali GPU之間的工作調(diào)配
  Mali GPU中每個(gè)計(jì)算線程會(huì)占用著色器核心的一部分資源(存儲(chǔ)器和ALU等),每個(gè)線程占用資源的多少影響了同時(shí)并行處理的活動(dòng)線程的數(shù)量。對(duì)Mali GPU,每一個(gè)線程都有自己的程序計(jì)數(shù)器,這意味著Mali GPU和桌面GPU平臺(tái)不同,程序分支的發(fā)散不是一個(gè)影響效率的重要的問題。每個(gè)Mali-T604 GPU的著色器核心最多可以同時(shí)容納256個(gè)線程,Mali GPU在進(jìn)行通用計(jì)算時(shí)需要大量的線程進(jìn)行切換才能保證得到計(jì)算效率上的收益,對(duì)于Mali-T604而言,這個(gè)最少的總工作項(xiàng)數(shù)量是4096.如果分配于單個(gè)著色器核心上的線程數(shù)目不足128,很可能帶來(lái)并行效率的下降,這時(shí)需要拆分工作為不同的步驟,簡(jiǎn)化每個(gè)步驟的線程復(fù)雜度,讓單個(gè)著色器核心并行容納的線程數(shù)量足夠多以保證并行度。
  2.Mali GPU的并行化計(jì)算模型構(gòu)建
  Mali-T600系列的GPU對(duì)OpenCL 1.1 Full Profile標(biāo)準(zhǔn)進(jìn)行了良好的支持,OpenCL是真正意義上的跨平臺(tái)異構(gòu)并行框架,能夠真正挖掘出Mali GPU的并行計(jì)算特性。
  2.1 Mali GPU在OpenCL框架下的并行任務(wù)抽象及線程規(guī)劃
  OpenCL是一個(gè)由編程語(yǔ)言規(guī)范,應(yīng)用程序接口、庫(kù)函數(shù)和運(yùn)行時(shí)系統(tǒng)組成的跨平臺(tái)異構(gòu)并行計(jì)算框架,Mali-T604 GPU在OpenCL下的抽象層次如下面的圖4所示:
  


  圖4 OpenCL針對(duì)Mali-T604的抽象層次
  OpenCL的并行基于SMT(同時(shí)多線程)的思想,由用戶指定自定義數(shù)目的線程,并根據(jù)線程的標(biāo)識(shí)符設(shè)計(jì)計(jì)算線程與數(shù)據(jù)關(guān)聯(lián)的映射法則,SMT架構(gòu)主要用于隱蔽訪存的延時(shí)。OpenCL框架下,CPU主機(jī)端程序由OpenCL的API編寫,實(shí)現(xiàn)計(jì)算平臺(tái)的初始化,存儲(chǔ)器的分配和交互的控制,并決定分配的計(jì)算線程的維度和每一維的數(shù)量。設(shè)備端的內(nèi)核程序由OpenCL C語(yǔ)言編寫,Mali GPU會(huì)根據(jù)內(nèi)核對(duì)象創(chuàng)建主機(jī)端請(qǐng)求數(shù)量的線程實(shí)例,每個(gè)線程的運(yùn)算工作都由圖4中一個(gè)對(duì)應(yīng)的PE進(jìn)行處理,線程的工作邏輯決定了線程標(biāo)識(shí)號(hào)和數(shù)據(jù)的關(guān)聯(lián)關(guān)系。多個(gè)線程被組織為工作組的形式,每一個(gè)工作組固定分配到一個(gè)CU上進(jìn)行處理,同一個(gè)工作組中的線程會(huì)在對(duì)應(yīng)的CU上由Mali GPU的任務(wù)管理單元進(jìn)行快速的切換和調(diào)度,保證一個(gè)CU上的PE最大限度保持忙碌。
  2.2 Mali GPU多核環(huán)境下的存儲(chǔ)器空間映像方法
  如圖4所示,Mali GPU和Cortex A15 CPU所共用的RAM在邏輯上被OpenCL框架切割成了四種不同的類型,Mali-T600系列的GPU使用統(tǒng)一存儲(chǔ)器模型,四種類型的存儲(chǔ)器都映射到片外RAM上,Cortex-A15 CPU和Mali-T604 GPU共享物理RAM,相對(duì)桌面GPU平臺(tái)而言,在Mali平臺(tái)上將數(shù)據(jù)從全局存儲(chǔ)器拷貝到局部或者私有存儲(chǔ)器并不能使訪存性能得到提升,但相對(duì)地也不用像桌面GPU一樣進(jìn)行從主存到顯存的數(shù)據(jù)拷貝。Mali GPU有三種訪問RAM的方式,由傳入clCreateBuffer函數(shù)中的不同參數(shù)決定,其示意圖如下:
  


  圖5 OpenCL框架下Mali GPU對(duì)存儲(chǔ)器的不同訪問方式
  Cortex-A15 CPU和Mali-T604 GPU使用不同的虛擬地址空間,在主機(jī)端由malloc函數(shù)分配的緩存,Mali GPU無(wú)法訪問。Mali GPU可以訪問clCreateBuffer函數(shù)分配出的緩存,CPU借助OpenCL中的map映射操作也可實(shí)現(xiàn)對(duì)這類緩存的讀寫,圖5中的方式2需要主機(jī)端的緩存進(jìn)行數(shù)據(jù)拷貝來(lái)初始化,方式3和方式2類似,但只在OpenCL的內(nèi)核函數(shù)首次使用該緩存時(shí)才進(jìn)行數(shù)據(jù)拷貝,在CPU端進(jìn)行map操作時(shí)GPU還會(huì)將數(shù)據(jù)拷貝回主機(jī)端的緩存,對(duì)于Mali GPU而言,多余的數(shù)據(jù)拷貝操作會(huì)降低訪存效率。圖5中的方式1是ARM官方建議的訪存方式,CPU和GPU共享一塊物理緩存,高速實(shí)現(xiàn)數(shù)據(jù)交互。
  2.3 Mali GPU的向量處理特性
  Mali-T604 GPU內(nèi)部有128位寬度的向量寄存器,使用OpenCL C中的內(nèi)建向量類型可以讓數(shù)據(jù)自動(dòng)以SIMD的形式在Mali GPU的ALU中進(jìn)行并行計(jì)算,Mali GPU中將數(shù)據(jù)以16個(gè)字節(jié)對(duì)齊可以使得數(shù)據(jù)的長(zhǎng)度和高速緩存適配,加快數(shù)據(jù)存取速度,Mali-T600系列GPU中加載一個(gè)128位的向量和加載一個(gè)單字節(jié)數(shù)據(jù)花費(fèi)的時(shí)間是一樣的。將數(shù)據(jù)以128位進(jìn)行對(duì)齊,能夠最大限度發(fā)揮Mali-T604 GPU的訪存和運(yùn)算效率。
  3.基于Mali-T604 GPU的快速浮點(diǎn)矩陣乘法并行化實(shí)現(xiàn)
  矩陣乘法運(yùn)算在路徑方案求解、線性方程組求解、圖像處理等領(lǐng)域一直有著廣泛應(yīng)用,普通的迭代式串行算法的時(shí)間復(fù)雜度為O(n3),對(duì)于大型的矩陣乘法,特別是浮點(diǎn)類型的矩陣乘法,計(jì)算量非常驚人,傳統(tǒng)的算法基于CPU進(jìn)行設(shè)計(jì),CPU并不能提供大型的并行度和強(qiáng)大的浮點(diǎn)計(jì)算能力,對(duì)于大型浮點(diǎn)類型矩陣乘法的處理力不從心。
  AB兩個(gè)矩陣的乘法的結(jié)果矩陣中的每個(gè)數(shù)據(jù)均依賴于A中的一行和B中的一列的點(diǎn)積結(jié)果,每個(gè)計(jì)算結(jié)果沒有依賴和相關(guān),顯然是高度可數(shù)據(jù)并行的計(jì)算問題,很適合使用GPU做并行處理,使用GPU上的多個(gè)線程可以并行進(jìn)行矩陣A和B中不同行和列的點(diǎn)積。
  實(shí)際進(jìn)行實(shí)驗(yàn)時(shí),以N*N的兩個(gè)浮點(diǎn)矩陣A和B進(jìn)行乘法,得出N*N的浮點(diǎn)結(jié)果矩陣matrixResult,利用Mali GPU進(jìn)行并行化的時(shí)候,總共分配N*N個(gè)線程,以二維方式進(jìn)行排布,標(biāo)識(shí)號(hào)為(i,j)的線程提取出矩陣matrixA的第i行和矩陣matrixB的第j列,利用OpenCL中長(zhǎng)度為128位的float4向量類型快速實(shí)現(xiàn)兩個(gè)一維向量的點(diǎn)積,再將該點(diǎn)積結(jié)果存儲(chǔ)到matrixResult[j]位置。主機(jī)端分配線程的代碼段如下:
  

                               
本文地址:http://m.qingdxww.cn/thread-154726-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • 使用SAM-IoT Wx v2開發(fā)板演示AWS IoT Core應(yīng)用程序
  • 使用Harmony3加速TCP/IP應(yīng)用的開發(fā)培訓(xùn)教程
  • 集成高級(jí)模擬外設(shè)的PIC18F-Q71家族介紹培訓(xùn)教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿(mào)澤電子(Mouser)專區(qū)
關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 色噜噜色偷偷 | 老司机精品视频在线 | 一级做a爰片久久毛片 | 国产精品自在欧美一区 | 国产一级毛片在线 | 91麻豆影视 | 1204国产成人精品视频 | 四虎影视永久在线精品免费播放 | 四虎私人影院 | 四虎成人4hutv影院 | 亚洲国产欧美久久香综合 | 女人18毛片视频一级毛片容 | 中文国产成人精品久久水 | 四虎影库网址 | 亚洲午夜网 | 国产特级淫片免费看 | 97成人在线 | 西西人体www | 色综合天天综合网站中国 | 国产欧美一区二区三区免费 | 日韩成人在线网站 | 中文字幕一区二区三 | 日本一区二区视频 | 欧美日韩乱 | 婷婷色图 | 精品香蕉在线观看免费 | 日本一区二区三区久久久久 | 久久综合给会久久狠狠狠 | 91人成亚洲高清在线观看 | 日韩欧美国产亚洲 | 国产精品一区二区av | 国产精品国产三级国产普通话 | 色综合99 | 国自产拍亚洲免费视频 | 色婷婷导航 | 在线精品日韩一区二区三区 | 国产精品v欧美精品v日韩精品 | 四虎免费永久网站入口 | 欧美亚洲综合另类 | 九九热在线播放 | www.国产.com|