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

實戰技巧,Mali GPU編程特性及二維浮點矩陣運算并行優化詳解

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


  圖1 Mali-T604基本硬件框圖
  


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


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


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


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

                               
本文地址:http://www.qingdxww.cn/thread-154726-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 基于CEC1712實現的處理器SPI FLASH固件安全彈性方案培訓教程
  • 5分鐘詳解定時器/計數器E和波形擴展!
  • PIC18-Q71系列MCU概述
  • 了解一下Microchip強大的PIC18-Q24 MCU系列
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线视频一区二区三区在线播放 | 2级毛片 | 欧美日韩天堂 | 亚洲国产三级在线观看 | 午夜在线播放免费人成无 | 夜夜天天干 | 91在线 在线播放 | 国产深夜福利19禁在线播放 | 91天堂一区二区 | 成年女人aaaaa毛片 | 国产精品日本 | 蜜臀91精品国产高清在线观看 | 国内精品免费一区二区观看 | 思思91精品国产综合在线 | 久久精品免费一区二区视 | 日本韩国一级片 | 无人视频在线观看完整版免费下载 | 亚洲国产日韩a在线亚洲 | 四虎免费最新在线永久 | 亚洲深夜视频 | 99热这里只有精品久久免费 | 午夜精品久久久久久91 | 九九99视频在线观看视频观看 | 久热中文字幕在线精品首页 | 4虎最新| 四虎综合九九色九九综合色 | 玖玖色在线| 国产福利片在线观看 | 狠狠色丁香久久婷婷综合五月 | 国产精品久久久久久久专区 | 日本 视频| 久操久热 | 女人18毛片久久 | 亚洲天堂影视 | 日日日夜夜夜夜 | 九九热精品免费视频 | 青青草国产精品人人爱99 | 日本一区二区在线不卡 | 欧美xxxx色视频在线观看 | 美日韩精品 | 羞羞视频在线观看网站 |