亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        在軌高效目標檢測加速技術(shù)

        2022-12-26 01:16:48呼延烺蔣冬梅張艷寧魏佳圓劉娟妮
        宇航學報 2022年11期
        關(guān)鍵詞:引擎

        呼延烺,李 映,蔣冬梅,張艷寧,周 詮,魏佳圓,劉娟妮

        (1.西北工業(yè)大學計算機學院,西安 710129;2.空間微波技術(shù)國家級重點實驗室,西安 710100)

        0 引 言

        近年來人工智能技術(shù),尤其是深度學習技術(shù)取得了突破性進展,在多個任務上均取得了最優(yōu)性能。相比于傳統(tǒng)技術(shù),深度學習技術(shù)在性能上有巨大優(yōu)勢,眾多學者嘗試將該技術(shù)應用到目標檢測[1]和識別、異常檢測[2]、變化檢測[3]、對地觀測[4]等空間任務中。相關(guān)研究成果表明深度學習技術(shù)性能優(yōu)異,在空間任務中具有廣闊的應用前景。

        遙感圖像目標檢測是遙感圖像處理的基本任務之一,也是遙感圖像分析、圖像理解和場景理解等高級應用的基礎(chǔ)。但受空間環(huán)境限制,星上計算能力和存儲能力與地面相差甚遠,而且深度學習算法是計算密集型和存儲密集型算法,其優(yōu)異的性能是以大量計算資源和存儲資源消耗為代價。在星上部署基于深度學習的目標檢測算法比地面上更具有挑戰(zhàn)性,因此,目標檢測算法在軌加速技術(shù)是一個重要研究領(lǐng)域,同時也是研究熱點和難點。

        在星上實現(xiàn)深度學習算法加速主要涉及加速器硬件平臺、算法模型以及計算引擎三個方面。

        加速器硬件平臺主要有圖形處理器(GPU)、中央處理器(CPU)以及現(xiàn)場可編程門陣列(FPGA)。當前地面深度學習算法加速以GPU為主,盡管GPU計算性能強勁,但其功耗動輒百瓦以上,能效比較低;CPU能效相對GPU較高,但其計算能力有限,因此GPU及CPU均無法滿足在軌應用需求。

        隨著深度學習算法在地面上不斷深入應用,諸如Nvidia Jetson系列GPU及Myriad 2視覺處理器(VPU)等高能效比加速器也隨之產(chǎn)生。此類加速器配套和生態(tài)也較為成熟,可很好應用于地面移動場景。但此類加速器并非針對空間環(huán)境設(shè)計,在空間應用時,會因空間環(huán)境的單粒子效應造成加速器發(fā)生單粒子翻轉(zhuǎn)[5],導致算法性能急劇下降甚至造成加速器永久損壞。因此,需要選用適合空間環(huán)境的硬件平臺來實現(xiàn)深度學習算法的加速。

        FPGA在傳統(tǒng)星上處理中應用廣泛,具有應對空間環(huán)境的成熟方法。此外,F(xiàn)PGA具有可編程特點,在模型和算法開發(fā)過程中可以不斷改進和完善,甚至可以實現(xiàn)在軌重構(gòu)。文獻[6-7]表明ESA Φ-Sat-1衛(wèi)星采用Myriad 2 VPU實現(xiàn)在軌智能云檢測,但由于其可靠性問題,在后續(xù)任務中已經(jīng)采用FPGA作為在軌加速器件。鑒于FPGA的高可靠性、在軌重構(gòu)能力以及強大的處理能力,將FPGA作為星載深度學習算法加速硬件平臺是一個可行的方案。

        在加速器所實現(xiàn)的算法模型方面,學者們對此進行了廣泛研究[8-10],但基于FPGA的加速器設(shè)計與最新算法模型之間仍有較大差距[11]。有一部分FPGA加速器是針對AlexNet[12],VGG16[13],ResNet[14]等模型所設(shè)計,此類模型參數(shù)量大,消耗大量計算資源和存儲資源,難以在星上部署。

        有一部分FPGA加速器是針對輕量化模型所設(shè)計[15-17],此類模型參數(shù)量少,消耗的計算量也小。此類加速器所消耗的硬件資源和功耗相對通用大模型具有較大優(yōu)勢,適合在星上進行部署。

        針對目標檢測算法在軌應用需求,在前期工作中將輕量化思想引入遙感圖像目標檢測,提出了一種輕量化遙感圖像目標檢測算法MSF-SNET[18]。該算法參數(shù)量僅有1.54 M,計算量僅有0.21 GFLOPs(每秒千兆次浮點運算),適合在星上部署。針對特定算法設(shè)計特定加速器,可以有效提高資源利用率,是未來FPGA加速器發(fā)展的一個重要方向。

        在加速器設(shè)計與實現(xiàn)方面,根據(jù)加速器的結(jié)構(gòu)大致可以分為兩大類,一類是流水線結(jié)構(gòu)[16],另外一類是統(tǒng)一處理結(jié)構(gòu)[15,19]。

        流水線結(jié)構(gòu)的優(yōu)點是流水線上的每一個卷積層并行處理,有利于提高加速器性能。該結(jié)構(gòu)的缺點是其硬件開銷較大,每一個卷積層都需要獨立的處理單元,每一個處理單元也只能處理與其對應的卷積層,從而造成了硬件資源開銷大,利用率低。因此,流水線結(jié)構(gòu)只適合用來實現(xiàn)層數(shù)較少且結(jié)構(gòu)單一的卷積網(wǎng)絡(luò)加速。

        統(tǒng)一處理結(jié)構(gòu)的優(yōu)點是能夠大幅降低硬件資源消耗,能夠在有限的硬件資源上實現(xiàn)任意層數(shù)的CNN加速,硬件資源利用率較高。該結(jié)構(gòu)的缺點是需要不斷從外部DDR中讀取輸入特征圖到片上緩存,因而加速器需要有足夠的外部存儲器帶寬,且增加了數(shù)據(jù)從外部存儲器進入加速器的時延以及不斷讀寫外部緩存造成功耗的增加。

        在空間環(huán)境中能夠提供的硬件資源有限,且MSF-SNET輕量化算法具有分支網(wǎng)絡(luò),在星上采用統(tǒng)一處理結(jié)構(gòu)具有可行性。

        無論流水線結(jié)構(gòu)還是統(tǒng)一處理結(jié)構(gòu),都需要計算引擎來完成CNN中的運算。計算引擎按照其實現(xiàn)方式可以分為GEMM[19](General matrix multiplic-ations),WT[20](Winograd transform),FFT[21](Fast Fourier transform)以及乘累加樹[22-23]。

        GEMM的基本思想是將3維卷積轉(zhuǎn)換成兩個矩陣相乘。其優(yōu)點是通用性強,CPU、GPU以及Intel的OpenCL均采用該方法實現(xiàn)加速,缺點是矩陣相乘會在輸入特征圖中引入冗余數(shù)據(jù),從而造成硬件資源利用率降低,計算效率下降[24]。

        WT方法同樣是將卷積轉(zhuǎn)換為矩陣相乘進行運算。其優(yōu)點是可以有效減少計算量,缺點是需要設(shè)計不同的變換矩陣來應對不同大小的卷積核,在FPGA中實現(xiàn)矩陣乘法需要消耗大量的存儲資源。

        FFT方法是將卷積從空域轉(zhuǎn)換到頻域進行計算,文獻[25]指出FFT方法在卷積核尺寸大于5時計算效率較高,在卷積核尺寸較小時并無優(yōu)勢。

        乘累加樹在FPGA加速器中使用較多,該方法通過給卷積核的每一元素設(shè)計一個乘法器,然后使用累加樹將乘積累加起來從而實現(xiàn)卷積運算,其優(yōu)點是計算效率高且實現(xiàn)方便簡單,缺點是針對不同的卷積算子需要設(shè)計不同的計算引擎。

        雖然文獻中對基于FPGA的CNN網(wǎng)絡(luò)加速技術(shù)進行了廣泛研究,但在輕量化目標檢測加速中仍然存在挑戰(zhàn)。主要體現(xiàn)在輕量化網(wǎng)絡(luò)中往往同時涉及到多種卷積算子,例如ShuffleNet V2以及Mobi-leNetsV2中均涉及到普通3×3卷積和深度可分離卷積,MSF-SNET涉及到了普通3×3卷積、3×3空洞深度可分離卷積和1×1卷積三種卷積算子。目前主流做法是通過GEMM方法或者在加速器中設(shè)計多種計算引擎來實現(xiàn)CNN中多種卷積算子的計算。文獻[15]針對MobileNets中涉及到的普通3×3卷積和深度可分離卷積分別設(shè)計了兩種不同計算引擎,在CNN中卷積逐層計算,不同計算引擎難以同時利用從而造成了硬件資源利用低,計算效率下降。

        本文針對輕量化目標檢測算法MSF-SNET在軌部署需求,提出了一種在軌目標檢測算法加速框架以及一種能夠兼容三種卷積算子的計算引擎,解決了目前輕量化算法FPGA加速中面臨的硬件資源利用低和計算效率低的問題,實現(xiàn)了輕量化目標檢測算法MSF-SNET在軌加速。

        1 算法優(yōu)化

        1.1 MSF-SNET算法時空復雜度分析

        MSF-SNET算法的骨干網(wǎng)主要由如圖1(a)所示的BU(Basic building unit)和圖1(b)所示的SDU(Spatial down sampling(2x) unit)組成。涉及到3×3卷積、1×1卷積及3×3空洞深度可分離卷積。

        圖1 骨干網(wǎng)組成模塊Fig.1 Building blocks of MSF-SNET

        當輸入特征圖X的通道數(shù)為C,高和寬分別為H和W,采用輸入通道數(shù)為C、輸出通道數(shù)為T的3×3卷積核K進行卷積時,輸出特征圖Y為式(1)所示,其尺寸為T×H×W。

        (1)

        卷積運算占用的存儲空間Msc和消耗的計算量Jsc分別為式(2)和式(3)所示。

        Msc=T×C×D2×Nb

        (2)

        Jsc=(2×C×T×D2)×H×W

        (3)

        式中:D表示標準卷積核尺寸;Nb表示每個參數(shù)量化的比特數(shù)。

        當采用3×3空洞深度可分離卷積算子對輸入特征圖X進行卷積時其輸出特征圖Y為式(4)所示。

        (4)

        其占用的存儲空間Mdsc和消耗的計算量Jdsc分別表示為式(5)和式(6)。

        Mdsc=C×D2×Nb

        (5)

        Jdsc=(C×D2×H×W)/2

        (6)

        當采用1×1卷積對輸入特征圖X進行卷積時,其輸出特征圖Y為式(7)所示。

        (7)

        其占用的存儲空間MPSC和消耗的計算量Jpsc分別表示為式(8)和式(9)。

        Mpsc=C×D2×Nb

        (8)

        Jpsc=(C×D2×H×W)/2

        (9)

        1.2 卷積并行化

        為了高效完成MSF-SNET算法中多種卷積算子運算,需要將算法并行化。由于卷積核之間相互獨立,卷積核各個通道之間相互獨立,通道內(nèi)各個元素之間的運算相互獨立,因此可以在通道和卷積核兩個維度將其展開,并在通道內(nèi)采用乘累加樹的思想實現(xiàn)算法的并行化。

        若通道并行度為C,在設(shè)計加速引擎時,采用C個并行計算單元實現(xiàn)并行運算。如果卷積核并行度為N,則采用N個加速引擎實現(xiàn)卷積核并行運算。

        在卷積運算中輸入特征圖是一個3維張量,其通道數(shù)為Nin,寬和高分別為W和H,卷積核是一個4維張量,其中卷積核數(shù)目為Nout,其通道數(shù)、寬和高與輸入特征圖對應參數(shù)相同。由于FPGA片上資源有限,并不能夠?qū)⑺惴ㄍ耆⑿谢?,因此需要在通道和卷積核兩個維度上進行切片。并行化后第q層卷積運算所消耗的時間如式(10)所示,所有卷積層消耗時間如式(11)所示。

        (10)

        (11)

        式中:Tr表示輸入特征圖寬和高的分割因子;Nreused是行數(shù)據(jù)復用因子Nreused_r和列復用因子Nreused_c之積。

        從式(10)和式(11)可以看出算法所消耗的時間與并行度C和N成反比,受片上計算資源限制,C和N需要受式(12)約束。

        N×C×NC_DSP≤αNDSP

        (12)

        式中:NC_DSP為單個通道卷積計算所消耗的計算資源數(shù)量;NDSP為片上計算資源總數(shù);α為經(jīng)驗因子,一般情況下該值取0.7為宜。

        1.3 批歸一化層優(yōu)化

        為了提高計算引擎效率,減少硬件資源消耗,將批歸一化運算融合到卷積層中。在訓練過程中,批歸一化可以用式(13)和式(14)表示,其中μ和σ2為均值和方差。

        (13)

        (14)

        (15)

        (16)

        Y=X*W+B

        (17)

        Y=X*W′+B′

        (18)

        在訓練結(jié)束后超參數(shù)γ和β以及統(tǒng)計參數(shù)均值和方差已經(jīng)確定,模型中的權(quán)重和偏置可以分別表示為式(15)和式(16)。因此,式(17)所示的卷積運算可以融合為式(18)所示的運算。在加速器中無需再單獨設(shè)計批歸一化處理單元。

        2 MSF-SNET算法FPGA加速器

        2.1 加速器框架

        加速總體框架如圖2所示,主要包含控制模塊、緩存模塊和計算模塊三大部分。緩存模塊用于臨時存儲模型權(quán)重、輸入特征圖和輸出特征圖。片上緩存容量有限,無法將模型所有參數(shù)及輸入特征圖緩存在片上RAM中,需要將模型參數(shù)和輸入特征圖分割成運算數(shù)據(jù)單元逐次加載。

        圖2 MSF-SNET算法加速總體框架Fig.2 The overall structure of accelerator for MSF-SNET algorithm

        在運算時通過數(shù)據(jù)總線將輸入特征圖和模型權(quán)重從片上緩存器加載到計算單元。在運算結(jié)束后通過數(shù)據(jù)總線將計算結(jié)果寫入片上緩存。

        計算模塊負責完成MSF-SNET算法中涉及到的所有運算。計算模塊由多個功能相同的計算引擎組成,完成卷積核維度的并行計算,其數(shù)量為N,每個計算引擎中含有16 bit定點運算資源,完成基本的乘累加及比較運算。各個計算引擎之間通過數(shù)據(jù)總線和控制總線相連。根據(jù)FPGA可提供的計算資源靈活增加或者減少計算引擎數(shù)量,各個計算引擎并行完成所分配的計算任務。

        由1.2節(jié)分析可知,計算單元的通道并行度為C,卷積核并行度為N,每個時鐘周期加速器可以處理N個卷積核的C個通道,因此在加速器啟動后將N個卷積核的C個參數(shù)從外部DDR3加載到權(quán)值緩存中,然后將切片后的輸入特征圖從外部DDR3中加載到輸入特征緩存。當輸入特征圖和權(quán)值參數(shù)準備就緒之后,將二者同時加載到計算單元完成相應運算。以此方式完成卷積層中卷積核所有通道運算,并通過輸入特征緩存將計算結(jié)果寫入外部DDR3。

        2.2 并行計算引擎

        深度卷積網(wǎng)絡(luò)模型參數(shù)通常采用32 bit全精度浮點數(shù)表示,但FPGA并不擅長處理浮點型數(shù)據(jù)。為了在FPGA上實現(xiàn)該算法,在通道間采用動態(tài)量化策略,在通道內(nèi)采用靜態(tài)量化策略將32 bit全精度浮點數(shù)模型參數(shù)轉(zhuǎn)換為16比特定點模型參數(shù)。

        計算引擎需要完成MSF-SNET目標檢測算法中所包含的1×1卷積、3×3卷積、3×3可分離空洞卷積、ReLU激活、maxpool等功能。為了實現(xiàn)不同卷積算子,文獻[16]針對不同算子設(shè)計了不同計算單元,由于同一時刻并非所有算子都參與運算,這種設(shè)計方法大大降低了計算資源利用率。為了提高計算引擎的效率及利用率,本文提出了一種3維立體計算引擎,實現(xiàn)了在同一計算單元中兼容1×1卷積、3×3卷積及3×3可分離空洞卷積三種卷積算子,有效提高了資源利用率。

        如圖3所示,3維立體計算引擎由多個計算單元堆疊形成,其數(shù)量為C。每個計算單元均能夠獨立完成三種卷積算子運算、激活及池化運算。計算引擎并行完成C個通道的運算,這種設(shè)計具有很高的靈活性,可以根據(jù)FPGA片上資源以及加速器的性能需求來選擇合適的計算單元數(shù)量。每個計算單元中包含9個乘法器、9個加法器、9個寄存器、后處理單元以及ReLU模塊。

        圖3 三維立體計算引擎Fig.3 3D computing engine

        對于標準3×3卷積,每個通道需要進行9次乘法運算并將其結(jié)果累加。輸入特征圖緩存器輸入一個通道的數(shù)據(jù),權(quán)重緩存器中輸入卷積核的一個通道的參數(shù)。采用9個乘法器完成卷積中的乘法運算,之后通過選擇器將9個加法器組成一個加法樹,以流水線方式實現(xiàn)乘累加。卷積結(jié)果寫入寄存器R9中,多個通道的卷積結(jié)果通過加法器累加到一起。再將同一計算引擎中的多個計算單元的計算結(jié)果累加即實現(xiàn)了一個卷積核的一次卷積運算。

        3×3可分離空洞卷積與標準3×3卷積的計算過程相同,但輸入特征圖和卷積核不同。標準卷積一次輸入3×3的特征圖,空洞卷積則需要輸入5×5的特征圖;標準卷積每個卷積核有多個通道,而空洞卷積每個卷積核僅有一個通道。由于二者計算過程一致,在輸入特征圖進入緩存時,將空洞去除,從而使得同一計算單元能夠計算空洞卷積。

        對于1×1卷積,每個通道僅需要一次乘法運算,然后將多個通道的乘積累加。為了充分利用計算單元中的運算資源,通過選擇器將計算單元中的9個乘法器和9個加法器配置為可以獨立運算的卷積運算單元。此時,輸入特征圖緩存器輸入一個通道的數(shù)據(jù),權(quán)重緩存器輸入9個卷積核,在一個計算單元中可并行完成9個卷積核運算。

        圖4 最大池化單元Fig.4 Maxpooling unit

        MSF-SNET算法在第一層卷積之后需要進行一次3×3最大池化。通常卷積計算采用逐行滑動方法,這種卷積計算方法需要采用line buffer組成池化窗口[15]。為了減少池化所消耗的存儲資源,本文利用卷積計算順序形成池化窗口。卷積運算順序按照局部Z形滑動,即在卷積計算過程中先水平滑動3次,然后垂直滑動1次,以此類推,完成9個卷積窗口計算后便會形成一個3×3的池化窗口。從而避免因使用line buffer造成的資源消耗。

        最大池化單元設(shè)計如圖4所示。池化運算單元輸入為3×3卷積運算結(jié)果。兩個控制信號分別為是否是池化層及是否需要進行激活。寄存器R用來存儲當前最大值,如果是池化層,則將寄存器中存儲的最大值與當前卷積結(jié)果進行比較,并更新寄存器。當9個卷積窗口均完成之后得到最大值。

        2.3 數(shù)據(jù)組織與緩存設(shè)計

        為降低頻繁訪問外部緩存帶來的數(shù)據(jù)傳輸時延和功耗,需要設(shè)置片內(nèi)特征圖緩存和模型參數(shù)緩存。

        模型參數(shù)緩存設(shè)計如圖5所示,加速器中N個計算引擎同步并行運行,針對各計算引擎設(shè)計獨立緩存器WB(Weight Buffer),從而實現(xiàn)模型參數(shù)到計算引擎的同步加載。每個計算引擎中又包含了C個獨立計算單元,每個計算單元可獨立完成一次3×3卷積或9次1×1卷積。在WB中設(shè)置C個獨立BR(Block RAM),分別用來緩存每個計算單元所需要的參數(shù)。BR位寬為9個16位字(144 bit),深度為2×Mi,其中Mi為單次加載的輸入特征圖的通道數(shù)。每個地址存儲1個3×3×Mi卷積核中一個通道的參數(shù)或者9個1×1卷積核中一個通道的參數(shù)。

        計算3×3卷積時每個WB中緩存1個卷積核。卷積核按照通道均勻存儲在不同BR中,每個地址存儲一個通道。例如,在C=16,Mi=32時,對于3×3×512的卷積核,第0至31通道按照順序緩存在BR(0)中,第32至第63通道緩存在BR(1)中,以此類推,第480通道至511通道緩存在BR(15)中。每個時鐘周期每個計算單元從其對應的BR中加載一個卷積核的一個通道進行運算。Mi個時鐘周期便可以完成一個卷積核的運算。

        圖5 模型參數(shù)緩存設(shè)計Fig.5 Weight buffer organization

        1×1卷積核在緩存中的組織如圖6所示。每個WB中緩存9個卷積核,9個卷積核并列存儲,同樣按照通道均勻存儲在不同BR中,每個地址并列存儲9個卷積核的一個通道。例如,9個1×1×512的卷積核的第0通道并列存儲在BR(0)中的0地址上。其中第0比特至第15比特為Filter0第一通道的參數(shù),第16比特至第31比特為Filter1第一通道的參數(shù),以此類推,在第128比特至第143比特為Filter8第一通道參數(shù)。每個時鐘周期每個計算單元可以從其對應BR中加載9個卷積核的一個通道進行運算。Mi個時鐘周期便可以完成9個卷積核運算。

        圖6 1×1卷積核參數(shù)緩存設(shè)計Fig.6 1×1 convolution weight buffer organization

        受FPGA內(nèi)部BRAM資源限制,無法將特征圖中所有數(shù)據(jù)加載到片上緩存,因此需要將特征圖進行分塊后逐塊加載。為了適配算法中3×3空洞卷積,特征圖按照5×5×Mi大小的數(shù)據(jù)塊進行加載,其中Mi為所加載的輸入特征圖的通道數(shù)。

        如圖7所示,加速器中共設(shè)置4個數(shù)據(jù)緩沖器DB(Data Buffer),每個DB緩存容量與特征圖數(shù)據(jù)塊大小一致。將DB0和DB1組成一個乒乓緩沖器,DB2和DB3組成另外一個乒乓緩沖器,從而使得加速器能夠連續(xù)將數(shù)據(jù)送入計算引擎進行計算。在使用DB0中的數(shù)據(jù)時將第2塊數(shù)據(jù)預加載到DB1中。在使用DB1中的數(shù)據(jù)時將第3塊數(shù)據(jù)加載到DB0中,以此類推循環(huán)使用兩個數(shù)據(jù)緩存器。

        每個DB由5個獨立的子緩存器組成,每個子緩存器用來存儲數(shù)據(jù)塊一行中所有通道的數(shù)據(jù)。從子緩存器中讀出的數(shù)據(jù)共享給所有計算引擎,并與不同的卷積核進行卷積。從圖中可以看出每個子緩存器設(shè)計為三維立體緩存形式,其存儲位寬為5個字,深度為Mi,高度為N,其中N為計算引擎中計算單元數(shù)目。數(shù)據(jù)塊的一行中Mi個通道所有數(shù)據(jù)按照通道均勻存儲在子緩存器中。在一個時鐘周期內(nèi)可以并行讀出N個通道的數(shù)據(jù)。

        由于5個子緩存器中分別存儲了5行特征圖,在卷積計算過程中,分別從不同的子緩存器中讀出特征圖數(shù)據(jù)即可以組成一個卷積窗口。

        圖7 輸入特征圖緩存設(shè)計Fig.7 Input feature map buffer organization

        2.4 加速器性能分析

        文獻[10]引入了針對FPGA的Roofline模型用于評估算法與加速器之間的匹配程度。本文采用該模型對所設(shè)計的加速器進行定量分析。

        加速器性能PATP為

        PATP=min(PPE×S,IC×BW)

        (19)

        式中:PPE為單個計算單元的峰值性能(GFLOPS)。

        式(19)中S為可擴展因子,表示為

        (20)

        式中:AR表示FPGA中可用資源;RCPE表示每個計算單元所消耗的資源。

        IC計算強度,定義為每字節(jié)外部DRAM數(shù)據(jù)流所能支撐的計算量(FLOPS/Byte),該參數(shù)與算法相關(guān),代表了加速器所需要的帶寬。BW表示加速器可以提供的帶寬。

        根據(jù)FPGA的Roofline模型中各個參數(shù)的定義可知,在本算法中PPE為

        PPE=F×NBPW×NWOPK

        (21)

        式中:F表示計算單元運行頻率;NBPW表示運算字的字節(jié)數(shù)目,本設(shè)計中運算字節(jié)數(shù)為2;NWOPK表示單個計算單元所能完成的運算量,本設(shè)計中一個時鐘周期內(nèi)完成乘法和加法運算各9次。

        根據(jù)可擴展因子的定義,S可表示為

        (22)

        式中各項分子表示FPGA中所包含的LUT,F(xiàn)F,DSP,BRAM資源,分母為單個計算單元所消耗的FPGA資源。

        計算強度為一個數(shù)據(jù)復用周期內(nèi)總計算量與數(shù)據(jù)讀寫總量的比值,表示為

        (23)

        將運算中各個參數(shù)代入式(23)之后,計算強度IC表示為

        (24)

        式中:Nreused_r為行數(shù)據(jù)復用因子;Nreused_c為列數(shù)據(jù)復用因子;NPE為同一復用數(shù)據(jù)通道計算單元數(shù)目;Nread為數(shù)據(jù)復用周期內(nèi)從外部DRAM中讀取數(shù)據(jù)的次數(shù);Ndata為單次讀取的數(shù)據(jù)量;No為單個數(shù)據(jù)復用周期內(nèi)需要向外部DARM寫入的數(shù)據(jù)量。三種卷積算子參數(shù)及計算強度如表1所示。

        表1 三種卷積算子參數(shù)及計算強度Table 1 Computational intensity and parameters for three convolution operators

        BW為運算平臺所具有的外部DRAM帶寬,本文所設(shè)計的平臺外部掛8片DDR3,總數(shù)據(jù)位寬為256 bit,數(shù)據(jù)總線頻率為800 MHz,按照80%的效率計算,DDR帶寬為40.96 GB。從roofline模型可知,可擴展因子S、時鐘頻率F以及外部DRAM帶寬BW是影響加速器性能的主要因素,其中F和S確定了加速器算力上限,BW確定了加速器帶寬上限。

        當BW確定時,加速器的帶寬上限確定。由式(19)可知其帶寬瓶頸IC×BW為2589.01GFLOPs。此時,增加時鐘頻率F和可擴展因子S均會提高加速器的計算性能,但前者會消耗FPGA中的布線資源,后者會消耗FPGA中的計算資源。當時鐘頻率為100 MHz時,S是影響加速器的主要因素。例如,當S為128時,其計算性能為460.8GFLOPs,當S增加到256時,其計算性能提升到了921.6GFLOPs。當S確定時,提高時鐘頻率會提升加速器的性能,例如,在S為256時,將時鐘頻率從100 MHz提高到200 MHz時,其計算性能從921.6GFLOPs提升到1843.2GFLOPs。但是時鐘頻率超過200 MHz之后FPGA布線難度增大,甚至會造成布線失敗。

        在時鐘頻率F和可擴展因子S確定,即加速器所消耗的資源確定的情況下,外部BRAM的帶寬BW是影響加速器性能的主要因素。例如,當時鐘頻率為200 MHz,S為256時,由式(21)可知,其計算性能的瓶頸PPE×S為1843.2GFLOPs。當DDR芯片從8片減少到4片時,加速器的計算性能IC×BW為1294.54 GFLOPs,由此可見,由于DDR帶寬不足造成了加速器性能由1843.2GFLOPs下降到了1294.54 GFLOPs,損失了29.76%。

        3 仿真校驗

        本文中使用Verilog硬件描述語言在Xilinx XC7VX690T,XC7K480T,XC7A200T,XC7Z045四種FPGA上實現(xiàn)了該加速器,并對不同F(xiàn)PGA平臺上加速器的性能進行評估,通過峰值性能、功耗及推理時間三個指標對加速器進行評價。加速器設(shè)計采用了Xilinx VIVADO2019.2,加速器功耗采用Xilinx功耗分析工具獲得。

        3.1 加速器性能評估

        本文加速器在不同F(xiàn)PGA上的資源占用情況如表2所示。當N=16,C=16時,此時擴展因子S為256,可以在XC7VX690T上實現(xiàn)該加速器。DSP消耗達到64%,BRAM資源消耗達到69.80%,LUT和FF資源消耗分別為21.32%和21.15%。

        表2 加速器在不同F(xiàn)PGA上的資源消耗情況Table 2 Utilization of the accelerator on different FPGA

        可見,DSP資源和BRAM資源是限制加速器規(guī)模和性能的主要因素。時鐘頻率改變不影響DSP資源和BRAM資源的消耗,對FF資源和LUT資源的消耗稍有不同。當N和C參數(shù)均為8時,可將該加速器適配到Xilinx中端FPGA XC7K480T上,當N和C參數(shù)分別為4和8時,可以將該加速器適配到低端平臺XC7A200T上,當N和C參數(shù)分別為4和12時,可以將該加速器適配到Xilinx嵌入式平臺XC7Z045上??梢姡摽蚣芫哂辛己玫臄U展性,可以根據(jù)需求部署到不同F(xiàn)PGA上。

        表3 加速器在不同F(xiàn)PGA上的性能(100 MHz)Table 3 Performance of the accelerator on different FPGA (100 MHz)

        當頻率為100 MHz時,加速器在不同F(xiàn)PGA上的性能如表3所示。由于XC7VX690T的DSP資源和BRAM資源最多,其可擴展因子S最大,在相同的時鐘頻率下加速器可以達到最高性能和最大能效比。此時,加速器計算性能為921.6GFLOPs,功耗為9.94 W,能效比為92.71,推理時間為0.43 ms。四種FPGA平臺中XC7A200T資源最少,其可擴展因子S最高僅為32,此時加速器性能為115.2GFLOPs??梢?,在相同時鐘頻率下,不同F(xiàn)PGA平臺上可擴展因子不同,所能達到的性能也不同。

        當頻率為150 MHz時,加速器在不同F(xiàn)PGA上的性能如表4所示。由于頻率提高了50%,加速器在XC7VX690T上的計算性能提高了50%,達到了1382.4GFLOPs,推理時間也縮短到了0.29 ms,但功耗增加了3.17 W。在其它三種FPGA平臺上加速器的性能也相應提高了50%,功耗也有所增加??梢姡l率是影響加速器性能的關(guān)鍵因素,提高頻率,可以提高加速器性能,但其功耗也會增加。

        表4 加速器在不同F(xiàn)PGA上的性能(150 MHz)Table 4 Performance of the accelerator on different FPGA (150 MHz)

        當時鐘頻率為200 MHz時,加速器在不同F(xiàn)PGA上的性能如表5所示。當頻率進一步增加,加速器在XC7VX690T上性能達到了1843.2GFLOPs,功耗也增加到了16.32 W,能效比為112.94。

        表5 加速器在不同F(xiàn)PGA上的性能(200 MHz)Table 5 Performance of the accelerator on different FPGA (200 MHz)

        顯然,在加速器帶寬和FPGA平臺確定的情況下,可以通過提高時鐘頻率來提高加速器性能,但是,當頻率提高到某一個值時,進一步提高時鐘頻率會使得布線失敗。在本設(shè)計中,時鐘頻率超過200 MHz時,布線資源緊張。值得注意的是在時鐘頻率為200 MHz時也可以將本文加速器部署到Xilinx低端FPGA XC7A200T上。在功耗為3.88 W時可以達到230.4GFLOPs的計算性能,對于256×256×3的圖像推理時間只需要1.72 ms。

        3.2 性能對比

        由于不同F(xiàn)PGA的資源以及采用的工藝不同,加速器能達到的規(guī)模和性能也不同。為了實現(xiàn)公平對比,本文分別在Xilinx Virtex-7系列FPGA,Xilinx Z系列FPGA和Intel FPGA上進行了對比。Virtex系列FPGA是空間應用的主流器件,本文將所提出的加速器分別在100 MHz,150 MHz和200 MHz時與其它性能較好的加速器進行對比。

        表6 與其它加速器性能對比(100 MHz)Table 6 Performance comparison with other accelerators (100 MHz)

        表6顯示了在Virtex-7系列FPGA上頻率為100 MHz時本文所提加速器與其它加速器性能對比結(jié)果。文獻[27]與本文均采用了XC7VX690T,雖然文獻[23,26]采用了XC7VX485T,但屬于同一系列,具有可比性。此時,本文加速器計算性能為921.6GFLOPS,是文獻[27]加速器的2.07倍,是文獻[23]加速器的14.96倍。本文加速器功耗為9.94 W,是文獻[27]加速器功耗的38.2%,是文獻[23]加速器功耗的53%。本文所提出加速器能效比達到了92.71,是文獻[23]中加速器能效比的28倍,是文獻[27]中加速器能效比的5.16倍。由于本文采用了輕量化網(wǎng)絡(luò),計算時間為0.43 ms,是文獻[27]推理時間的12.75%??梢?,在100 MHz時,本文加速器在計算性能、計算時間以及能效比方面具有優(yōu)勢。

        表7顯示了頻率為150 MHz時本文提出的加速器與其它加速器的性能對比??梢钥闯鑫墨I[13,28]中加速器頻率為150 MHz,文獻[12]中加速器頻率為156 MHz。由于本文計算引擎中實現(xiàn)了三種卷積算子的有機融合,從而大大提高了FPGA中DSP資源的利用率,在150 MHz頻率下,性能達到了1382.4GFLOPs,是文獻[12]加速器性能的2.44倍,是文獻[13]加速器性能的6.78倍,是文獻[28]加速器的2.17倍。由于本文采用了輕量化模型,推理時間具有極大優(yōu)勢,僅0.29 ms即可完成一幅圖像推理,而文獻[13]中的加速器采用了VGG網(wǎng)絡(luò),推理時間高達151.8 ms。在能效方面,本文加速器能效是文獻[13]加速器的18.08倍,是文獻[12]加速器的4.76倍。

        表7 與其它加速器性能對比(150 MHz)Table 7 Performance comparison with other accelerators (150 MHz)

        表8顯示了頻率為200 MHz時本文加速器與其它加速器的性能對比。表中TY3代表Tiny YOLO V3,Y2代表YOLO V2,RS18代表ResNet-18。在相同時鐘頻率下本文加速器計算性能與文獻[16]所提加速器的計算性能相當,在功耗和能效比方面有一定優(yōu)勢。但是在推理時間上文獻[16]消耗時間是本文所提方案的41.59倍。本文加速器在性能、推理時間和能耗方面遠超文獻[14,17]中的加速器。

        表8 與其它加速器性能對比(200 MHz)Table 8 Performance comparison with other accelerators (200 MHz)

        表9顯示了本文提出的加速器在Xilinx Z系列FPGA上與其它加速器的性能對比。文獻[29]中加速器的時鐘頻率為150 MHz,文獻[30-31]中加速器時鐘頻率分別為167 MHz和142 MHz。本文加速器計算性能方面略優(yōu)于文獻[30-31]中加速器計算性能,是文獻[29]中加速器計算性能的1.89倍。本文加速器功耗為1.58 W,是文獻[29]中加速器功耗的35.5%,是文獻[31]的80%。本文加速器能效比為81,是文獻[29]中加速器能效比的5.7倍,是文獻[31]中加速器能效比的1.43倍??梢姡赬ilinx Z系列FPGA上,本文加速器性能優(yōu)于同類加速器性能。

        表9 在Xilinx Z系列FPGA上與其它加速器性能對比Table 9 Performance comparison with other accelerators on Xilinx Z series FPGA

        4 結(jié) 論

        本文提出了一種在軌高效目標檢測加速器框架,并在Xilinx多款FPGA上實現(xiàn)了該加速器。所提出的計算引擎設(shè)計方法實現(xiàn)了三種卷積算子的有機融合,使得目標檢測算法與硬件加速器更好的匹配,達到最優(yōu)性能和最高能效比。

        通過在多款FPGA及多種時鐘頻率下對該加速器的性能評估我們可以得出以下結(jié)論:

        1) 與同類加速器方案相比,本文所提出的加速器框架在性能、功耗、能效比及計算時間方面具有優(yōu)勢,適合部署在資源受限環(huán)境中,具有良好的星上應用前景和價值;

        2) 通過在Xilinx XC7VX690T,XC7K480T,XC7A200T,XC7Z045 FPGA上的驗證表明該框架具有良好的可擴展性和適配性,可以根據(jù)性能、功耗、推理時間及成本要求將其部署到不同F(xiàn)PGA上;

        3) 雖然本文提出的目標檢測算法加速框架是針對MSF-SNET算法所做的加速,但該加速框架可以推廣應用到其它算法的加速中。

        綜上所述,本文所提出的加速器框架具有良好的性能,不僅具有理論價值也具有工程借鑒意義。此外,該加速框架針對目標檢測算法設(shè)計,下一步可以將其推廣到其它算法。

        猜你喜歡
        引擎
        以學促干 挺膺擔當 激活砥礪前行的紅色引擎
        江陰市“三個創(chuàng)新”打造危化品安全監(jiān)管新引擎
        新海珠,新引擎,新活力!
        消費繼續(xù)發(fā)揮經(jīng)濟增長第一引擎作用
        消費導刊(2018年8期)2018-05-25 13:19:23
        三生 三大引擎齊發(fā)力
        藍谷: “涉藍”新引擎
        商周刊(2017年22期)2017-11-09 05:08:31
        休閑垂釣 傳統(tǒng)漁業(yè)新引擎
        信息化,“盛京”加速的新引擎
        無形的引擎
        河南電力(2015年5期)2015-06-08 06:01:46
        基于Cocos2d引擎的PuzzleGame開發(fā)
        中文字幕精品亚洲二区| 天天躁日日躁狠狠很躁| 国产精品免费久久久久影院 | 欧美日韩国产综合aⅴ| 人成视频在线观看免费播放| 中文字幕国产亚洲一区| 成年女人a毛片免费视频| 少妇极品熟妇人妻无码| 蜜桃av无码免费看永久| 中文字幕一区二区三区乱码人妻 | 亚洲欧美日韩国产综合久| 在线亚洲精品免费视频| 国产成人精品免费久久久久 | 久久精品国产亚洲av果冻传媒| 骚小妹影院| 国产精品国产三级在线高清观看| 日本高清一区在线你懂得| 第一次处破女18分钟高清| 国产农村乱子伦精品视频| 亚洲黄色在线看| 久久少妇高潮免费观看| 偷看农村妇女牲交| 少妇熟女视频一区二区三区| 无码国产一区二区色欲| 国产精品亚洲一区二区三区16| 国产乱码一区二区三区爽爽爽| 精品手机在线视频| 少妇勾引视频网站在线观看| 日本精品女优一区二区三区| 曰批免费视频播放免费直播| 国产精品一区2区三区| 亚洲啪啪色婷婷一区二区| 国产精品欧美久久久久久日本一道| 亚洲人成人影院在线观看 | 日本女同视频一区二区三区 | 国产情侣久久久久aⅴ免费| 美女高潮流白浆视频在线观看| 久久婷婷综合色一区二区| 免费a级毛片18禁网站app| 欧美成人免费高清视频| 日本岛国视频在线观看一区二区 |