本發(fā)明涉及大規(guī)模神經(jīng)網(wǎng)絡(luò)計(jì)算技術(shù)領(lǐng)域,尤其涉及一種基于向量處理器的深度神經(jīng)網(wǎng)絡(luò)多核加速實(shí)現(xiàn)方法。
背景技術(shù):
深度神經(jīng)網(wǎng)絡(luò)dnn(deepneuralnetwork,dnn)主要是指一種含有多個(gè)隱藏層的全連接神經(jīng)網(wǎng)絡(luò),其中相鄰層之間全連接、層內(nèi)無(wú)連接,是深度學(xué)習(xí)中的一種重要神經(jīng)網(wǎng)絡(luò)模型。如圖1所示,dnn模型一般有3層以上,每層的計(jì)算節(jié)點(diǎn)也有很多,相鄰層的計(jì)算模型可以抽象成一個(gè)矩陣向量乘法操作,模型通過(guò)bp(backpropagation,bp)算法進(jìn)行訓(xùn)練。
由于深度神經(jīng)網(wǎng)絡(luò)模型往往有多層且每層有大量的節(jié)點(diǎn),因此其計(jì)算屬于典型的計(jì)算密集型,采用單核系統(tǒng)計(jì)算大規(guī)模多層的神經(jīng)網(wǎng)絡(luò),往往不能取得很好的計(jì)算效果,基于單芯片已難以滿足深度神經(jīng)網(wǎng)絡(luò)所需的高密集、實(shí)時(shí)運(yùn)算等應(yīng)用時(shí)的計(jì)算需求。
向量處理器是一種包括標(biāo)量處理部件(spu)和向量處理部件(vpu)的處理器結(jié)構(gòu),如圖2所示為一個(gè)單核向量處理器的典型結(jié)構(gòu),其中標(biāo)量處理部件負(fù)責(zé)標(biāo)量任務(wù)的計(jì)算和流控,向量處理部件負(fù)責(zé)密集型且并行程度較高的計(jì)算,包括若干向量處理單元(vpe),每個(gè)處理單元上包含豐富的運(yùn)算部件,具有非常強(qiáng)大的計(jì)算能力,可以大幅提高系統(tǒng)的計(jì)算性能。
向量處理器中向量處理部件內(nèi)包含大量的向量處理單元(pe),這些處理單元都有各自的運(yùn)算部件和寄存器,向量處理單元間則通過(guò)規(guī)約指令或混洗操作進(jìn)行數(shù)據(jù)交互,如向量處理單元之間的數(shù)據(jù)相乘、比較等;標(biāo)量處理單元主要負(fù)責(zé)流控和邏輯判斷指令的處理,以及一些標(biāo)量的數(shù)據(jù)訪問(wèn)操作、dma的數(shù)據(jù)傳輸模式的配置等,其中向量處理單元運(yùn)算所用的數(shù)據(jù)由向量數(shù)據(jù)存儲(chǔ)單元提供,標(biāo)量數(shù)據(jù)處理單元運(yùn)算所用數(shù)據(jù)由標(biāo)量數(shù)據(jù)存儲(chǔ)單元提供。
應(yīng)用向量處理器計(jì)算深度神經(jīng)網(wǎng)絡(luò),可以有效提高深度神經(jīng)網(wǎng)絡(luò)的計(jì)算性能,但是目前通過(guò)向量處理器計(jì)算深度神經(jīng)網(wǎng)絡(luò)模型時(shí),通常都是基于單核向量處理器實(shí)現(xiàn),其仍然無(wú)法很好的滿足深度神經(jīng)網(wǎng)絡(luò)所需的高密集、實(shí)時(shí)運(yùn)算等的計(jì)算需求。因此,亟需提供一種基于多核向量處理器實(shí)現(xiàn)深度神經(jīng)網(wǎng)絡(luò)方法,以提高深度神經(jīng)網(wǎng)絡(luò)在高密集、實(shí)時(shí)運(yùn)算等的計(jì)算性能。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問(wèn)題就在于:針對(duì)現(xiàn)有技術(shù)存在的技術(shù)問(wèn)題,本發(fā)明提供一種實(shí)現(xiàn)方法簡(jiǎn)單、所需成本低、能夠充分利用多核向量處理器的特性實(shí)現(xiàn)dnn的并行加速,且并行性以及加速效果好的基于向量處理器的深度神經(jīng)網(wǎng)絡(luò)多核加速實(shí)現(xiàn)方法。
為解決上述技術(shù)問(wèn)題,本發(fā)明提出的技術(shù)方案為:
一種基于向量處理器的深度神經(jīng)網(wǎng)絡(luò)多核加速實(shí)現(xiàn)方法,步驟包括:
s1.將待處理數(shù)據(jù)按一維向量輸出,并作為輸入值輸入至目標(biāo)深度神經(jīng)網(wǎng)絡(luò);
s2.由向量處理器中各個(gè)核依次計(jì)算目標(biāo)深度神經(jīng)網(wǎng)絡(luò)中相鄰兩個(gè)隱層的權(quán)值矩陣,每次計(jì)算時(shí),將輸入值廣播至各個(gè)核內(nèi)的標(biāo)量存儲(chǔ)體中,同時(shí)加載相鄰兩個(gè)隱層的權(quán)值矩陣,將加載的所述權(quán)值矩陣進(jìn)行劃分后分別傳輸至各個(gè)核內(nèi)的向量存儲(chǔ)體中,啟動(dòng)各個(gè)核并行計(jì)算后得到多個(gè)向量計(jì)算結(jié)果并作為下一次計(jì)算的輸入值。
作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟s2中每次計(jì)算時(shí),具體通過(guò)啟動(dòng)dma的廣播傳輸模式,將輸入值廣播至各個(gè)核內(nèi)的標(biāo)量存儲(chǔ)體中。
作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟s2中每次計(jì)算時(shí),將加載的所述權(quán)值矩陣進(jìn)行劃分后,具體通過(guò)啟動(dòng)各個(gè)核dma點(diǎn)對(duì)點(diǎn)傳輸方式,將劃分后權(quán)值矩陣分別傳輸至各個(gè)核內(nèi)的向量存儲(chǔ)體中。
作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟s2中每次計(jì)算時(shí),得到多個(gè)向量計(jì)算結(jié)果后,具體通過(guò)啟動(dòng)各個(gè)核的dma將得到的多個(gè)向量計(jì)算結(jié)果輸出至外部ddr中。
作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟s2中每次計(jì)算時(shí),具體將加載的所述權(quán)值矩陣按列平均劃分成多份。
作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟s2中每次計(jì)算時(shí),得到多個(gè)向量計(jì)算結(jié)果后還包括由各個(gè)核對(duì)得到的所述向量計(jì)算結(jié)果進(jìn)行激活函數(shù)處理,得到最終的向量計(jì)算結(jié)果步驟。
作為本發(fā)明的進(jìn)一步改進(jìn):所述激活函數(shù)為sigmoid函數(shù)、relu函數(shù)、tanh函數(shù)中的一種。
作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟s2中每次計(jì)算前,還包括判斷當(dāng)前次所需計(jì)算的權(quán)值矩陣的狀態(tài),若判斷到滿足預(yù)設(shè)條件時(shí),直接由指定核執(zhí)行當(dāng)前權(quán)值矩陣的計(jì)算。
作為本發(fā)明的進(jìn)一步改進(jìn):所述預(yù)設(shè)條件具體為權(quán)值矩陣不能平均劃分或權(quán)值矩陣規(guī)模小于預(yù)設(shè)值。
作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟s1中具體按列或行輸出一維的向量數(shù)據(jù)作為目標(biāo)深度神經(jīng)網(wǎng)絡(luò)的輸入值。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:
1)本發(fā)明基于向量處理器的深度神經(jīng)網(wǎng)絡(luò)多核加速實(shí)現(xiàn)方法,通過(guò)多核向量處理器計(jì)算深度神經(jīng)網(wǎng)絡(luò),在每次計(jì)算相鄰兩個(gè)隱層的權(quán)值矩陣時(shí),將輸入值廣播至各個(gè)核內(nèi)的標(biāo)量存儲(chǔ)體sm中,加載的權(quán)值矩陣進(jìn)行劃分后分別傳輸至各個(gè)核內(nèi)的向量存儲(chǔ)體am中,使得待處理數(shù)據(jù)及每一層的計(jì)算結(jié)果采用標(biāo)量取,層與層之間的權(quán)值矩陣則采用向量取,能夠結(jié)合深度神經(jīng)網(wǎng)絡(luò)的計(jì)算特點(diǎn)以及多核向量處理器的結(jié)構(gòu)特性,實(shí)現(xiàn)深度神經(jīng)網(wǎng)絡(luò)多核并行加速,核與核之間可以完全不相關(guān)的執(zhí)行各自的任務(wù),實(shí)現(xiàn)方法簡(jiǎn)單、所需的實(shí)現(xiàn)成本低,且并行執(zhí)行效率高,能夠滿足大規(guī)模深度神經(jīng)網(wǎng)絡(luò)的高密集、實(shí)時(shí)運(yùn)算等計(jì)算性能需求;
2)本發(fā)明基于向量處理器的深度神經(jīng)網(wǎng)絡(luò)多核加速實(shí)現(xiàn)方法,進(jìn)一步通過(guò)在多核計(jì)算過(guò)程中配置不同的dma傳輸方式,將數(shù)據(jù)通過(guò)dma的廣播傳輸模式傳輸至標(biāo)量存儲(chǔ)體sm,通過(guò)dma點(diǎn)對(duì)點(diǎn)傳輸模式傳輸至對(duì)應(yīng)的向量存儲(chǔ)體am,能夠有效配合各核實(shí)現(xiàn)深度神經(jīng)網(wǎng)絡(luò)的并行計(jì)算;
3)本發(fā)明基于向量處理器的深度神經(jīng)網(wǎng)絡(luò)多核加速實(shí)現(xiàn)方法,進(jìn)一步基于深度神經(jīng)網(wǎng)絡(luò)的計(jì)算特點(diǎn),通過(guò)將每層計(jì)算任務(wù)進(jìn)行平均分配,結(jié)合各核的dma的相互配合,使得各核之間可以完全不相關(guān)的執(zhí)行各自的任務(wù),多核并行執(zhí)行深度神經(jīng)網(wǎng)絡(luò)計(jì)算,大大提高了深度神經(jīng)網(wǎng)絡(luò)的計(jì)算效率;
4)本發(fā)明基于向量處理器的深度神經(jīng)網(wǎng)絡(luò)多核加速實(shí)現(xiàn)方法,進(jìn)一步結(jié)合多核并行處理方式,當(dāng)權(quán)值矩陣不能平均劃分或權(quán)值矩陣規(guī)模小于預(yù)設(shè)值時(shí),直接由指定核執(zhí)行當(dāng)前權(quán)值矩陣的計(jì)算,以避免使用多核難以獲取好的加速效果,從而能夠進(jìn)一步提高整體加速效果。
附圖說(shuō)明
圖1是深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的原理示意圖。
圖2是典型的單核向量處理器的結(jié)構(gòu)示意圖。
圖3是本實(shí)施例基于向量處理器的深度神經(jīng)網(wǎng)絡(luò)多核加速實(shí)現(xiàn)方法的實(shí)現(xiàn)流程示意圖。
圖4是本實(shí)施例采用的多核向量處理器的結(jié)構(gòu)示意圖。
圖5是本實(shí)施例步驟s2多核并行執(zhí)行計(jì)算的詳細(xì)流程示意圖。
圖6是本發(fā)明具體實(shí)施例(三層全連接神經(jīng)網(wǎng)絡(luò))中深度神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)示意圖。
圖7是本發(fā)明具體實(shí)施例(三層全連接神經(jīng)網(wǎng)絡(luò))中輸入層與隱層之間權(quán)值矩陣劃分原理示意圖。
圖8是本發(fā)明具體實(shí)施例(三層全連接神經(jīng)網(wǎng)絡(luò))中單核矩陣向量乘法計(jì)算的原理示意圖。
圖9是本發(fā)明具體實(shí)施例(三層全連接神經(jīng)網(wǎng)絡(luò))中從ddr廣播至標(biāo)量存儲(chǔ)體的原理示意圖。
圖10是本發(fā)明具體實(shí)施例(三層全連接神經(jīng)網(wǎng)絡(luò))中執(zhí)行隱層與輸出層計(jì)算的原理示意圖。
具體實(shí)施方式
以下結(jié)合說(shuō)明書附圖和具體優(yōu)選的實(shí)施例對(duì)本發(fā)明作進(jìn)一步描述,但并不因此而限制本發(fā)明的保護(hù)范圍。
如圖3所示,本實(shí)施例基于向量處理器的深度神經(jīng)網(wǎng)絡(luò)多核加速實(shí)現(xiàn)方法,步驟包括:
s1.將待處理數(shù)據(jù)對(duì)輸入圖像的像素矩陣進(jìn)行預(yù)處理,按列或行輸出一維的向量數(shù)據(jù)后作為輸入值輸入至目標(biāo)深度神經(jīng)網(wǎng)絡(luò);
s2.待處理處理作為輸入值由向量處理器中各個(gè)計(jì)算核共享,各個(gè)核依次計(jì)算目標(biāo)深度神經(jīng)網(wǎng)絡(luò)中相鄰兩個(gè)隱層的權(quán)值矩陣,每次計(jì)算時(shí),將輸入值廣播至各個(gè)核內(nèi)的標(biāo)量存儲(chǔ)體sm中,同時(shí)加載相鄰兩個(gè)隱層的權(quán)值矩陣,將加載的權(quán)值矩陣進(jìn)行劃分后分別傳輸至各個(gè)核內(nèi)的向量存儲(chǔ)體am中,啟動(dòng)各個(gè)核并行計(jì)算后得到多個(gè)向量計(jì)算結(jié)果并作為下一次計(jì)算的輸入值。
本實(shí)施例中深度神經(jīng)網(wǎng)絡(luò)具體包含有一個(gè)輸入層、n個(gè)中間隱層以及一個(gè)輸出層,每層有數(shù)量不等的神經(jīng)元節(jié)點(diǎn),輸入層節(jié)點(diǎn)對(duì)應(yīng)的是輸入的待處理數(shù)據(jù),輸出層節(jié)點(diǎn)對(duì)應(yīng)為完成整個(gè)深度神經(jīng)網(wǎng)絡(luò)模型的計(jì)算結(jié)果。
本實(shí)施例上述基于多核向量處理器計(jì)算深度神經(jīng)網(wǎng)絡(luò),在每次計(jì)算相鄰兩個(gè)隱層的權(quán)值矩陣時(shí),將輸入值廣播至各個(gè)核內(nèi)的標(biāo)量存儲(chǔ)體sm中,即待處理輸入數(shù)據(jù)及每次的計(jì)算結(jié)果置入標(biāo)量存儲(chǔ)體sm中,加載的權(quán)值矩陣進(jìn)行劃分后分別傳輸至各個(gè)核內(nèi)的向量存儲(chǔ)體am中,即權(quán)值矩陣置入向量存儲(chǔ)體am中,使得待處理數(shù)據(jù)及每一層的計(jì)算結(jié)果采用標(biāo)量取,層與層之間的權(quán)值矩陣則采用向量取,核與核之間可以完全不相關(guān)的執(zhí)行各自的任務(wù),各核的計(jì)算結(jié)果再匯總輸出,實(shí)現(xiàn)深度神經(jīng)網(wǎng)絡(luò)多核并行加速。
本實(shí)施例中,步驟s2中每次計(jì)算時(shí),具體通過(guò)啟動(dòng)dma的廣播傳輸模式,將輸入值廣播至各個(gè)核內(nèi)的標(biāo)量存儲(chǔ)體sm中;將加載的權(quán)值矩陣進(jìn)行劃分后,通過(guò)啟動(dòng)各個(gè)核dma點(diǎn)對(duì)點(diǎn)傳輸方式,將劃分后權(quán)值矩陣分別傳輸至各個(gè)核內(nèi)的向量存儲(chǔ)體am中;以及得到多個(gè)向量計(jì)算結(jié)果后,通過(guò)啟動(dòng)各個(gè)核的dma將得到的多個(gè)向量計(jì)算結(jié)果輸出至外部ddr中。通過(guò)在多核計(jì)算過(guò)程中配置上述不同的dma傳輸方式,將數(shù)據(jù)通過(guò)dma的廣播傳輸模式傳輸至標(biāo)量存儲(chǔ)體sm,通過(guò)dma點(diǎn)對(duì)點(diǎn)傳輸模式傳輸至對(duì)應(yīng)的向量存儲(chǔ)體am,能夠有效配合各核實(shí)現(xiàn)深度神經(jīng)網(wǎng)絡(luò)的并行計(jì)算。
本實(shí)施例中,步驟s2中每次計(jì)算時(shí),具體將加載的權(quán)值矩陣按列平均劃分成多份,每份劃分后權(quán)值矩陣通過(guò)dma傳輸至各個(gè)核內(nèi)的向量存儲(chǔ)體am中,以將權(quán)值矩陣平均分配給各個(gè)計(jì)算核。針對(duì)深度神經(jīng)網(wǎng)絡(luò)的計(jì)算特點(diǎn),通過(guò)將每層計(jì)算任務(wù)進(jìn)行平均分配,結(jié)合各核的dma的相互配合,使得各核能夠并行執(zhí)行深度神經(jīng)網(wǎng)絡(luò)計(jì)算,核與核之間可以完全不相關(guān)的執(zhí)行各自的任務(wù),大大提高了深度神經(jīng)網(wǎng)絡(luò)的計(jì)算效率。
本實(shí)施例中,步驟s2中每次計(jì)算時(shí),得到多個(gè)向量計(jì)算結(jié)果后還包括由各個(gè)核對(duì)得到的向量計(jì)算結(jié)果進(jìn)行激活函數(shù)處理,得到最終的向量計(jì)算結(jié)果步驟,激活函數(shù)具體可以為sigmoid函數(shù),如sigmoid(f(x)=1/(1+e-x)),或?yàn)閞elu激活函數(shù),如relu′(f(x)=max(0,x)),或tanh函數(shù),如
本實(shí)施例中,步驟s2中每次計(jì)算前,還包括判斷當(dāng)前次所需計(jì)算的權(quán)值矩陣的狀態(tài),若判斷到滿足預(yù)設(shè)條件時(shí),如權(quán)值矩陣不能平均劃分或權(quán)值矩陣規(guī)模小于預(yù)設(shè)值,此時(shí)由于使用多核難以取得好的加速效果,則直接由指定核執(zhí)行當(dāng)前權(quán)值矩陣的計(jì)算,能夠進(jìn)一步提高整體加速效果。
本實(shí)施例多核向量處理器如圖4所示,包括m個(gè)核core0~corem,每個(gè)核包括標(biāo)量處理單元spu、標(biāo)量存儲(chǔ)體sm以及向量處理單元vpu、向量存儲(chǔ)體am,各個(gè)核之間通過(guò)dma傳輸數(shù)據(jù)。通過(guò)如圖4所示向量處理器實(shí)現(xiàn)圖像數(shù)據(jù)深度神經(jīng)網(wǎng)絡(luò)多核加速時(shí),將輸入圖像的像素矩陣進(jìn)行預(yù)處理,按列或行輸出一維的向量數(shù)據(jù)后作為輸入值輸入至目標(biāo)深度神經(jīng)網(wǎng)絡(luò),如圖5所示,步驟s2的詳細(xì)步驟如下:
s21.準(zhǔn)備輸入圖像數(shù)據(jù)和相鄰層的權(quán)值矩陣;
s22.執(zhí)行輸入層與第一個(gè)隱層的權(quán)值矩陣計(jì)算,廣播一維的圖像數(shù)據(jù)至m個(gè)核的核內(nèi)標(biāo)量存儲(chǔ)體中,同時(shí)加載輸入層與第一個(gè)隱層的權(quán)值矩陣,并將該權(quán)值矩陣按列平均劃分成m份,每份計(jì)算任務(wù)由相應(yīng)的dma傳輸至對(duì)應(yīng)核的內(nèi)部向量存儲(chǔ)體am中;
s23.m個(gè)計(jì)算核同時(shí)完成m個(gè)的矩陣向量乘法,得出m個(gè)一維的向量結(jié)果,由m個(gè)核同時(shí)對(duì)該m個(gè)向量結(jié)果進(jìn)行激活函數(shù)處理,通過(guò)m個(gè)核的內(nèi)部dma將m個(gè)向量計(jì)算結(jié)果輸出至外部ddr中;
s24.將上次計(jì)算輸出至ddr中的數(shù)據(jù)通過(guò)廣播傳輸至m個(gè)核的標(biāo)量存儲(chǔ)體sm中,同時(shí)加載第n1個(gè)隱層與第n1+1個(gè)隱層的權(quán)值矩陣,并將該矩陣按列的劃分方式平均劃分成m份,并由m個(gè)核的dma傳輸至對(duì)應(yīng)的核內(nèi)am中;
s25.m個(gè)計(jì)算核同時(shí)完成m個(gè)所分配矩陣向量乘法計(jì)算任務(wù),得出m個(gè)一維的向量結(jié)果,由m個(gè)核同時(shí)對(duì)各自的矩陣向量乘法的結(jié)果進(jìn)行激活函數(shù)處理,通過(guò)m個(gè)核的內(nèi)部dma將m個(gè)向量計(jì)算結(jié)果輸出值外部ddr中;
s26.重復(fù)步驟s23~s25以完成下一相鄰層的權(quán)值矩陣計(jì)算,直至完成整個(gè)深度神經(jīng)網(wǎng)絡(luò)的計(jì)算,輸出最終計(jì)算結(jié)果。
本實(shí)施例由具體的向量處理器的結(jié)構(gòu)、指令集以及所需計(jì)算的深度神經(jīng)網(wǎng)絡(luò)的規(guī)模,按照上述步驟生成對(duì)應(yīng)的執(zhí)行代碼,實(shí)現(xiàn)不同規(guī)模多層的深度神經(jīng)網(wǎng)絡(luò)計(jì)算,實(shí)現(xiàn)原理簡(jiǎn)單且執(zhí)行效率高。
以下以基于多核向量處理器實(shí)現(xiàn)三層的神經(jīng)網(wǎng)絡(luò)加速為例,進(jìn)一步說(shuō)明本發(fā)明。
本實(shí)施例多核向量處理器的核數(shù)m為12,深度神經(jīng)網(wǎng)絡(luò)的輸入層節(jié)點(diǎn)對(duì)應(yīng)的是輸入圖像的像素矩陣,輸出層節(jié)點(diǎn)對(duì)應(yīng)的是圖像的分類目標(biāo)值類別。如圖6所示,本實(shí)施例深度神經(jīng)網(wǎng)絡(luò)輸入圖像尺寸為28×28,中間隱層節(jié)點(diǎn)為1152,輸出層節(jié)點(diǎn)為10,根據(jù)輸入數(shù)據(jù)需為一維向量數(shù)據(jù)且數(shù)據(jù)長(zhǎng)度即為輸入節(jié)點(diǎn)數(shù),使得輸入節(jié)點(diǎn)為784,實(shí)現(xiàn)深度神經(jīng)網(wǎng)絡(luò)多核加速的具體步驟為:
步驟1、對(duì)輸入圖像的像素矩陣進(jìn)行預(yù)處理,并按列或行輸出至一維的向量數(shù)據(jù),作為深度神經(jīng)網(wǎng)絡(luò)的輸入值,即1×784;
步驟2、通過(guò)核0啟動(dòng)dma的廣播傳輸模式,將1×784的標(biāo)量數(shù)據(jù)廣播至core0~core11的核內(nèi)標(biāo)量存儲(chǔ)體中,即sm0~sm11中;
步驟3、輸入層與隱層的權(quán)值矩陣為784×1152,將此權(quán)值矩陣根據(jù)列平均劃分成12份,即1152/12=96,如圖7所示,每個(gè)核被分到的數(shù)據(jù)矩陣為784×96;
步驟4、同時(shí)啟動(dòng)12個(gè)核dma點(diǎn)對(duì)點(diǎn)傳輸方式,將784×96×12的數(shù)據(jù)量依次傳入12個(gè)核的向量存儲(chǔ)體中,即am0~am11中;
步驟5、12核同時(shí)進(jìn)行矩陣向量乘法操作,每個(gè)核計(jì)算出96個(gè)結(jié)果元素,并進(jìn)行激活函數(shù)處理,12核一共同時(shí)計(jì)算出96×12個(gè)向量元素;
單核矩陣向量乘法計(jì)算如圖8所示,通過(guò)核內(nèi)dma每次一維的計(jì)算結(jié)果(784×1)置入標(biāo)量存儲(chǔ)體sm中,將劃分后的權(quán)值矩陣(784×96)置入向量存儲(chǔ)體am中,經(jīng)過(guò)計(jì)算后得到1×96的向量計(jì)算結(jié)果。
步驟6、同時(shí)啟動(dòng)12核的dma將96×12個(gè)計(jì)算結(jié)果由核內(nèi)am導(dǎo)出至核外ddr存儲(chǔ)體,數(shù)據(jù)從ddr廣播至各核標(biāo)量存儲(chǔ)體sm具體如圖9所示;
步驟7、啟動(dòng)dma的廣播傳輸,將步驟6中計(jì)算出的96×12個(gè)結(jié)果元素廣播至12核的sm中;由于隱層至輸出層的權(quán)值矩陣為1152×10,列數(shù)為10,列數(shù)過(guò)小不滿足12核的劃分方式,該計(jì)算任務(wù)則指定由core0來(lái)完成計(jì)算,如圖10所示;
步驟8、由core0啟動(dòng)dma將隱層至輸出層的權(quán)值矩陣1152×10傳輸至core0的am中,由core0完成最終的計(jì)算,并輸出結(jié)果。
上述只是本發(fā)明的較佳實(shí)施例,并非對(duì)本發(fā)明作任何形式上的限制。雖然本發(fā)明已以較佳實(shí)施例揭露如上,然而并非用以限定本發(fā)明。因此,凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施例所做的任何簡(jiǎn)單修改、等同變化及修飾,均應(yīng)落在本發(fā)明技術(shù)方案保護(hù)的范圍內(nèi)。