AMD平行運算技術發揮OpenCL最高效能
2013/04/16-毛履兆 美商超微半導體(AMD)除了推出全系列符合OpenCL規範的嵌入式應用產品之外,並與產業合作夥伴協同開發,藉由AMD的Accelerated Parallel Processing(APP,加速平行運算)技術的多個應用程序、程式碼範例與函式庫,能發揮出APU、GPU等異質性多核架構下的平行運算效能,像是在網際網路封包上的深入監測、過濾、轉發的處理,使得新一代網通設備的網路通訊協定軟體化與雲端化。
超微(AMD)嵌入式解決方案部門產品行銷經理Kelly Gillilan指出,當今多核心處理器分為同質性多核(Homogeneous)與異質性多核(Heterogeneous),兩者的差異在於,後者由兩種以上不同性質的核心所組成。以記憶體讀寫與串列運算見長的x86 CPU,與矩陣式浮點/3D圖形運算的GPU核心,所組成的異質性多核心,正是AMD所提出的加速處理器(APU)架構的概念。藉由AMD的加速平行運算(APP)技術,可以OpenCL充分發揮出異質性多核系統的平行運算加速效益,協助提供效能與計算效率。
Kelly Gillilan指出,與過去用於影像處理的OpenGL所不同的,是OpenCL把GPU納入做為運算用途。OpenCL所定義的Platform是指由系統主控加在OpenCL框架下,允許由應用程序共享資源的平台,以及具備多個執行程式內核設備的集合;每一個Compute Device至少1到多個Compute Unit(計算單元),而每一個Computer Unit內部至少有1到多個最基本的處理元素(Processing Element)。
以C語言的陣列乘積的迴路範例為例,傳統寫法可能是:
但導入OpenCL的數據平行化機制下,則要在最前面加入Kernel關鍵字,裡面的寫法變成:
也就是將陣列打散成1~n份,由系統配置n 個內核來做平行運算。OpenCL會判斷每一個分配Kernel彼此之間的前後對映關係;每一個Kernel數據計算完畢並輸出之後,系統會等待其他核心數據輸出並集結後,才會進行下一個步驟。
OpenCL的記憶體模式分為四大塊:Global Memory指每一個Compute Device以及內部Compute Unit能接觸只能讀(read-only)的記憶體區域;Global/Constant Memory DataCache則是給OpenCL函式庫執行使用;每一個Compute Device(指CPU或GPU)都有其專屬的區域性記憶體,每一個Compute Unit內部最基本的Compute Unit,也有自己專屬的私有記憶體區域。
OpenCL程式撰寫模式也分成:1.由主控(Host)所執行的程式碼。2.標頭(Header)。每個要被分配出去平行運算的程式碼片段,需有Header以及宣告來定義。3.執行核心,由OpenCL函式指派且分配到每個核心的部份。
AMD建議業界:1.創造可以在Windows或Linux下執行的開發環境。2.下載最新AMD Catalysts software驅動程式。3.下載AMD APP SDK開發套件2.下載Windows 7以後的版本。4.執行SDK內部的程式範例。5.試著建立與執行一個程式範例。6.開始撰寫程式,修改移植SDK內的程式範例。7.建立自己的程式碼並寫入硬體平台,並透過模擬器或除錯程式環境下來執行。
AMD也設立OpenCL Zone專屬網頁,開發者可以去免費下載新手開始的訓練技術文件、APP SDK開發套件等。還有其他產業合作夥伴,如Sage Electronic Engineering的Sage Probe/EDK硬體除錯套件,Texus Multicore Technologies(TMT)公司協助多核心的程式碼撰寫、演算法移植、除錯的諮詢服務等。
DIGITIMES中文網 原文網址: AMD平行運算技術發揮OpenCL最高效能 http://www.digitimes.com.tw/tw/dt/n/shwnws.asp?cnlid=13&cat=10&id=0000330411_HPE3SXKK2CC5FY0Y8U207#ixzz2QaC52gX5