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

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

    由表2可見(jiàn),不管是向量化還是item復(fù)制,性能均沒(méi)有得到有效的提升,甚至有一定的惡化,其中item復(fù)制帶來(lái)的性能惡化更嚴(yán)重,這主要是因?yàn)镼R分解的邏輯復(fù)雜度較大。在QR分解中,數(shù)據(jù)量并不大,所需的全局帶寬較小,除了向量化8次外,其余的優(yōu)化所需的全局帶寬均沒(méi)有超過(guò)DE4的限制。但是其中的運(yùn)算過(guò)程較為復(fù)雜,可以看到其邏輯復(fù)雜度為5.5左右,限制了kernel性能的提高。
    對(duì)于此類邏輯復(fù)雜度較大的應(yīng)用,上述幾種優(yōu)化手段均不能得到非常好的效果。此時(shí)應(yīng)以算法優(yōu)化為主,以降低kernel內(nèi)部的邏輯復(fù)雜度。
    本文以矩陣乘法和QR分解為例,在FPGA上分別進(jìn)行了實(shí)現(xiàn)和優(yōu)化,比較分析了各種優(yōu)化方法的優(yōu)缺點(diǎn)及適用范圍。目前,F(xiàn)PGA的OpenCL開(kāi)發(fā)剛剛興起,還有諸多不足,從實(shí)驗(yàn)中也可以看出,許多優(yōu)化方法都受到了FPGA結(jié)構(gòu)、算法并行性等多方面的限制,還需要從設(shè)計(jì)方法、FPGA結(jié)構(gòu)優(yōu)化、算法優(yōu)化等多個(gè)方面進(jìn)一步探討如何更合理地運(yùn)用OpenCL開(kāi)發(fā)FPGA。這有賴于FPGA廠商進(jìn)一步完善工具和開(kāi)發(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è)計(jì)中關(guān)鍵問(wèn)題的研究[J].電子技術(shù)應(yīng)用,2003,29(6):68-71.
[10] 張國(guó)禮,王建業(yè),肖宇.浮點(diǎn)矩陣相乘IP核并行改進(jìn)的設(shè)計(jì)與實(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)載。