鄧文齊,鄭啟龍,盛 鑫,楊振浩
(中國(guó)科學(xué)技術(shù)大學(xué) 計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,合肥 230027)
在很多的嵌入式系統(tǒng)應(yīng)用中,都有實(shí)現(xiàn)人工智能任務(wù)的需求,如[10,11].近年來深度學(xué)習(xí)在圖像識(shí)別、語音識(shí)別和自然語言處理等領(lǐng)域取得了非常出色的成果[9].深度學(xué)習(xí)的成功給嵌入式系統(tǒng)中的人工智能應(yīng)用帶來了新的發(fā)展機(jī)遇.在這些應(yīng)用中改用深度學(xué)習(xí)的方法,勢(shì)必將大幅提升應(yīng)用的性能.此外,智能硬件的發(fā)展火熱,無人機(jī)、智能機(jī)器人、可穿戴設(shè)備等,這些應(yīng)用更加需要深度學(xué)習(xí)技術(shù)的支撐.
嵌入式系統(tǒng)部署深度學(xué)習(xí)模型的其中一個(gè)難點(diǎn)是,深度學(xué)習(xí)所需的運(yùn)算量很大,大部分嵌入式處理器無法滿足它的性能要求.BWDSP*http://www.cetc38.com.cn/38/335804/335809/377610/index.html系列處理器是基于分簇架構(gòu)32位DSP處理器,它的指令系統(tǒng)支持VLIW和SIMD類型的操作,最高能達(dá)到30GOPS和8GFMAC的運(yùn)算能力,它的架構(gòu)和計(jì)算能力很適合處理深度學(xué)習(xí)任務(wù).卷積神經(jīng)網(wǎng)絡(luò)[12]是目前性能最好、最流行的深度學(xué)習(xí)算法之一[4],論文[7]證明了卷積神經(jīng)網(wǎng)絡(luò)中,卷積操作占據(jù)超過90%的總計(jì)算時(shí)間.因此本文基于BWDSP處理器,對(duì)多簇架構(gòu)處理器中的卷積并行計(jì)算算法進(jìn)行了研究.結(jié)合該系列處理器的架構(gòu)和深度學(xué)習(xí)計(jì)算的特點(diǎn)設(shè)計(jì)了一個(gè)算法,通過性能測(cè)試,表明該算法的在BWDSP的運(yùn)算速度是目前較常用的GEMM(General Matrix Multiplication)算法的9.5倍和基于常規(guī)向量化思路實(shí)現(xiàn)的算法的5.7倍.在大規(guī)模的輸入下,算法的性能為2.27GMACS.
目前,也有很多研究者對(duì)采用硬件加速器加速卷積神經(jīng)網(wǎng)絡(luò)的計(jì)算進(jìn)行了研究.這些加速器使用FPGA[5]或ASIC[3,4]來實(shí)現(xiàn)特殊的卷積計(jì)算算法.這些算法在它們的硬件平臺(tái)運(yùn)行的性能優(yōu)于本算法在BWDSP上運(yùn)行的性能,這主要是因?yàn)檫@些加速度器的主要目標(biāo)是彌補(bǔ)服務(wù)器上通用處理器的不足,采用的計(jì)算部件(如乘法器)的數(shù)量遠(yuǎn)多于本文使用的處理器中的數(shù)目.通過對(duì)比一些基于FPGA實(shí)現(xiàn)的系統(tǒng),本文設(shè)計(jì)算法的等效計(jì)算資源的平均性能是它們?cè)O(shè)計(jì)的硬件算法的1.63倍到10.85倍.
本文的主要貢獻(xiàn)有:針對(duì)分簇架構(gòu)處理器的架構(gòu)特點(diǎn),設(shè)計(jì)了適合該架構(gòu)的卷積并行算法;提出了一種基于雙總線的數(shù)據(jù)內(nèi)存布局方式,在提高訪存帶寬的同時(shí),避免內(nèi)存的浪費(fèi).本文的剩下部分的結(jié)構(gòu)如下:第2節(jié)主要介紹了多簇處理器BWDSP的結(jié)構(gòu)特征和性能指標(biāo);第3節(jié)介紹了卷積的計(jì)算公式、常規(guī)卷積計(jì)算方式的不足和本文提出的卷積計(jì)算算法及基于雙總線的訪存優(yōu)化;第4節(jié)是性能測(cè)試和結(jié)果分析;第5節(jié)是對(duì)本文的工作總結(jié).
BWDSP系列處理器由中國(guó)電子科技集團(tuán)公司第三十八所研制的分簇架構(gòu)的 32位DSP處理器,架構(gòu)如圖1.該系列芯片有4個(gè)簇,每個(gè)簇有4個(gè)支持MAC操作的乘法器和8個(gè)ALU.該DSP采用了可讀性非常強(qiáng)的指令系統(tǒng),它的指令系統(tǒng)支持最多16發(fā)射的VLIW,并且大部分指令都是SIMD指令,可以通過在指令前添加簇的編號(hào)的組合,同時(shí)讓多個(gè)簇執(zhí)行相同的操作,因此通過指令的簇前綴組合的指令和多條指令組成一條指令行,這些乘法器和ALU在沒有資源沖突的情況下,可以完全并行的運(yùn)行.例如指令XYZTMACC0+=R13*R9‖XYZTMACC1+= R13*R10‖XYZTMACC2+=R13*R11‖XYZTMACC3+=R13*R12,X、Y、Z、T是簇的編號(hào),MACC0、MACC1、MACC2、MACC3是標(biāo)識(shí)簇中執(zhí)行乘累加操作的不同乘法器.該指令可以同時(shí)讓4個(gè)簇中共16個(gè)乘法器同時(shí)執(zhí)行累加操作.處理器最大的工作頻率為500Mhz,能達(dá)到30GOPS和8GFMAC的運(yùn)算能力,被廣泛的應(yīng)用于雷達(dá)、通信保障和圖像處理等各種高性能計(jì)算領(lǐng)域.

圖1 BWDSP1042的結(jié)構(gòu)框圖Fig.1 Architecture of BWDSP1042
BWDSP處理器按字存儲(chǔ),內(nèi)部集成3個(gè)地址發(fā)生器U、V、W,支持單雙字尋址;內(nèi)部提供了2條讀總線和1條寫總線,總線的位寬為256位.雙字訪指令XYZTR14:13=[U1+=4,1]‖XYZTR16:15=[V1+=4,1],的基址U1、V1位于不同的內(nèi)存Block時(shí),可以同時(shí)讀取2組,每組4個(gè)等間距的雙字,總共16字,用于分發(fā)給4個(gè)簇.BWDSP處理器的32位地址線提供了1.75G的尋址能力,提供了8個(gè)高速Link口、1個(gè)并行口、和一個(gè)DDR2接口.能夠滿足多DSP高速互連和外接高速存內(nèi)存的需求.
卷積層是卷積神經(jīng)網(wǎng)絡(luò)的核心,它通過在輸入上使用滑動(dòng)的窗口濾波器,在局部提取更抽象的特征,用于網(wǎng)絡(luò)的下一層的特征提取或最終的分類.卷積層的輸入和輸出是三維的張量,這三維分別被稱為輸入(輸出)通道,長(zhǎng)和寬.卷積層的參數(shù)由一組濾波器組成,每個(gè)濾波器的大小為Kx*Ky,這些濾波器分別在每個(gè)輸入通道中的長(zhǎng)和寬方向上滑動(dòng),計(jì)算濾波器和當(dāng)前濾波所覆蓋的輸入的二維區(qū)域的點(diǎn)積,所有輸入通道上相同位區(qū)域計(jì)算的點(diǎn)積的累加和作為一個(gè)輸出元素,每個(gè)輸出的元素的具體計(jì)算公式如下[3]:
in(fi,x+Kx,y+Ky)
(1)
其中Nfi為輸入通道數(shù),對(duì)應(yīng)的有輸出通道數(shù)Nfo.Kx、Ky是濾波器窗口的長(zhǎng)和寬.in(fi,x,y)某個(gè)輸入元素;out(fo,x,y)某個(gè)輸出元素.f為的濾波器組,稱為卷積核.在計(jì)算某個(gè)輸出通道上的輸出時(shí),每個(gè)輸入通道上使用了不同的二維濾波器,而輸入通道一般情況有多個(gè),因此卷積核為四維張量,f(fi,fo,Kx,Ky)表示在計(jì)算輸出通道fo上的輸出時(shí),在輸入通道fi上,使用的濾波器中的參數(shù)值.
在很多基于CPU或GPU深度學(xué)習(xí)庫(kù)中,如cuDNN[8],都是采用基于GEMM的算法來實(shí)現(xiàn)卷積的計(jì)算.見圖2,Fm是卷積核展開形成的矩陣,Dm是根據(jù)卷公式(1)和Fm中每行中卷積核元素的位置,在每一列的對(duì)應(yīng)位置放置特定的輸入元素.這樣Fm的某一行的向量和Dm的某一列的向量的點(diǎn)積對(duì)應(yīng)卷積的某個(gè)輸出元素.通過矩陣相乘,可以并行計(jì)算所有的輸出元素.該算法需要額外的數(shù)據(jù)讀寫操作把輸入和卷積核展開成矩陣.在處理能力有限的處理器中,對(duì)性能影響很大.因此需要設(shè)計(jì)適合BWDSP的卷積計(jì)算算法.

圖2 基于GEMM的卷積計(jì)算算法Fig.2 GEMM convolution computing algorithm
由公式(1),可以得到卷積的基本代碼,見下頁(yè)圖3.在內(nèi)三層循環(huán)中變量out(fo,x,y)存在到自身的流依賴,不能直接進(jìn)行向量化.但可以注意到,out(fo,x,y)是一個(gè)規(guī)約變量,這類程序的編譯優(yōu)化會(huì)把out(fo,x,y)看成一個(gè)向量,向量中的每個(gè)元素分別保存部分累加和.這樣部分累加和的計(jì)算可以并行的進(jìn)行,在循環(huán)的結(jié)束后,把向量中的元素進(jìn)行規(guī)約求和得到最終的結(jié)果.基于這種思路,在BWDSP上實(shí)現(xiàn)卷積層最直觀的方法是,把內(nèi)3層循環(huán)展開,采用多個(gè)乘法器分別計(jì)算部分累加和,最后把部分結(jié)果匯集到一起,進(jìn)行累加.偽代碼如圖4的算法1,算法1每次分別將輸入和卷積核的16的元素分發(fā)到4個(gè)簇上,然后16個(gè)乘法器同時(shí)進(jìn)行乘累加操作,中間結(jié)果暫時(shí)保存在乘累加寄存器中,用于在下次循環(huán)進(jìn)行乘累加操作.在完成了所有的乘累加操作后,由于部分結(jié)果分散在不同簇的不同乘法器的累加寄存器中,為了得到最終的結(jié)果,需要額外的規(guī)約操作,把每個(gè)簇的內(nèi)部部分和進(jìn)行累加操作,再把累加和的值傳輸?shù)絏簇,進(jìn)行累加計(jì)算最后的結(jié)果.

1for(intfo=0;fo 圖3 卷積計(jì)算的偽代碼Fig.3 Pseudo code for convolution computing 圖4 算法1 使用向量化的卷積計(jì)算算法 在卷積神經(jīng)網(wǎng)絡(luò)中,卷積層中輸入和輸出的規(guī)模非常大.算法1在計(jì)算每個(gè)輸出時(shí),除了使用Nfi*Kx*Ky次乘累加操作外,還需要進(jìn)行額外的規(guī)約操作.因此卷積計(jì)算中的規(guī)約操作的總耗時(shí)是相當(dāng)大的,這會(huì)對(duì)卷積層的計(jì)算性能造成很大的影響.不同于算法1,本文了采用粗粒度的并行方式來卷積層的計(jì)算,如圖5的算法2.由于在外三層循環(huán)上,變量是不存在依賴關(guān)系的,因此算法選擇在第三層循環(huán)進(jìn)行向量化處理,在數(shù)據(jù)分發(fā)時(shí),擴(kuò)大讀取的間隔,分別讀取16個(gè)滑動(dòng)窗口中的輸入到寄存器XYZTR0-3,并且每個(gè)乘法器單獨(dú)負(fù)責(zé)一個(gè)輸出結(jié)果的計(jì)算,這樣每個(gè)乘法器的計(jì)算完全獨(dú)立、進(jìn)行的操作也完全相同,可以使用VLIW和SIMD指令使乘法器的計(jì)算并行,消除了算法的冗余規(guī)約操作.算法2只需要Nfi*Kx*Ky次乘累加操來完成每個(gè)輸出的計(jì)算,并且相對(duì)算法1,除了讀取的操作數(shù)的方式不同外,讀取和存儲(chǔ)數(shù)的指令數(shù)目沒有增加,算法2在數(shù)據(jù)存取和計(jì)算中也沒有引入冗余操作. 1for(intfo=0;fo 圖5 算法2 BWDSP中的卷積計(jì)算算法 本文使用16個(gè)乘法器同時(shí)計(jì)算卷積層輸出的同一行的16個(gè)結(jié)果.在DSP處理器中特別優(yōu)化了乘累加操作,BWDSP的乘法器可以一個(gè)時(shí)鐘周期內(nèi)完成乘累加操作,因此使用乘累加操作進(jìn)行最內(nèi)層循環(huán)中的計(jì)算.由于每個(gè)乘法器每次計(jì)算時(shí)需要的核的參數(shù)值相同,所以每個(gè)簇可以共享讀取的參數(shù),減少計(jì)算對(duì)內(nèi)存帶寬的需求.在常規(guī)的計(jì)算時(shí),核的窗口大小是不確定的,仍然需要使用6層循環(huán)來實(shí)現(xiàn)計(jì)算.然而,在卷積神經(jīng)網(wǎng)絡(luò)中,采用的核的窗口大小不會(huì)太大,而且長(zhǎng)和寬相等.針對(duì)這些常用大小的核,本文設(shè)計(jì)了特殊版本的卷積程序.在這些版本中,能把最內(nèi)2層的循環(huán)展開,這樣不僅能減少的條件跳轉(zhuǎn)指令的使用.而且,在常規(guī)版本的程序中,最內(nèi)層循環(huán)中每個(gè)乘法器只進(jìn)行一次計(jì)算,這樣每次只能讀取一個(gè)參數(shù),讀取指令不能發(fā)揮讀取總線最大帶寬.而通過循環(huán)展開后,讀取指令可以一次讀取多個(gè)參數(shù)用于展開后循環(huán)內(nèi)的多次計(jì)算,提高帶寬利用率. 圖6 卷積中輸入的內(nèi)存布局Fig.6 Memory layout of convolution′s input 在BWDSP中,有2個(gè)最大帶寬為8個(gè)字的讀數(shù)據(jù)總線和3個(gè)內(nèi)存block,由于相鄰滑動(dòng)窗口的間隔是相等的,本文使用2個(gè)指針,利用雙讀取總線同時(shí)讀取等間隔的16個(gè)字的輸入,每條總線負(fù)責(zé)讀取8個(gè)字,用于同一行16相鄰輸出的計(jì)算.但當(dāng)2個(gè)讀數(shù)據(jù)總線的讀取地址落在同一個(gè)block時(shí),2個(gè)總線的讀取不能并行進(jìn)行,而數(shù)據(jù)通常存儲(chǔ)在一塊連續(xù)的內(nèi)存中,造成讀取數(shù)據(jù)時(shí)會(huì)發(fā)生訪存沖突,實(shí)際上并不能發(fā)揮雙讀取總線的優(yōu)勢(shì).為了能在計(jì)算中發(fā)揮最大讀取帶寬,可以把數(shù)據(jù)同時(shí)存放在2個(gè)block中,每個(gè)指針從不同的block上讀取輸入.但是這樣會(huì)占用非常多的內(nèi)存,實(shí)際上,每個(gè)指針為不同的輸出區(qū)域的計(jì)算提供輸入時(shí),這2部分的計(jì)算分別只讀取了一半左右的輸入數(shù)據(jù),所以存放在每個(gè)block中的數(shù)據(jù)有一半的數(shù)據(jù)是不會(huì)在計(jì)算中被利用的.造成了非常大內(nèi)存的浪費(fèi).因此,本系統(tǒng)設(shè)計(jì)了特殊的數(shù)據(jù)內(nèi)存布局方式,在這種布局方式中,數(shù)據(jù)按一定間隔進(jìn)行劃分,如圖6所示,每個(gè)block只存儲(chǔ)某指針需要讀取的那部分輸入,這樣能發(fā)揮最大的讀取帶寬和避免內(nèi)存的浪費(fèi). 本文分別對(duì)了基于GEMM算法、圖4中算法1和圖5中算法2在BWDSP1042上進(jìn)行了實(shí)現(xiàn)和測(cè)試.測(cè)試結(jié)果表明,算法2的平均計(jì)算速度分別是GEMM算法的9.5倍和算法1的5.7倍.接著測(cè)試了算法2在大規(guī)模輸入情況下的性能,隨著輸入規(guī)模不斷增大,算法2的性能逐漸保持在 2.27GMACS左右.為了與采用FPGA硬件實(shí)現(xiàn)的卷積計(jì)算算法性能比較,本文分析了這些系統(tǒng)采用的算法和本文基于BWDSP實(shí)現(xiàn)的算法2的等效計(jì)算資源的平均性能,結(jié)果表明,算法2的等效計(jì)算資源的平均性能是它們?cè)O(shè)計(jì)的硬件算法的1.63倍到10.85倍. 圖7 BWDSP上卷積計(jì)算算法的性能測(cè)試Fig.7 Convolution Computing Algorithms′ Benchmark on BWDSP 測(cè)試所用的測(cè)試硬件平臺(tái)是BWDSP1042,處理器的工作頻率為時(shí)鐘頻率為500M.輸入和卷積核的大小分別為Nif*17*2和Nif*2*2*1,通過不斷增大輸入通道數(shù)Nif,來增大輸入規(guī)模,測(cè)試結(jié)果見圖7.由圖可知,算法2算法最優(yōu),算法2的平均計(jì)算速度分別是GEMM算法的9.5倍和算法1的5.7倍,算法1的性能較差的原因除了計(jì)算中引入為規(guī)約操作之外,讀取的卷積核也無法被簇中的乘法器共享,另一方面,算法1的計(jì)算所需的數(shù)據(jù)讀取方式,很難滿足等間隔8個(gè)字的讀取的模式,無法達(dá)到最大帶寬.GEMM算法的性能最差,這是因?yàn)樵谟?jì)算之前,GEMM需要花費(fèi)大量的內(nèi)存讀寫指令來構(gòu)造矩陣.隨著輸入規(guī)模的不斷增大,構(gòu)建矩陣的時(shí)間消耗越來越多,大大的影響了算法的性能. 接著,測(cè)試在大規(guī)模輸入情況下算法2的性能,結(jié)果見圖8.由圖8可知,隨著輸入規(guī)模的增大,算法的計(jì)算性能逐漸保持在2.27GMACS左右. 圖8 算法2的性能Fig.8 Performance of Alg.2 目前,也有很多研究者對(duì)采用硬件加速器加速卷積神經(jīng)網(wǎng)絡(luò)的計(jì)算進(jìn)行了研究,使用FPGA設(shè)計(jì)了特殊的卷積計(jì)算算法.這些加速器使用的硬件平臺(tái)和本文中存在著很大的差異,并且不同的加速器使用FPGA平臺(tái)也不同,很難直觀地比較這些卷積計(jì)算算法的性能差異.本文采用[5]中的方法,比較了各個(gè)算法的計(jì)算資源的平均性能.硬件加速器通常只測(cè)試卷積神經(jīng)網(wǎng)絡(luò)的整體計(jì)算性能,因?yàn)榫矸e操作占據(jù)超過卷積神經(jīng)網(wǎng)絡(luò)90%的總計(jì)算時(shí)間,為了對(duì)比算法2和基于FPGA的硬件加速器實(shí)現(xiàn)的卷積計(jì)算算法的性能,本文用它們計(jì)算卷積神經(jīng)網(wǎng)絡(luò)的性能表示它們的卷積計(jì)算算法的性能,見表1.這些算法在它們的硬件平臺(tái)運(yùn)行的性能比本算法在BWDSP上運(yùn)行的性能好.主要的原因之一是這些系統(tǒng)的主要目標(biāo)是彌補(bǔ)桌面系統(tǒng)和服務(wù)器上通用處理器的不足,采用的計(jì)算部件(如乘法器)的數(shù)量遠(yuǎn)多于本系統(tǒng)使用的數(shù)目.由于FPGA主要是通過DSP slice單元來實(shí)現(xiàn)計(jì)算部件,根據(jù)[5]可知,實(shí)現(xiàn)支持乘累加操作的32位定點(diǎn)乘法器需要4個(gè)DSP Slice.為了能和這些系統(tǒng)比較計(jì)算器件的平均性能,本文把BWDSP中的乘法器數(shù)目換算成等效的DSP Slice數(shù)目,用于比較等效DSP Slice的平均性能.對(duì)比可以看出,本文設(shè)計(jì)算法的計(jì)算器件的平均性能優(yōu)于這些系統(tǒng)的,分別是它們的1.63倍、3.23倍和10.85倍. 表1 加速器的等效計(jì)算資源的平均性能比較 本文近似FPGA2015[5]ICCD2013[13]PACT2010[14]精度32位定點(diǎn)32位浮點(diǎn)32位定點(diǎn)32位定點(diǎn)硬件平臺(tái)BWDSP1042VX485TVLX240TSX240T測(cè)試性能2.27GMACS61.62GFLOPS8.5GMACS3.5GMACSDSPSlice數(shù)64(等效)280028001056DSPSlic3.58E-022.20E-021.11E-020.33E-02平均性能GMACSGFLOPSGMACSGMACS 深度學(xué)習(xí)的迅速發(fā)展對(duì)嵌入式系統(tǒng)智能化需求的帶來了新等機(jī)遇和挑戰(zhàn).本文基于多簇架構(gòu)的數(shù)字信號(hào)處理器BWDSP,對(duì)卷積神經(jīng)網(wǎng)絡(luò)中計(jì)算量90%以上卷積計(jì)算的并行算法進(jìn)行了研究和實(shí)現(xiàn).性能測(cè)試表明,本文設(shè)計(jì)的算法的性能是常規(guī)的GEMM算法的9.5倍和向量化算法的5.7倍.能達(dá)到2.27GMACS.對(duì)比基于FPGA實(shí)現(xiàn)的卷積計(jì)算的硬件算法,該算法的計(jì)算器件的平均性能是它們的1.63倍到10.85倍. 在一個(gè)典型的卷積神經(jīng)網(wǎng)絡(luò),除了卷積操作,還有其他的操作,未來的主要工作是在BWDSP處理器上實(shí)現(xiàn)深度學(xué)習(xí)算法庫(kù),用于在該處理器上構(gòu)建卷積神經(jīng)網(wǎng)路加速器. [1] He K,Zhang X,Ren S,et al.Deep residual learning for image recognition[C].Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,2016:770-778. [2] Gu J,Wang Z,Kuen J,et al.Recent advances in convolutional neural networks[J].ArXiv Preprint ArXiv:1512.07108,2015. [3] Chen T,Du Z,Sun N,et al.Diannao:a small-footprint high-throughput accelerator for ubiquitous machine-learning[C].ACM Sigplan Notices,ACM,2014,49(4):269-284. [4] Chen Y,Luo T,Liu S,et al.Dadiannao:a machine-learning supercomputer[C].Proceedings of the 47th Annual IEEE/ACM International Symposium on Microarchitecture,IEEE Computer Society,2014:609-622. [5] Zhang C,Li P,Sun G,et al.Optimizing fpga-based accelerator design for deep convolutional neural networks[C].Proceedings of the 2015 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays,ACM,2015:161-170. [6] Szegedy C,Liu W,Jia Y,et al.Going deeper with convolutions[C].Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,2015:1-9. [7] Ji S,Xu W,Yang M,et al.3D convolutional neural networks for human action recognition[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2013,35(1):221-231. [8] Chetlur S,Woolley C,Vandermersch P,et al.cudnn:Efficient primitives for deep learning[J].ArXiv Preprint Xiv:1410.0759,2014. [9] Bengio Y,Courville A,Vincent P.Representation learning:a review and new perspectives[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2013,35(8):1798-1828. [10] Kamijo S,Matsushita Y,Ikeuchi K,et al.Traffic monitoring and accident detection at intersections[J].IEEE Transactions on Intelligent Transportation Systems,2000,1(2):108-118. [11] Roux S,Mamalet F,Garcia C.Embedded convolutional face finder[C].2006 IEEE International Conference on Multimedia and Expo.IEEE,2006:285-288. [12] LeCun Y,Bottou L,Bengio Y,et al.Gradient-based learning applied to document recognition[J].Proceedings of the IEEE,1998,86(11):2278-2324. [13] Peemen M,Setio A A A,Mesman B,et al.Memory-centric accelerator design for convolutional neural networks[C].IEEE 31st International Conference on Computer Design (ICCD),IEEE,2013:13-19. [14] Cadambi S,Majumdar A,Becchi M,et al.A programmable parallel accelerator for learning and classification[C].Proceedings of the 19th International Conference on Parallel Architectures and Compilation Echniques(PACT),ACM,2010:273-284.
Fig.4 Alg.1 vectorized convolution parallel algorithm
Fig.5 Alg.2 convolution parallel algorithm used in BWDSP3.4 基于雙總線的讀取帶寬的優(yōu)化

4 性能測(cè)試與分析


Table 1 Comparison of equivalent computing recourses′ averaging performance
5 總結(jié)和未來的工作