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

        ?

        多核數(shù)字信號(hào)處理卷積算法并行優(yōu)化

        2024-04-08 11:59:04許金偉王慶林李婭琳姜晶菲李榮春李東升
        關(guān)鍵詞:效率特征優(yōu)化

        許金偉,王慶林,李婭琳,姜晶菲,高 蕾,李榮春*,李東升

        (1. 國(guó)防科技大學(xué) 計(jì)算機(jī)學(xué)院, 湖南 長(zhǎng)沙 410073; 2. 國(guó)防科技大學(xué) 并行與分布計(jì)算全國(guó)重點(diǎn)實(shí)驗(yàn)室, 湖南 長(zhǎng)沙 410073)

        卷積神經(jīng)網(wǎng)絡(luò)已經(jīng)成為人工智能領(lǐng)域應(yīng)用最廣泛的模型之一,不僅在圖像分類[1]、目標(biāo)識(shí)別[2]、視頻分析[3]等計(jì)算機(jī)視覺(jué)領(lǐng)域的應(yīng)用中取得了顯著效果,還在自然語(yǔ)言處理[4]、語(yǔ)音識(shí)別[5]等其他領(lǐng)域同樣取得了突破性進(jìn)展。隨著精確感知和高精度識(shí)別任務(wù)需求的不斷增長(zhǎng),大量智能應(yīng)用在深度學(xué)習(xí)算法中均使用層數(shù)更深的結(jié)構(gòu),這需要高算力專用硬件的支持,因此卷積神經(jīng)網(wǎng)絡(luò)的加速技術(shù)一直是研究的熱點(diǎn)[6-7]。典型的卷積神經(jīng)網(wǎng)絡(luò)主要由卷積層、全連接層、非線性激活函數(shù)層、池化層等構(gòu)成,其中卷積層和全連接層集中了卷積神經(jīng)網(wǎng)絡(luò)的主要計(jì)算負(fù)載。因此研究卷積神經(jīng)網(wǎng)絡(luò)的加速技術(shù)變成了卷積層加速優(yōu)化的難點(diǎn)和關(guān)鍵點(diǎn)。

        目前常用的卷積優(yōu)化方法主要有直接卷積[8]、通用矩陣乘法(general matrix multiplication, GEMM)[9-10]和快速算法[11-12]三種實(shí)現(xiàn)方式。通用矩陣乘法實(shí)現(xiàn)卷積是將卷積操作轉(zhuǎn)換成矩陣操作,再優(yōu)化矩陣乘法,從而達(dá)到優(yōu)化卷積計(jì)算的目的。整個(gè)過(guò)程中需要增加img2col[10]操作,同時(shí)由于輸入數(shù)據(jù)轉(zhuǎn)換成矩陣時(shí)會(huì)膨脹,從而存儲(chǔ)壓力也會(huì)增加??焖偎惴ㄊ菍⒕矸e操作通過(guò)winograd[11]和快速傅里葉變換(fast Fourier transform, FFT)[12]等變換方式轉(zhuǎn)換成其他快速實(shí)現(xiàn)方法的操作,其降低了計(jì)算復(fù)雜度,并在此基礎(chǔ)上開(kāi)發(fā)了并行性以加速卷積的計(jì)算。但快速算法也存在計(jì)算精度損失和卷積核規(guī)模限制等問(wèn)題。

        直接卷積是通過(guò)循環(huán)展開(kāi)的方式開(kāi)發(fā)卷積計(jì)算的并行性,優(yōu)化過(guò)程中不會(huì)增加存儲(chǔ)壓力,也不會(huì)降低計(jì)算精度。最近,已經(jīng)提出了一些直接卷積方法[13-15]來(lái)直接實(shí)現(xiàn)卷積層。Georganas等[14]通過(guò)動(dòng)態(tài)編譯方法在x86架構(gòu)上引入了直接卷積實(shí)現(xiàn),并達(dá)到了接近理論極限的性能。Zhang等[13]提出了一種直接卷積實(shí)現(xiàn),在各種CPU架構(gòu)上顯示出比基于GEMM的卷積算法更好的性能。Wang等[15]在ARMv8多核CPU上提出了一種新的并行逐層直接卷積實(shí)現(xiàn),該實(shí)現(xiàn)針對(duì)具有批次、通道、高度、寬度(batch, channel, height, width, BCHW)數(shù)據(jù)布局的逐層卷積。與基于GEMM的卷積相比,直接卷積不會(huì)產(chǎn)生額外的內(nèi)存空間開(kāi)銷,在實(shí)現(xiàn)中,矢量化和線程級(jí)并行化分別用于矢量單元和多核并行性能的有效地利用,寄存器和緩存塊用于提高片上多級(jí)存儲(chǔ)器中的數(shù)據(jù)重用。這些實(shí)現(xiàn)在Phytium FT-1500A和FT-2000處理器上進(jìn)行了測(cè)試,在性能和可擴(kuò)展性方面,優(yōu)于Caffe conv和Mxnet conv實(shí)現(xiàn)。

        FT-M7032是國(guó)防科技大學(xué)面向E級(jí)計(jì)算自主研發(fā)的一款通用多核數(shù)字信號(hào)處理(digital signal processing, DSP)芯片[16],由32個(gè)DSP核和16個(gè)ARMv8 CPU核構(gòu)成。該芯片的DSP核支持FP32和FP16操作,工作主頻為1.6 GHz時(shí),FP16峰值浮點(diǎn)性能可達(dá)19.7 TFLOPS,而半精度浮點(diǎn)足以支持人工智能領(lǐng)域中大多數(shù)應(yīng)用的推理計(jì)算精度,由此可見(jiàn),FT-M7032芯片在人工智能領(lǐng)域存在著巨大的應(yīng)用潛力。在FT-M7032中,采用基于超長(zhǎng)指令字的順序執(zhí)行架構(gòu),并采用軟件控制的存儲(chǔ)作為片上緩存,提供豐富的直接存儲(chǔ)訪問(wèn)(direct memory access, DMA)模式,DMA模式實(shí)現(xiàn)各級(jí)存儲(chǔ)空間的快速訪問(wèn)?,F(xiàn)有的面向GPU、CPU等通用處理平臺(tái)和張量處理單元(tensor processing unit, TPU)等專用處理平臺(tái)的卷積優(yōu)化算法在FT-M7032上無(wú)法直接運(yùn)行或者執(zhí)行效率很低。因此,面向多核向量處理器體系結(jié)構(gòu)進(jìn)行針對(duì)性算法優(yōu)化有助于發(fā)揮FT-M7032芯片的計(jì)算性能。因此,本文基于FT-M7032芯片,聚焦直接卷積實(shí)現(xiàn)方式,通過(guò)不同維度的并行度開(kāi)發(fā),實(shí)現(xiàn)卷積計(jì)算在向量處理器上的高效執(zhí)行。

        面向FT-M7032芯片處理卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用需求,本文結(jié)合FT-M7032芯片的體系結(jié)構(gòu)設(shè)計(jì),針對(duì)目前卷積神經(jīng)網(wǎng)絡(luò)中的卷積計(jì)算,仔細(xì)分析了不同卷積核大小的卷積計(jì)算的執(zhí)行特點(diǎn)和并行粒度,從而針對(duì)1×1卷積提出了按行計(jì)算的優(yōu)化方法,針對(duì)卷積核大于1的卷積提出了逐元素計(jì)算的向量化優(yōu)化方法,同時(shí)針對(duì)深層卷積神經(jīng)網(wǎng)絡(luò)中,不同層輸入數(shù)據(jù)和權(quán)值矩陣規(guī)模的變化,提出了不同的多核并行處理方案,從而提升輸入數(shù)據(jù)和權(quán)值矩陣的復(fù)用度,降低帶寬壓力。之后,又采用DMA 乒乓緩沖機(jī)制,實(shí)現(xiàn)數(shù)據(jù)搬移和計(jì)算的遮掩。為了驗(yàn)證本文所提方案的有效性,將所提方法在ResNet50卷積神經(jīng)網(wǎng)絡(luò)[17]上進(jìn)行驗(yàn)證。

        1 背景知識(shí)

        1.1 卷積定義

        卷積涉及3個(gè)張量:輸入特征圖(I)、濾波器(F)和輸出特征圖(O)。在C代碼樣式中,這些具有BCHW布局的張量可以表示為I[B][Ci][Hi][Wi],F[Co][Ci][Hf][Wf]和O[B][Co][Ho][Wo]。卷積的定義如下:

        (1)

        式中,0≤b

        1.2 FT-M7032異構(gòu)處理器

        FT-M7032異構(gòu)處理器由1個(gè)16核ARMv8 CPU和4個(gè)通用數(shù)字信號(hào)處理器(general purpose digital signal processor, GPDSP)集群組成,如圖1所示。多核CPU是Phytium FT-2000plus處理器的簡(jiǎn)化版本,主要負(fù)責(zé)線程管理和通信。多核CPU的單精度浮點(diǎn)峰值性能為281.6 GFLOPS。每個(gè)GPDSP集群包括8個(gè)DSP核,它們共享6 MB片上全局共享內(nèi)存(global shared memory, GSM)。每個(gè)集群中的所有8個(gè)DSP核和GSM都可以通過(guò)片上縱橫網(wǎng)絡(luò)進(jìn)行通信,通信帶寬達(dá)到了300 Gbit/s。軟件開(kāi)發(fā)人員需要維護(hù)它們之間的數(shù)據(jù)一致性。多核CPU和4個(gè)GPDSP集群共享相同的主內(nèi)存空間,多核CPU可以訪問(wèn)整個(gè)主空間,但每個(gè)GPDSP集群只能使用42.6 Gbit/s的硬件帶寬訪問(wèn)自己的相應(yīng)部分。由于CPU內(nèi)核之間的緩存一致性如FT-2000plus所提供的那樣,CPU的緩存數(shù)據(jù)必須在每個(gè)GPDSP集群上運(yùn)行的函數(shù)啟動(dòng)之前寫入主內(nèi)存,并在其完成后退出。

        圖1 FT-M7032的整體架構(gòu)Fig.1 Architecture of FT-M7032

        每個(gè)GPDSP簇中的每個(gè)DSP核基于超長(zhǎng)指令字架構(gòu)(very long instruction word, VLIW),包括指令調(diào)度單元(instruction fetch unit, IFU)、標(biāo)量處理單元(scalar processing units, SPU)、向量處理單元(vector processing units, VPU)和DMA引擎,如圖2所示。IFU被設(shè)計(jì)為每個(gè)周期最多啟動(dòng)11條指令,其中包含5條標(biāo)量指令和6條矢量指令。SPU用于指令流控制和標(biāo)量計(jì)算,主要由標(biāo)量處理元件(scalar processing element, SPE)和64 KB標(biāo)量?jī)?nèi)存(scalar memory, SM)組成,它們匹配5條標(biāo)量指令。VPU為每個(gè)DSP核提供主要計(jì)算性能,包括768 KB陣列存儲(chǔ)器(array memory, AM)和以單指令多數(shù)據(jù)流(single instruction multiple data,SIMD)方式工作的16個(gè)矢量處理元件(vector processing element, VPE)。每個(gè)VPE有64個(gè)64位寄存器和3個(gè)浮點(diǎn)乘累加(float multiply accumulate, FMAC)單元,1個(gè)FMAC單元每周期可以處理2個(gè)FP32或者4個(gè)FP16的乘加計(jì)算。其中,FP32數(shù)據(jù)類型的SIMD寬度為32,FP16數(shù)據(jù)類型的SIMD寬度為16,當(dāng)工作在1.8 GHz時(shí),每個(gè)DSP核可以提供的單精度浮點(diǎn)峰值性能為345.6 GFLOPS,半精度浮點(diǎn)峰值性能為691.2 GFLOPS。AM可以通過(guò)兩個(gè)加載存儲(chǔ)向量單元,在每個(gè)周期向寄存器傳送多達(dá)512 B數(shù)據(jù)。在SPU和VPU之間,可以通過(guò)廣播指令和共享寄存器傳輸數(shù)據(jù)。DMA引擎用于在不同級(jí)別的存儲(chǔ)器(即主存儲(chǔ)器、GSM和SM/AM)間傳輸數(shù)據(jù)。AM 每個(gè)周期可以向向量寄存器提供 512 B數(shù)據(jù),即 AM與向量寄存器之間的帶寬為921.6 GB/s。

        圖2 FT-M7032中的DSP單核微架構(gòu)Fig.2 Macro-architecture of each DSP core in FT-M7032

        2 面向FT-M7032的卷積計(jì)算多核并行優(yōu)化

        在進(jìn)行卷積計(jì)算時(shí),為了降低帶寬壓力,提升計(jì)算效率,需要盡可能地將可復(fù)用的權(quán)值或者特征圖放置在GSM或者AM中。為此,將根據(jù)深度卷積神經(jīng)網(wǎng)絡(luò)中特征圖和權(quán)值矩陣數(shù)據(jù)規(guī)模隨著層數(shù)而產(chǎn)生的變化,來(lái)規(guī)劃多核間的并行方式。一般深度卷積神經(jīng)網(wǎng)絡(luò)中,在模型的前層,特征圖規(guī)模大、通道數(shù)小,因而輸入輸出特征圖所占用的存儲(chǔ)空間大,權(quán)值占用的空間相應(yīng)較少;后層則是特征圖規(guī)模小、通道數(shù)多,因而輸入輸出特征圖所占存儲(chǔ)空間的比例會(huì)減少,權(quán)值矩陣隨著通道數(shù)的增加而急劇變大,所占存儲(chǔ)空間的比例會(huì)相應(yīng)增加。因此,本文根據(jù)卷積層的存儲(chǔ)分布特點(diǎn)在多核間分別采用層內(nèi)多核并行和任務(wù)多核并行兩種不同的優(yōu)化方法。另外,由于FT-M7032芯片中不同簇之間并不共享GSM,本文所提的多核并行方案僅是在單簇內(nèi)部,不同簇之間均采用任務(wù)級(jí)并行方案。

        2.1 特征圖數(shù)據(jù)布局

        為了后續(xù)行文方便,先介紹在面向FT-M7032芯片時(shí)所采用的數(shù)據(jù)布局。卷積的輸入特征圖的數(shù)據(jù)布局格式為NCHW,其中N為batchsize,C為輸入通道數(shù),H和W為特征圖的高和寬,由于在FT-M7032的向量處理器中,單FMAC一次處理的位寬是64位,所以向量寄存器中單個(gè)寄存器的位寬也是64位,本文在數(shù)據(jù)布局時(shí)同時(shí)處理來(lái)自4幅圖的數(shù)據(jù),將4幅圖對(duì)應(yīng)的每個(gè)元素拼接成一個(gè)64位數(shù)據(jù)。所以輸入特征圖的數(shù)據(jù)布局方式為N4CHW4,其中4(非下標(biāo))表示最內(nèi)部是來(lái)自4幅圖的4個(gè)元素,N4表示N除以4。

        2.2 卷積層內(nèi)多核并行優(yōu)化

        卷積層內(nèi)多核并行開(kāi)發(fā)的難點(diǎn)在于如何將任務(wù)有效地分配到不同的處理核上,且在并行開(kāi)發(fā)過(guò)程中,降低對(duì)帶寬的需求,增加多核之間對(duì)于輸入數(shù)據(jù)和權(quán)值的復(fù)用度。考慮到這一點(diǎn),在設(shè)計(jì)時(shí)提出了特征圖級(jí)并行和窗口級(jí)并行兩種不同的實(shí)現(xiàn)方案。

        卷積層內(nèi)多核并行優(yōu)化是指將卷積按照特征圖區(qū)域或者輸出通道進(jìn)行劃分,其中按照特征圖區(qū)域劃分是針對(duì)卷積核大于1的卷積層,將輸入特征圖劃分成M等份,分給M個(gè)核同時(shí)處理,即多核間采用窗口級(jí)并行;輸出通道劃分是針對(duì)卷積核為1的卷積層,按照輸出通道劃分成M等份,分給不同核處理,即多核間采用特征圖級(jí)并行。其中,M是單簇中DSP的核數(shù),在FT-M7032中M最大為8。

        2.2.1 特征圖級(jí)多核并行

        在卷積核為1×1(Conv1×1)時(shí),輸入特征圖可以看作列為Hi×Wi×4、行為Ci的矩陣,記作輸入數(shù)據(jù):[Ci][Hi×Wi×4],其中Ci表示輸入通道,Hi和Wi表示輸入特征圖的高和寬。權(quán)值數(shù)據(jù)可看作列為Ci、行為Co的矩陣,記作權(quán)值數(shù)據(jù):[Co][Ci],其中Co表示輸出通道。輸出特征圖可看作列為Ho×Wo×4、行為Co的矩陣,記作輸出數(shù)據(jù):[Co][Ho×Wo×4],其中Ho和Wo表示輸出特征圖的高和寬。因此可以將1×1的卷積操作看成一個(gè)矩陣乘操作。

        Conv1×1多核并行優(yōu)化方案是在權(quán)值數(shù)據(jù)的輸出通道Co上作切分,本文將Co切分為M等份,令m=「Co/M?,將數(shù)據(jù)依次按核分配后傳輸?shù)綄?duì)應(yīng)核的SM上,而各核中所有輸入數(shù)據(jù)都需要參與計(jì)算,故本文將通過(guò)DMA通道傳輸完整的輸入數(shù)據(jù)到每個(gè)核的AM上,各核計(jì)算后將得到m個(gè)對(duì)應(yīng)輸出通道的輸出結(jié)果,圖3為Core0的具體實(shí)現(xiàn),實(shí)際運(yùn)行中各核是同步進(jìn)行的。

        圖3 特征圖級(jí)多核并行優(yōu)化Fig.3 Feature map level multi-core parallel optimization

        核內(nèi)外的數(shù)據(jù)傳輸均需通過(guò)DMA通道,因?yàn)镚SM到核內(nèi)的帶寬要遠(yuǎn)高于雙倍數(shù)據(jù)速率(double data rate, DDR)同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器到核內(nèi)的帶寬,因此,可以將大部分輸入輸出數(shù)據(jù)暫存在GSM空間中,GSM空間不足時(shí),再存入DDR中,此舉能最大限度減少輸入輸出的帶寬壓力。計(jì)算中,各核所需要的權(quán)值數(shù)據(jù)將以點(diǎn)對(duì)點(diǎn)的方式傳輸?shù)綄?duì)應(yīng)的SM中;輸入數(shù)據(jù)在GSM/DDR中連續(xù)存儲(chǔ),每次將其中的一個(gè)計(jì)算分塊從GSM/DDR中以廣播的方式傳輸?shù)胶藘?nèi)的AM上,各核用標(biāo)量加載指令讀取SM上的權(quán)值數(shù)據(jù)分塊,再通過(guò)標(biāo)量的廣播指令傳輸?shù)较蛄看鎯?chǔ)器中(這種方法能夠顯著降低對(duì)DDR的數(shù)據(jù)帶寬需求),同時(shí)用向量加載指令讀取AM上的輸入數(shù)據(jù)分塊,再對(duì)兩者進(jìn)行計(jì)算,所有核都計(jì)算結(jié)束后,將輸出數(shù)據(jù)用向量存儲(chǔ)指令存回AM,再按分塊邏輯存儲(chǔ)至GSM/DDR中。依次加載并計(jì)算下一個(gè)分塊,直到完成所有計(jì)算和數(shù)據(jù)存儲(chǔ)。

        2.2.2 窗口級(jí)多核并行

        在卷積核大于1×1時(shí),采用窗口級(jí)多核并行優(yōu)化設(shè)計(jì),將輸入特征圖按區(qū)域劃分為M份,分配到各個(gè)核上,每個(gè)核上都需要訪問(wèn)完整的權(quán)值數(shù)據(jù),所以需要將權(quán)值數(shù)據(jù)存放在AM中實(shí)現(xiàn)向量化,將各個(gè)核分配好的輸入數(shù)據(jù)存放在SM中,按照元素計(jì)算的方式進(jìn)行向量化卷積。

        同樣地,核內(nèi)外的數(shù)據(jù)傳輸需要通過(guò)DMA通道。首先將輸入數(shù)據(jù)按多核機(jī)制分配,將其按基礎(chǔ)分塊大小從GSM/DDR中以點(diǎn)對(duì)點(diǎn)的方式傳輸?shù)綄?duì)應(yīng)核的SM上,然后從DDR中將權(quán)值數(shù)據(jù)按分塊大小廣播到各核的AM中,分別用標(biāo)量指令和向量指令將數(shù)據(jù)加載到標(biāo)量和向量寄存器中,按逐元素計(jì)算的方法完成卷積,等到所有核的卷積計(jì)算完成,再將數(shù)據(jù)依次存儲(chǔ)到AM中和DDR/GSM中,再依次加載并計(jì)算下一個(gè)分塊,直到結(jié)束。

        2.3 任務(wù)級(jí)多核并行方案

        任務(wù)級(jí)多核并行優(yōu)化設(shè)計(jì)中,核與核之間是獨(dú)立運(yùn)行的,每個(gè)核將獨(dú)立處理4幅圖,因此該方案下,單簇能同時(shí)處理4×M幅圖的計(jì)算,因此需要等待前面的卷積層處理4×M幅圖后才會(huì)啟動(dòng)該層的處理。

        任務(wù)級(jí)多核并行優(yōu)化設(shè)計(jì)中,因?yàn)閱未翁幚淼臄?shù)據(jù)量過(guò)大,無(wú)法暫存在GSM中,所有的輸入輸出均需要傳輸回DDR存儲(chǔ)。同樣地,本文將不同的圖片數(shù)據(jù)從DDR以點(diǎn)對(duì)點(diǎn)的方式搬移至多核,而各核之間的權(quán)值數(shù)據(jù)是共享的,所以將權(quán)值數(shù)據(jù)從DDR以廣播的方式傳輸至各核,同樣是按照分塊大小依次傳輸與計(jì)算。

        2.4 兩級(jí)DMA雙緩沖機(jī)制

        為減少數(shù)據(jù)搬移開(kāi)銷提高卷積計(jì)算效率,本文提出基于兩級(jí)DMA雙緩沖的數(shù)據(jù)搬移優(yōu)化策略,分別在SM和AM中為輸入數(shù)據(jù)或權(quán)值數(shù)據(jù)設(shè)計(jì)兩個(gè)緩沖區(qū),Conv1×1計(jì)算中,在SM中為權(quán)值數(shù)據(jù)建立兩個(gè)緩沖區(qū),在AM中為輸入數(shù)據(jù)建立兩個(gè)緩沖區(qū);卷積核大于1×1的卷積計(jì)算中,在SM中為輸入數(shù)據(jù)建立兩個(gè)緩沖區(qū),在AM中為權(quán)值數(shù)據(jù)建立兩個(gè)緩沖區(qū)。該機(jī)制將核心計(jì)算和數(shù)據(jù)搬移同步進(jìn)行,兩者的執(zhí)行時(shí)間重疊,能覆蓋耗時(shí)較短的那部分操作時(shí)長(zhǎng),提高計(jì)算性能,具體兩級(jí)DMA雙緩沖機(jī)制如圖4所示。

        圖4 兩級(jí)DMA雙緩沖機(jī)制Fig.4 Two level DMA double buffer mechanism

        將核心計(jì)算需要的第一組數(shù)據(jù)A1先搬移至SM/AM的緩沖區(qū)buffer1中,同時(shí)開(kāi)啟A1核心計(jì)算與下一組數(shù)據(jù)塊A2到buffer2的搬移,等到A1的核心計(jì)算和A2的數(shù)據(jù)搬移都結(jié)束后,再開(kāi)始進(jìn)入下一輪A2的核心計(jì)算和A3的數(shù)據(jù)搬移,如此計(jì)算和數(shù)據(jù)通信同時(shí)進(jìn)行,直至DDR/GSM的數(shù)據(jù)遍歷結(jié)束。

        3 面向單核DSP元素級(jí)并行優(yōu)化

        FT-M7032芯片中DSP核上的存儲(chǔ)空間是有限的,SM的存儲(chǔ)空間是64 KB,AM的存儲(chǔ)空間是768 KB。面對(duì)不同規(guī)格的卷積,需要對(duì)輸入數(shù)據(jù)和權(quán)值數(shù)據(jù)進(jìn)行分塊處理。

        由于DSP內(nèi)部的VPU包含16個(gè)VPE,每個(gè)VPE包含3個(gè)FMAC,本文開(kāi)發(fā)元素級(jí)并行就是將卷積計(jì)算中每個(gè)特征圖元素的48個(gè)輸出通道放到48個(gè)FMAC上并行執(zhí)行,從而有效利用DSP內(nèi)部的計(jì)算資源,提升卷積計(jì)算在每個(gè)DSP的執(zhí)行性能。

        令輸入數(shù)據(jù)的子塊為Ib,權(quán)值數(shù)據(jù)子塊為Wb,輸出數(shù)據(jù)的子塊為Ob。

        3.1 Conv1×1分塊設(shè)計(jì)與核內(nèi)計(jì)算

        3.1.1 Conv1×1分塊設(shè)計(jì)

        Conv1×1計(jì)算中,權(quán)值將存放在SM中,輸入和輸出存放在AM中,由于程序設(shè)計(jì)了DMA和計(jì)算的乒乓緩沖機(jī)制,故SM和AM空間將劃兩個(gè)緩沖區(qū)分別存儲(chǔ)子塊。令輸入的Hi×Wi×4維度的分塊大小為Nb,結(jié)合處理器結(jié)構(gòu)特點(diǎn),分塊遵循以下原則:分塊大小不得超出片上存儲(chǔ)空間,Nb為192的倍數(shù),盡可能在單維度切分且盡可能減少數(shù)據(jù)的切割次數(shù)。

        令子塊Wb為m×K,Ib為K×Nb,分塊思路如下:①結(jié)合處理器結(jié)構(gòu)特點(diǎn),考慮到處理器指令的延遲槽循環(huán)和流水線排布,Wb的m取6~12較為合適;②確立好m,判斷當(dāng)K=Ci時(shí)權(quán)值的子塊是否滿足SM的存儲(chǔ)空間要求,若否,則將Ci按二分法繼續(xù)切分直至滿足SM存儲(chǔ)空間要求;③輸入數(shù)據(jù)分塊中首先將Nb設(shè)為192,結(jié)合Wb的取值K判斷K×192是否符合AM存儲(chǔ)空間要求,若是,則繼續(xù)以192為倍數(shù)擴(kuò)大Nb,直到取到范圍內(nèi)的最大值,若否,則在K上按二分法繼續(xù)切割,直到滿足存儲(chǔ)要求為止。

        3.1.2 Conv1×1核內(nèi)計(jì)算

        結(jié)合上述分塊設(shè)計(jì)可以得到子塊Ib和Wb,按行實(shí)現(xiàn)的Conv1×1如圖5所示,具體算法見(jiàn)算法1。

        圖5 按行實(shí)現(xiàn)的Conv1×1示意Fig.5 Schematic diagram of row-wise Conv1×1

        算法1 按行實(shí)現(xiàn)的Conv1×1算法

        3.2 Conv3×3分塊設(shè)計(jì)與核內(nèi)計(jì)算

        3.2.1 Conv3×3分塊設(shè)計(jì)

        Conv3×3計(jì)算中,輸入數(shù)據(jù)將存放在SM中,權(quán)值和輸出數(shù)據(jù)存放在AM中,由于輸入和權(quán)值的數(shù)據(jù)量較大,無(wú)法全部存入核內(nèi),也需對(duì)各數(shù)據(jù)進(jìn)行分塊。

        Wb分塊設(shè)計(jì):考慮到處理器核內(nèi)有16個(gè)VPE,每個(gè)VPE有3個(gè)FMAC,則處理器單周期可處理48個(gè)64位數(shù)據(jù)。Conv3×3的分塊設(shè)計(jì)思路如下:①向量化并行設(shè)計(jì)需要數(shù)據(jù)間具備計(jì)算的非相關(guān)性,Ci通道需要做循環(huán)累加,不具備該條件,而特征圖尺寸變化跨度大也不適合向量化,故只能在Co維做向量化設(shè)計(jì);②向量的數(shù)據(jù)加載是連續(xù)的,故應(yīng)將Co維的數(shù)據(jù)在格式上連續(xù)存儲(chǔ),按大小48劃分,并將其提取到格式里面;③結(jié)合ResNet50網(wǎng)絡(luò)結(jié)構(gòu)特征和AM存儲(chǔ)空間的大小,將Ci維按大小64劃分。故權(quán)值子塊為Wb:[3][3][64][48][4](舍入部分用零填充)。

        Ib分塊設(shè)計(jì):面對(duì)不同規(guī)格的輸入數(shù)據(jù),需要結(jié)合SM空間大小、DMA雙緩沖機(jī)制和Conv3×3卷積的計(jì)算原理綜合考慮。已知Ib的Ci維分塊為64,而逐元素Conv3×3計(jì)算每次需要加載3行輸入數(shù)據(jù),則padding=1的情況下,可計(jì)算出特征圖Wi維度分塊的最大值Wib,即輸入數(shù)據(jù)子塊為Ib:[64][3][Wib][4] 。

        3.2.2 Conv3×3核內(nèi)計(jì)算

        逐元素Conv3×3計(jì)算中,將Ib和Wb加載到核內(nèi)空間后,讀取同一Ci通道的Ib和Wb數(shù)據(jù),將Ib感受野區(qū)域的3×3數(shù)據(jù)與Wb的卷積核數(shù)據(jù)對(duì)應(yīng)相乘,遍歷Ci維將累加計(jì)算結(jié)果,再將3×3的9個(gè)像素點(diǎn)數(shù)據(jù)相加,即得到單元素卷積結(jié)果,如圖6所示,具體步驟見(jiàn)算法2。

        圖6 逐元素Conv3×3示意Fig.6 Schematic diagram of element-wise Conv3×3

        算法2 逐元素Conv3×3算法

        單元素計(jì)算完成后,需要按序依次對(duì)輸入子塊Ib中的其他元素做卷積,根據(jù)上述設(shè)計(jì)已知子塊為Wb3×3×64×48×4和Ib64×3×Wib×4,得到的輸出子塊為Ob48×Wib×4,算法實(shí)現(xiàn)見(jiàn)算法3。

        算法3 Conv3×3子塊卷積算法

        4 性能評(píng)估

        本節(jié)將全面評(píng)估與分析本文所提出的面向FT-M7032異構(gòu)處理器的卷積并行優(yōu)化方法的性能。

        4.1 實(shí)驗(yàn)設(shè)置

        本節(jié)主要涉及所提卷積并行優(yōu)化方案與CPU上卷積實(shí)現(xiàn)之間的性能對(duì)比,CPU卷積實(shí)現(xiàn)是指基于PyTorch[18]框架實(shí)現(xiàn)的在Intel(R) Xeon(R) CPU E5-2640 v3上的卷積計(jì)算。

        在本節(jié)中涉及四個(gè)指標(biāo)來(lái)評(píng)判卷積的性能,第一個(gè)是完成卷積計(jì)算的時(shí)間T,第二個(gè)是卷積計(jì)算所達(dá)到的計(jì)算性能Pconv,第三個(gè)是卷積計(jì)算在單個(gè)GPDSP簇上的計(jì)算效率Econv(計(jì)算效率是指實(shí)際執(zhí)行時(shí)所達(dá)到的計(jì)算性能與峰值計(jì)算性能之間的比率),第四個(gè)是卷積計(jì)算的擴(kuò)展效率Sconv(擴(kuò)展效率是指n核并行時(shí)所達(dá)到的計(jì)算性能與單核計(jì)算性能的n倍之間的比率)。四個(gè)指標(biāo)之間的相互關(guān)系可表示為:

        (2)

        (3)

        (4)

        其中,Peakgpdsp表示單個(gè)GPDSP簇的FP16峰值計(jì)算性能,Pn表示n個(gè)DSP核時(shí)所能達(dá)到的計(jì)算性能。

        4.2 在不同數(shù)據(jù)規(guī)模下單核性能及計(jì)算效率評(píng) 估分析

        為了評(píng)估本文所提出的核內(nèi)計(jì)算和分塊設(shè)計(jì)的有效性,本節(jié)選取典型的卷積層來(lái)評(píng)估其在單核上的計(jì)算性能和計(jì)算效率。

        在實(shí)驗(yàn)時(shí),首先評(píng)估了Conv1×1的單核性能,從ResNet50的stage2、stage3、stage4和stage5中分別選取了其第二個(gè)block的第一層卷積,其特征圖大小分別為56、28、14、7,輸入通道分別為256、512、1 024、2 048,輸出通道分別為64、128、256、512。圖7展示了其各層的執(zhí)行時(shí)間和計(jì)算效率。其中Tconv1和Econv1分別代表Conv1×1的執(zhí)行時(shí)間和計(jì)算效率,Tconv3和Econv3分別代表Conv3×3的執(zhí)行時(shí)間和計(jì)算效率,后續(xù)圖表中的Sconv1和Sconv3分別表示Conv1×1和Conv3×3的擴(kuò)展效率。由圖7可以看出,由于這四層的總計(jì)算量是一樣的,在本文提出的分塊設(shè)計(jì)和核內(nèi)計(jì)算優(yōu)化的情況下,前三層的執(zhí)行時(shí)間基本一致,計(jì)算效率也保持在60%以上,可見(jiàn)本文所提的方法是有效的。而第四層的計(jì)算效率之所以偏低,是因?yàn)槠涮卣鲌D規(guī)模變得過(guò)小,在進(jìn)行分塊時(shí)需要添加冗余以保證程序的正確性。

        圖7 不同規(guī)模卷積時(shí)DSP單核性能和計(jì)算效率Fig.7 Performance and calculation efficiency of DSP single core for different scale convolution

        其次評(píng)估了Conv3×3的單核性能和執(zhí)行效率,從ResNet50的stage2、stage3、stage4和stage5中分別選取了其第二個(gè)block的第二層卷積,其特征圖大小分別是56、28、14、7,輸入通道為64、128、256、512。圖7展示了其各層的執(zhí)行時(shí)間和計(jì)算效率,可以看出,后三層的執(zhí)行時(shí)間相當(dāng),計(jì)算效率分別為50.01%、51.37%和45.07%,這是因?yàn)檫@四層的計(jì)算量是相同的,同時(shí)也說(shuō)明本文的方法對(duì)于不同規(guī)模的卷積都是適應(yīng)的。第一層的計(jì)算效率之所以會(huì)略微偏低,是因?yàn)檩敵鐾ǖ老啾扔诜謮K方法中所提出的基本塊輸出通道分割基數(shù)48偏小,需要填充較多冗余。

        4.3 在不同核數(shù)時(shí)計(jì)算效率及擴(kuò)展效率評(píng)估分析

        在深度學(xué)習(xí)應(yīng)用中,由于特征圖像和權(quán)值數(shù)據(jù)過(guò)大,無(wú)法在片上進(jìn)行存儲(chǔ),當(dāng)計(jì)算峰值和帶寬不匹配時(shí),即當(dāng)帶寬不足時(shí),會(huì)影響其計(jì)算性能和計(jì)算效率。為此,特別設(shè)計(jì)不同的數(shù)據(jù)訪存方式和多核方案,為了驗(yàn)證帶寬受限情況下本文方法的有效性,本節(jié)選取了不同核數(shù)進(jìn)行了計(jì)算效率評(píng)估和擴(kuò)展效率評(píng)估,結(jié)果如圖8所示。

        圖8 不同核數(shù)時(shí)卷積計(jì)算效率和擴(kuò)展效率Fig.8 Convolution calculation efficiency and scalability efficiency with different cores

        首先,選取和上節(jié)相同的典型卷積層進(jìn)行Conv1×1的多核測(cè)試,分別測(cè)試1、2、4、8核的計(jì)算效率以及擴(kuò)展效率。實(shí)驗(yàn)結(jié)果表明: 隨著核數(shù)的增加,本文的計(jì)算效率在降低,以第一個(gè)卷積為例,其1核、2核、4核和8核的計(jì)算效率分別為64.95%、57.18%、46.78%和31.41%,其2核、4核和8核的擴(kuò)展效率為88.04%、72.02%和48.36%。可見(jiàn),2核時(shí)帶寬影響較小,其擴(kuò)展效率較高,隨著核數(shù)變多,計(jì)算峰值提升,而帶寬壓力變大,其擴(kuò)展效率就逐步降低,但8核時(shí)仍能保持31.41%的計(jì)算效率。

        其次,采用同樣的實(shí)驗(yàn)方法對(duì)Conv3×3進(jìn)行了測(cè)評(píng)。實(shí)驗(yàn)結(jié)果表明: 隨著核數(shù)的增加,本文的計(jì)算效率逐步降低,以第二個(gè)卷積為例,其1核、2核、4核和8核的計(jì)算效率分別為50.01%、44.27%、38.21%和26.93%,擴(kuò)展效率分別為100%、88.52%、76.42%和53.86%。Conv3×3的評(píng)估結(jié)果同樣表明: 隨著核數(shù)提升,由于帶寬的影響,計(jì)算效率會(huì)降低,但8核的計(jì)算峰值仍能保持26.93%的計(jì)算效率。

        4.4 在不同卷積規(guī)模下不同平臺(tái)性能對(duì)比分析

        為了對(duì)比不同平臺(tái)上的性能,選擇E5-2640 CPU作為對(duì)比平臺(tái)。在實(shí)驗(yàn)時(shí),為了保持結(jié)果的可靠性,本文設(shè)置batchsize為32,在FT-M7032上,N4則為8,即單簇執(zhí)行32幅圖的性能。圖9展示了在不同卷積規(guī)模下E5-2640 CPU和FT-M7032平臺(tái)上的執(zhí)行時(shí)間,其中執(zhí)行時(shí)間是指32幅的總計(jì)執(zhí)行時(shí)間。從圖中可以看出,在FT-M7032上的卷積實(shí)現(xiàn)時(shí)間能夠達(dá)到E5-2640的1.52~8.22倍,這個(gè)結(jié)果驗(yàn)證了本文方法的有效性。

        圖9 不同平臺(tái)上不同卷積規(guī)模性能對(duì)比Fig.9 Performance comparison of different convolution scales on different platforms

        4.5 在典型網(wǎng)絡(luò)上的相關(guān)工作對(duì)比

        4.5.1 典型網(wǎng)絡(luò)在不同平臺(tái)上的性能對(duì)比

        在本小節(jié),將采用典型網(wǎng)絡(luò)ResNet50模型進(jìn)行測(cè)評(píng)。在ResNet50中,核為7×7的卷積(Conv7×7)采用與Conv3×3相類似的方式實(shí)現(xiàn),全連接層采用與Conv1×1相類似的方式實(shí)現(xiàn),池化層同樣根據(jù)類似的設(shè)計(jì)理念進(jìn)行了優(yōu)化實(shí)現(xiàn),卷積計(jì)算后緊跟批量歸一化(batch normalization, BN)和ReLu操作,包括Conv1×1、Conv3×3和Conv7×7。為了提高網(wǎng)絡(luò)的效率,將BN、ReLu和卷積計(jì)算融合在一起,卷積計(jì)算之后的輸出數(shù)據(jù)不立即存回AM空間,在寄存器中繼續(xù)做BN和ReLu計(jì)算,ReLu計(jì)算之后將數(shù)據(jù)傳輸?shù)紸M和核外。該處理能減少輸入輸出數(shù)據(jù)的通信次數(shù)和時(shí)間,提高計(jì)算性能。面向典型卷積神經(jīng)網(wǎng)絡(luò)與通用平臺(tái)性能對(duì)比結(jié)果見(jiàn)表1,基于FT-M7032所實(shí)現(xiàn)的ResNet50模型在batchsize為32的情況下,相比于E5-2640 CPU有5.39倍的加速比,其中E5-2640 CPU上的執(zhí)行時(shí)間是基于PyTorch架構(gòu)測(cè)試獲得的。

        表1 面向典型卷積神經(jīng)網(wǎng)絡(luò)與通用平臺(tái)性能對(duì)比

        4.5.2 擴(kuò)展效率對(duì)比

        為了進(jìn)一步展現(xiàn)本文工作的有效性,本文方法與文獻(xiàn)[15]的方法進(jìn)行了擴(kuò)展效率的比較,見(jiàn)表2,文獻(xiàn)[15]僅選用ResNet50中的Conv1×1作為測(cè)試對(duì)象,因此比較時(shí)本文同樣選取Conv1×1作為對(duì)比對(duì)象。從表2數(shù)據(jù)可知,本文方法的擴(kuò)展效率略有優(yōu)勢(shì)。關(guān)于計(jì)算性能,文獻(xiàn)[15]中,面向Conv1×1,其性能相比于同平臺(tái)的Caffe架構(gòu)獲得1.16~3.79倍的性能加速,其文中無(wú)絕對(duì)時(shí)間。而本文所測(cè)完整ResNet50相比于E5-2650有5.39倍的加速比。因此,由于平臺(tái)的差異性,無(wú)法進(jìn)行絕對(duì)的對(duì)比。

        表2 面向典型卷積神經(jīng)網(wǎng)絡(luò)與相關(guān)工作擴(kuò)展效率對(duì)比Tab.2 Scalability efficiency comparison with related work for typical convolutional neural network

        5 結(jié)論

        本文針對(duì)FT-M7032異構(gòu)多核DSP體系結(jié)構(gòu)和卷積計(jì)算的特點(diǎn),分析并行機(jī)理,針對(duì)不同的卷積規(guī)模設(shè)置了不同的多核并行優(yōu)化方案和核內(nèi)優(yōu)化方法,針對(duì)Conv1×1提出了特征圖級(jí)多核并行方案,針對(duì)核大于1×1的卷積提出了窗口級(jí)多核并行優(yōu)化設(shè)計(jì),同時(shí)提出了逐元素向量化計(jì)算的核內(nèi)并行優(yōu)化實(shí)現(xiàn)。實(shí)驗(yàn)結(jié)果表明: 并行優(yōu)化方法單核計(jì)算效率最高能達(dá)到64.95%,在帶寬受限的情況下,多核并行擴(kuò)展效率可達(dá)到48.36%~88.52%,在典型網(wǎng)絡(luò)ResNet50上的執(zhí)行性能與E5-2640 CPU相比,獲得了5.39倍加速。該項(xiàng)研究工作對(duì)于推動(dòng)國(guó)產(chǎn)自主DSP芯片在智能領(lǐng)域的應(yīng)用具有重要意義。

        致謝

        感謝FT-M7032設(shè)計(jì)團(tuán)隊(duì)對(duì)于本文工作的大力支持。

        猜你喜歡
        效率特征優(yōu)化
        超限高層建筑結(jié)構(gòu)設(shè)計(jì)與優(yōu)化思考
        民用建筑防煙排煙設(shè)計(jì)優(yōu)化探討
        關(guān)于優(yōu)化消防安全告知承諾的一些思考
        一道優(yōu)化題的幾何解法
        提升朗讀教學(xué)效率的幾點(diǎn)思考
        甘肅教育(2020年14期)2020-09-11 07:57:42
        如何表達(dá)“特征”
        不忠誠(chéng)的四個(gè)特征
        抓住特征巧觀察
        跟蹤導(dǎo)練(一)2
        “錢”、“事”脫節(jié)效率低
        国产成人高清视频在线观看免费 | 午夜理论片日本中文在线| аⅴ天堂中文在线网| 东京热加勒比无码少妇| 亚洲中文字幕在线爆乳| 日本岛国视频在线观看一区二区| 日本二一三区免费在线| 亚洲va中文字幕| 中文毛片无遮挡高潮| 国产精品三级国产精品高| 久久精品亚洲熟女av蜜謦| 久久99精品久久久久久秒播| 亚洲国产美女精品久久| 久久精品av一区二区免费| 免费人成视频网站网址| 国产精品久久久久久亚洲av| 亚洲中文字幕无码二区在线| 漂亮人妻被强中文字幕乱码| 国内永久福利在线视频图片| 全球av集中精品导航福利| 日本高清一区二区不卡视频| 男人天堂插插综合搜索| 人人妻人人澡人人爽超污| 性饥渴艳妇性色生活片在线播放| aⅴ色综合久久天堂av色综合| 亚洲无人区乱码中文字幕能看| 乱子伦在线观看| 9999精品视频| 国产精品亚洲最新地址| 国产av一区二区三区无码野战| 亚洲成a人片在线观看无码| 亚欧视频无码在线观看| 成人自拍一二在线观看| 朝鲜女人大白屁股ass| 精品国产福利久久久| 国产一区二区三区中出| 乱中年女人伦| 免费观看国产精品| 69精品人妻一区二区| 午夜精品久久久久久久久| 国产成人无码精品午夜福利a |