《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于OpenCL的FPGA設(shè)計優(yōu)化方法研究
基于OpenCL的FPGA設(shè)計優(yōu)化方法研究
來源:電子技術(shù)應(yīng)用2014年第1期
范興山,彭 軍,,黃樂天
電子科技大學(xué),,四川 成都610036
摘要: FPGA因其強(qiáng)大的運(yùn)算能力成為了眾多高性能應(yīng)用的最佳選擇,但其傳統(tǒng)的開發(fā)方法存在門檻高,、周期長等眾多不足,。OpenCL作為跨平臺的開發(fā)語言,為FPGA提供了一種全新的開發(fā)方法,。此方法開發(fā)周期短,、抽象層次高、可移植性強(qiáng),,彌補(bǔ)了傳統(tǒng)開發(fā)方式的不足,。介紹了OpenCL開發(fā)FPGA的相關(guān)優(yōu)化方法,,以矩陣乘法和QR分解為例,深入分析了各種優(yōu)化方法的優(yōu)缺點及適用情況,。
關(guān)鍵詞: FPGA OpenCL 矩陣乘法 QR分解
中圖分類號: TN791
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2014)01-0016-04
Optimization method research of OpenCL-based FPGA design
Fan Xingshan,,Peng Jun,Huang Letian
University of Electronic Science and Technology of China,,Chengdu 610036,,China
Abstract: FPGA becomes the best choice for many high performance applications because of its powerful computing capabilities. But its traditional development methods have many deficiencies,such as high threshold,,long cycle and so on. OpenCL provides a new method for FPGA development,as a cross-platform development language.Due to its short development cycle,high level of abstraction and strong portability, it makes up for the deficiencies of the traditional development methods. This paper presents the development process of FPGA using OpenCL and its optimization methods.Taking matrix multiplication and QR decomposition as example,the advantages and disadvantages of various optimization methods and their application conditions are analyzed thoroughly.
Key words : FPGA,;OpenCL;matrix multiplication,;QR decomposition

    FPGA作為未來數(shù)字電路系統(tǒng)的三大基石之一,,是目前硬件設(shè)計方法的研究熱點。與傳統(tǒng)的電路設(shè)計方法相比,,F(xiàn)PGA具有功能強(qiáng),、周期短、投資小,、開發(fā)工具智能化等特點,。隨著電子工藝的不斷改進(jìn),新一代的FPGA甚至集成了CPU和DSP內(nèi)核,,在一片F(xiàn)PGA上進(jìn)行軟硬件協(xié)同設(shè)計,,為實現(xiàn)片上可編程系統(tǒng)(SoPC)提供了強(qiáng)大的硬件支持,這使得FPGA成為許多高性能應(yīng)用的最佳選擇,。FPGA產(chǎn)品的應(yīng)用領(lǐng)域已經(jīng)從相對較窄的通信基礎(chǔ)設(shè)備領(lǐng)域迅速擴(kuò)張到消費(fèi)電子,、汽車電子、工業(yè)控制,、測試測量等領(lǐng)域。
    一般來講,,要在FPGA設(shè)計中實現(xiàn)較高的性能,,除了要求設(shè)計者精通HDL語言,還需熟知FPGA的內(nèi)部結(jié)構(gòu),,具備足夠的數(shù)字電路知識,。這種方法直接面向硬件,抽象層次較低,,抬高了FPGA開發(fā)的準(zhǔn)入門檻,,還嚴(yán)重降低了FPGA的開發(fā)效率。
    OpenCL作為跨平臺的開發(fā)語言,,為上述問題提供了一套可選擇的解決方案,。OpenCL在傳統(tǒng)的C語言基礎(chǔ)上進(jìn)行了擴(kuò)展,,具備較高的抽象層次和可移植性,開發(fā)者即使不了解硬件電路和設(shè)備的底層細(xì)節(jié),,也可以開發(fā)出高性能的FPGA應(yīng)用程序,。這種開發(fā)方法可以減少硬件開發(fā)時間,把更多的時間用于算法優(yōu)化,,提高FPGA的開發(fā)效率,。
    目前,絕大部分OpenCL開發(fā)都是基于CPU和GPU,。由于FPGA與GPU/CPU結(jié)構(gòu)上的差異,,OpenCL在GPU/CPU上的開發(fā)方法并不完全適用于FPGA,F(xiàn)PGA的OpenCL設(shè)計方法學(xué)尚存在較大的改進(jìn)空間,。針對以上問題,,本文以矩陣乘法QR分解為例,根據(jù)FPGA的特點制定并實現(xiàn)了多種優(yōu)化方案,,分析了各種優(yōu)化方案的優(yōu)缺點及適用情況,,為后續(xù)FPGA的OpenCL開發(fā)提供參考。
1 相關(guān)工作
    自2008年蘋果開發(fā)者大會(WWDC)提出OpenCL以來,,已有不少的機(jī)構(gòu)和學(xué)者進(jìn)行OpenCL的開發(fā)研究,,并取得了顯著的成果,目前大部分的OpenCL研究都是基于GPU平臺,。參考文獻(xiàn)[1]就矩陣乘法分別在多核CPU,、AMD GPU、NVIDIA GPU上進(jìn)行了實現(xiàn)和優(yōu)化,,并對比了各平臺的性能,。
    2013年,Altera和Xilinx兩大FPGA主流廠商相繼推出了針對FPGA的OpenCL開發(fā)套件,,但目前相關(guān)研究成果較少,,只能在IEEE平臺上搜索到寥寥幾篇論文。參考文獻(xiàn)[2-4]中介紹了在FPGA上進(jìn)行OpenCL開發(fā)的原理及相關(guān)工具,。參考文獻(xiàn)[5]使用OpenCL在Altera的FPGA上實現(xiàn)了一個文檔篩選算法,,與CPU、GPU相比分別取得了5.5,、5.25的加速比,,但沒有針對FPGA做深入的優(yōu)化工作,也未詳細(xì)分析如何提升FPGA運(yùn)算性能,。參考文獻(xiàn)[6]分別在CPU,、GPU和FPGA 3個平臺上實現(xiàn)了不規(guī)則圖像和視頻的壓縮算法,F(xiàn)PGA平臺與多核CPU,、GPU相比分別達(dá)到了3,、114的加速比,。作者只是簡單地將GPU上的應(yīng)用移植到了FPGA上,而未做進(jìn)一步的優(yōu)化,。參考文獻(xiàn)[7]對多核CPU,、GPU、FPGA平臺在性能,、設(shè)計理論,、平臺體系結(jié)構(gòu)等方面進(jìn)行了對比,分別用CUDA,、OpenCL,、VHDL 3種開發(fā)語言在多種平臺下實現(xiàn)了Quantum Monte Carto程序。通過對比發(fā)現(xiàn),,OpenCL可以很方便地在多核CPU,、GPU和FPGA之間進(jìn)行移植。
    目前介紹在FPGA上進(jìn)行OpenCL開發(fā)的相關(guān)文獻(xiàn)還非常稀少,,大多數(shù)文獻(xiàn)都只是針對FPGA的OpenCL開發(fā)進(jìn)行理論介紹,,即使有少數(shù)幾篇進(jìn)行了實際應(yīng)用開發(fā),也僅僅停留在實現(xiàn)階段,,并沒有針對FPGA的硬件結(jié)構(gòu)詳細(xì)分析其OpenCL優(yōu)化方法,,這正是本文的研究重點。
2 算法研究
    目前基于FPGA的OpenCL開發(fā)都是移植了GPU上的應(yīng)用,,例如圖像處理,、視頻壓縮/解壓縮等。然而通信,、雷達(dá),、汽車電子、工業(yè)控制才是FPGA的傳統(tǒng)領(lǐng)域,,尤其在通信領(lǐng)域中FPGA應(yīng)用更為廣泛,。但當(dāng)前還沒有相關(guān)文獻(xiàn)把OpenCL開發(fā)方法用于通信領(lǐng)域。
    矩陣運(yùn)算是通信領(lǐng)域中的基礎(chǔ)運(yùn)算,,尤其是矩陣乘法和QR分解,,是工程應(yīng)用中最常見的矩陣運(yùn)算,在信號檢測與估計,、數(shù)字信號處理等領(lǐng)域中應(yīng)用廣泛。因此,,本文以矩陣乘法和QR分解為例,,對FPGA的OpenCL實現(xiàn)及優(yōu)化進(jìn)行相關(guān)研究。
    

    initial Q=E, R=A
    barrier
    for(int j=0; j<=Width-2; j++)
    {
        initial H
        barrier
        calculate the
        generate H
        barrier
        compute Q = Q *
        barrier
        compute R = H * R
        barrier
    }
    由于Householder變換法的特性,,本文只將部分優(yōu)化手段應(yīng)用于QR分解,。主要探索item復(fù)制和向量化兩種方法的性能,。本例中的QR分解內(nèi)部具有較多的數(shù)據(jù)同步點,且item之間的數(shù)據(jù)依賴性非常強(qiáng),,即邏輯控制較多,,因而向量化和item復(fù)制并不是QR分解的理想優(yōu)化手段。
4 結(jié)果分析
    測試數(shù)據(jù)采用隨機(jī)函數(shù)生成,,并將FPGA的運(yùn)算結(jié)果與C函數(shù)的運(yùn)算結(jié)果相比較,,判斷結(jié)果是否正確。本文采用多種優(yōu)化方法實現(xiàn)矩陣乘法,,實驗結(jié)果如表1所示,。

    對于數(shù)據(jù)存取優(yōu)化(如表1所示),通過設(shè)置合適的workgroup大小,,減少item重復(fù)存取數(shù)據(jù)的次數(shù),,即可有效地提高性能。
    對于循環(huán)展開優(yōu)化,,運(yùn)行時間與循環(huán)展開次數(shù)是呈反比的,。循環(huán)展開實質(zhì)就是采用空間換取時間,展開次數(shù)越多,,邏輯面積越大,,執(zhí)行時間則越短。
    對于向量化1,、2,、4、8次,,可以看出其運(yùn)行時間基本是與向量化次數(shù)呈反比的,。向量化復(fù)制了kernel的運(yùn)算單元,使得item可以同時存取并處理多個數(shù)據(jù),,提高了kernel性能,。然而,向量化16次的性能更差,,這主要是受到了硬件資源限制,。DDR帶寬和FPGA邏輯資源都已超出DE4的最高峰值,造成了性能的急劇下降,。
    隨著item復(fù)制次數(shù)的增加,,性能有所提高,這也是使用空間換取時間的方法,。但是其性能并不像向量化那樣呈線性增長,,這是因為item復(fù)制是將整個kernel功能單元進(jìn)行復(fù)制,除了需要較多的邏輯資源外,全局帶寬的需求也成倍增長,,導(dǎo)致全局帶寬超過DDR的最大帶寬,,使得性能增長曲線是非線性的。
    組合優(yōu)化同時使用向量化和item復(fù)制,,可最大限度地發(fā)揮這兩種方法的優(yōu)點,,實現(xiàn)性能提升,但效果還不夠顯著,,這也是受到了DDR帶寬的限制,。
    矩陣乘法是典型的大數(shù)據(jù)運(yùn)算,有著大量的數(shù)據(jù)存取操作,,內(nèi)部控制邏輯較少,,這類運(yùn)算需要較大的全局帶寬和較強(qiáng)的浮點運(yùn)算能力。從表1中可以看到性能提升的瓶頸在于全局帶寬,,如何解決這一問題是優(yōu)化的重點,。可以使用以下兩種方法降低kernel所需的全局帶寬:(1)進(jìn)行數(shù)據(jù)存取優(yōu)化,,減少kernel的重復(fù)存取操作,,減少單個item實際使用的帶寬;(2)向量化,,提高全局帶寬的有效利用率,。從表1中也可以看出,這兩種方法確實取得了非常好的效果,。另外,,還可以通過提升硬件的全局帶寬來滿足kernel對帶寬的需求。
    在QR分解中,,主要采用了向量化和item復(fù)制兩種方法,,如表2所示。

    由表2可見,,不管是向量化還是item復(fù)制,,性能均沒有得到有效的提升,甚至有一定的惡化,,其中item復(fù)制帶來的性能惡化更嚴(yán)重,,這主要是因為QR分解的邏輯復(fù)雜度較大。在QR分解中,,數(shù)據(jù)量并不大,,所需的全局帶寬較小,除了向量化8次外,,其余的優(yōu)化所需的全局帶寬均沒有超過DE4的限制,。但是其中的運(yùn)算過程較為復(fù)雜,可以看到其邏輯復(fù)雜度為5.5左右,限制了kernel性能的提高,。
    對于此類邏輯復(fù)雜度較大的應(yīng)用,上述幾種優(yōu)化手段均不能得到非常好的效果,。此時應(yīng)以算法優(yōu)化為主,,以降低kernel內(nèi)部的邏輯復(fù)雜度。
    本文以矩陣乘法和QR分解為例,,在FPGA上分別進(jìn)行了實現(xiàn)和優(yōu)化,,比較分析了各種優(yōu)化方法的優(yōu)缺點及適用范圍。目前,,F(xiàn)PGA的OpenCL開發(fā)剛剛興起,,還有諸多不足,從實驗中也可以看出,,許多優(yōu)化方法都受到了FPGA結(jié)構(gòu),、算法并行性等多方面的限制,還需要從設(shè)計方法,、FPGA結(jié)構(gòu)優(yōu)化,、算法優(yōu)化等多個方面進(jìn)一步探討如何更合理地運(yùn)用OpenCL開發(fā)FPGA。這有賴于FPGA廠商進(jìn)一步完善工具和開發(fā)流程,,也有賴于廣大科研工作者,、應(yīng)用工程師的配合和努力。
參考文獻(xiàn)
[1] SEO S,,JO G,,LEE J.Performance tuning of matrix multiplication in OpenCL on different GPUs and CPUs[C].High Performance Computing,Networking,,Storage and Analysis,,2012:396-405.
[2] CZAJKOWSKI T S.Form OpenCL to high-performance hardware on FPGAs[C].Field Programmable Logic and Applications(FPL),2012 22nd International Conference,,2012:531-534.
[3] Ma Sen,,Huang Miaoqing,ANDREWS D.Developing application-specific multiprocessor platforms on FPGAs[C].Reconfigurable Computing and FPGAs(ReConFig),,2012 International Conference,,2012:1-6.
[4] ECONOMAKOS G.ESL as a Gateway from OpenCL to FPGAs:basic ideas and methodology evaluation[C]. Informatics(PCI),2012 16th Panhellenic Conference,,2012:80-85.
[5] CHEN D,,SINGH D.Invited paper:using OpenCL to evaluate the efficiency of CPUS, GPUS and FPGAS for information filtering[C].Field Programmable Logic and Applications(FPL),2012 22nd International Conference,,2012:5-12.
[6] CHEN D,,SINGH D.Fractal video compression in OpenCL:an evaluation of CPUs,GPUs,and FPGAs as acceleration platforms[C].Design Automation Conference(ASP-DAC),,2013 18th Asia and South Pacific,,2013:297-304.
[7] WEBER R.Comparing hardware accelerators in scientific applications:a case study[J].Parallel and Distributed Systems,IEEE Transactions,,2011,,22(1):58-68.
[8] 張賢達(dá).矩陣分析與應(yīng)用[M].北京:清華大學(xué)出版社,2004.
[9] 李剛強(qiáng),,田斌,,易克初.FPGA設(shè)計中關(guān)鍵問題的研究[J].電子技術(shù)應(yīng)用,2003,,29(6):68-71.
[10] 張國禮,,王建業(yè),肖宇.浮點矩陣相乘IP核并行改進(jìn)的設(shè)計與實現(xiàn)[J].電子技術(shù)應(yīng)用,,2012,,38(2):43-46.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。