丁香五月婷婷黄色视频_97在线看观看免费_男女xo嘿咻嘿咻动态图_最近更新在线中文字幕人妻

?

卷積模板的翻譯 面向向量處理器的二維矩陣卷積的設(shè)計(jì)與實(shí)現(xiàn)

日期:2023-03-11 12:39:36 / 人氣: 1133 / 發(fā)布者:成都翻譯公司

面向向量處理器的二維矩陣卷積的設(shè)計(jì)與實(shí)現(xiàn)張軍陽(yáng)郭陽(yáng)國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院湖南長(zhǎng)沙410073摘要為了加速卷積神經(jīng)網(wǎng)絡(luò)模型的計(jì)算速度便于大規(guī)模神經(jīng)網(wǎng)絡(luò)模型在嵌入式微處理器中的實(shí)現(xiàn)本

矢量處理器二維矩陣卷積的設(shè)計(jì)與實(shí)現(xiàn) 本文以FT-matrix2000矢量處理器架構(gòu)為研究背景。通過(guò)對(duì)多核向量處理器架構(gòu)的分析和對(duì)卷積神經(jīng)網(wǎng)絡(luò)算法的深入研究,將小規(guī)模的卷積核數(shù)據(jù)放置在標(biāo)量存儲(chǔ)空間中。較大的卷積矩陣放在向量存儲(chǔ)中。數(shù)據(jù)布局方案、施工施工方案、施工方案實(shí)例、結(jié)構(gòu)施工方案、營(yíng)銷方案方案模板、施工組織設(shè)計(jì)(施工方案)、針對(duì)矩陣卷積中數(shù)據(jù)復(fù)用難的問(wèn)題提出了依據(jù) 卷積核移動(dòng)步長(zhǎng)的不同動(dòng)態(tài)可配置shuffling模式,通過(guò)對(duì)所取卷積的元素進(jìn)行不同的移位操作,大大提高了卷積矩陣數(shù)據(jù)的復(fù)用率矩陣。對(duì)于二維矩陣卷積由于數(shù)據(jù)相關(guān)性的存在,多核并行的問(wèn)題比較困難,多核的問(wèn)題難以并行化。提出了一種多核并行方案,以與多個(gè)核共享卷積矩陣。設(shè)計(jì)了多核獨(dú)占多核并行方案。卷積核的大小是恒定的。卷積矩陣大小變化,卷積矩陣大小不變。兩種尺度變化的計(jì)算方法在主流CPU gtx1080TITI6678FT-matrix2000平臺(tái)上進(jìn)行對(duì)比分析。*終的實(shí)驗(yàn)結(jié)果表明,與多核CPU相比,它可以加速高達(dá)238倍,相比TI6678,它可以加速21倍。與高性能gtx1080TI相比,可加速663805倍。

尤其是在圖像識(shí)別 [2] 語(yǔ)音識(shí)別 [3] 機(jī)器翻譯 [4] 基于自然語(yǔ)言處理等領(lǐng)域的深度學(xué)習(xí)目標(biāo)識(shí)別技術(shù)取得重大突破,引發(fā)了機(jī)器領(lǐng)域的新研究浪潮學(xué)習(xí)和計(jì)算機(jī)視覺(jué)。深度學(xué)習(xí)包括卷積神經(jīng)網(wǎng)絡(luò)ConvolutionalNeuralNetworkCNN[5-6]Deep Belief NetworkDBN[7-9]Auto-encoder[10]RecurrentNeuralNetwo等一系列神經(jīng)網(wǎng)絡(luò)模型,rkRNN[11]等常用模型,尤其是基于CNN的模型,在圖像識(shí)別領(lǐng)域取得重大突破。目前,幾乎所有圖像識(shí)別任務(wù)中識(shí)別率*好的模型都是基于CNN的。一般來(lái)說(shuō),CNN模型有幾個(gè)卷積層。并且池化層交替出現(xiàn)。*后,它由幾個(gè)全連接層和分類層組成。卷積層的計(jì)算量占整個(gè)模型的85以上。[12] 因此,目前很多研究大多針對(duì)CNN加速器,如圖形處理單元GraphicProcessingUnitGPU[13 -14] Field Programmable Logic Gate Array FieldProgrammableGatedArrayFPGA[15-16] Application Specific Integrated CircuitASIC[17-19] Vector Digital Signal Processor DigitalSignalProcessorDSP等向量處理器架構(gòu)是新穎的架構(gòu)之一[20]一般包括標(biāo)量處理單元和向量處理單元標(biāo)量計(jì)算單元負(fù)責(zé)標(biāo)量任務(wù)的計(jì)算和流量控制。矢量計(jì)算單元主要負(fù)責(zé)大規(guī)模的矢量計(jì)算。它包括幾個(gè)矢量處理單元。每個(gè)處理單元都包含豐富的計(jì)算組件。提高系統(tǒng)計(jì)算性能的同時(shí),也對(duì)軟件開(kāi)發(fā)提出了新的挑戰(zhàn)。如何根據(jù)矢量處理器、多處理器、多功能組件的架構(gòu)特點(diǎn),充分發(fā)揮各級(jí)并行性,高效矢量化各種應(yīng)用,是目前面臨的主要難點(diǎn)[21]本文針對(duì)的難題是卷積神經(jīng)網(wǎng)絡(luò)模型中的二維矩陣卷積,結(jié)合向量處理器的架構(gòu)特點(diǎn),設(shè)計(jì)了shuffle操作,提高算法的并行性,提高數(shù)據(jù)復(fù)用率方法,針對(duì)多輸出卷積結(jié)果矩陣的計(jì)算,提出了加速矩陣卷積計(jì)算的多核實(shí)現(xiàn)方案,并進(jìn)行了算法優(yōu)化和從架構(gòu)多級(jí)存儲(chǔ)和計(jì)算模式方面進(jìn)行性能分析。圖 1 FT-matrix2000 處理器系統(tǒng)結(jié)構(gòu) Fig1 ArchitectureofFT-matrix20001 矢量處理器 FT-m 因此,目前很多研究主要針對(duì)CNN加速器,如圖形處理單元GraphicProcessingUnitGPU[13-14]現(xiàn)場(chǎng)可編程邏輯門陣列FieldProgrammableGatedArrayFPGA[15-16]專用集成電路ASIC[17-19]矢量數(shù)字信號(hào)處理器DigitalSignalProcessorDSP等矢量處理器架構(gòu)是一種新穎的架構(gòu)[20],一般包括一個(gè)標(biāo)量處理單元和一個(gè)向量處理單元。標(biāo)量計(jì)算單元負(fù)責(zé)標(biāo)量任務(wù)的計(jì)算,流控矢量計(jì)算單元主要負(fù)責(zé)大規(guī)模的矢量計(jì)算。它包括幾個(gè)向量處理。該單元在每個(gè)處理單元上包含豐富的計(jì)算組件。它具有強(qiáng)大的計(jì)算能力,可以大大提高系統(tǒng)的計(jì)算性能。同時(shí),也對(duì)軟件開(kāi)發(fā)提出了新的挑戰(zhàn)。充分開(kāi)發(fā)各級(jí)并行性以高效矢量化各種應(yīng)用是目前面臨的主要難點(diǎn)[21] 本文針對(duì)卷積神經(jīng)網(wǎng)絡(luò)模型中二維矩陣卷積的并行難問(wèn)題,結(jié)合矢量處理器的設(shè)計(jì)架構(gòu)特點(diǎn) 針對(duì)多輸出卷積結(jié)果矩陣的計(jì)算,提出了一種通過(guò)shuffle操作提高算法并行度和提高數(shù)據(jù)復(fù)用率的方法。從計(jì)算方式等方面進(jìn)行了算法優(yōu)化和性能分析。 因此,目前很多研究主要針對(duì)CNN加速器,如圖形處理單元GraphicProcessingUnitGPU[13-14]現(xiàn)場(chǎng)可編程邏輯門陣列FieldProgrammableGatedArrayFPGA[15-16]專用集成電路ASIC[17-19]矢量數(shù)字信號(hào)處理器DigitalSignalProcessorDSP等矢量處理器架構(gòu)是一種新穎的架構(gòu)[20],一般包括一個(gè)標(biāo)量處理單元和一個(gè)向量處理單元。標(biāo)量計(jì)算單元負(fù)責(zé)標(biāo)量任務(wù)的計(jì)算,流控矢量計(jì)算單元主要負(fù)責(zé)大規(guī)模的矢量計(jì)算。它包括幾個(gè)向量處理。該單元在每個(gè)處理單元上包含豐富的計(jì)算組件。它具有強(qiáng)大的計(jì)算能力,可以大大提高系統(tǒng)的計(jì)算性能。同時(shí),也對(duì)軟件開(kāi)發(fā)提出了新的挑戰(zhàn)。充分開(kāi)發(fā)各級(jí)并行性以高效矢量化各種應(yīng)用是目前面臨的主要難點(diǎn)[21] 本文針對(duì)卷積神經(jīng)網(wǎng)絡(luò)模型中二維矩陣卷積的并行難問(wèn)題,結(jié)合矢量處理器的設(shè)計(jì)架構(gòu)特點(diǎn) 針對(duì)多輸出卷積結(jié)果矩陣的計(jì)算,提出了一種通過(guò)shuffle操作提高算法并行度和提高數(shù)據(jù)復(fù)用率的方法。從計(jì)算方式等方面進(jìn)行了算法優(yōu)化和性能分析。該單元主要負(fù)責(zé)大規(guī)模的矢量計(jì)算。它包括幾個(gè)矢量處理單元。每個(gè)處理單元都包含豐富的計(jì)算組件。它具有強(qiáng)大的計(jì)算能力,可以大大提高系統(tǒng)的計(jì)算性能。同時(shí),也對(duì)軟件開(kāi)發(fā)提出了新的挑戰(zhàn)。矢量處理器多處理單元的多功能組件的架構(gòu)特點(diǎn)充分發(fā)揮了各級(jí)并行性。高效矢量化是目前各種應(yīng)用面臨的主要困難。[21] 本文重點(diǎn)介紹卷積神經(jīng)網(wǎng)絡(luò)模型中的二維矩陣卷積。難以并行化的問(wèn)題,結(jié)合向量處理器的架構(gòu)特點(diǎn),設(shè)計(jì)了一種通過(guò)shuffle操作提高算法并行度和提高數(shù)據(jù)復(fù)用率的方法,并提出了一種加速矩陣卷積來(lái)計(jì)算多輸出卷積結(jié)果矩陣。從多級(jí)存儲(chǔ)和計(jì)算模式的架構(gòu)來(lái)計(jì)算多核實(shí)現(xiàn)方案以及算法優(yōu)化和性能分析。圖1 FT-matrix 2000處理器架構(gòu) 圖1 FT-matrix 2000 1向量處理器架構(gòu) FT-m單元主要負(fù)責(zé)大規(guī)模的向量計(jì)算。它包括幾個(gè)矢量處理單元。每個(gè)處理單元都包含豐富的計(jì)算組件。它具有強(qiáng)大的計(jì)算能力,可以大大提高系統(tǒng)的計(jì)算性能。同時(shí),它還對(duì)軟件開(kāi)發(fā)提出了新的挑戰(zhàn)。矢量處理器多處理單元的多功能組件的架構(gòu)特點(diǎn)充分發(fā)揮了各級(jí)并行性。高效矢量化是目前各種應(yīng)用面臨的主要困難。[21] 本文重點(diǎn)介紹卷積神經(jīng)網(wǎng)絡(luò)模型中的二維矩陣卷積。針對(duì)難以并行化的問(wèn)題,結(jié)合向量處理器的架構(gòu)特點(diǎn),設(shè)計(jì)了一種通過(guò)shuffle操作提高算法并行度和提高數(shù)據(jù)復(fù)用率的方法,并提出了一種加速矩陣卷積用于計(jì)算多輸出卷積結(jié)果矩陣。從多級(jí)存儲(chǔ)和計(jì)算模式的架構(gòu)來(lái)計(jì)算多核實(shí)現(xiàn)方案以及算法優(yōu)化和性能分析。圖1 FT-matrix 2000處理器架構(gòu) 圖1 FT-matrix 2000 1向量處理器FT-m架構(gòu)

VeryLongInstructionWordVLIW 架構(gòu)包括向量處理單元 VectorProcessingUnitVPU 和標(biāo)量處理單元 ScalarProcessingUnitSPUSPU 負(fù)責(zé)標(biāo)量計(jì)算和流量控制 VPU 負(fù)責(zé)向量計(jì)算,包括 16 個(gè)向量處理單元 VectorProcessingElementVPE 每個(gè) VPE 包含一個(gè)本地寄存器文件和 3 個(gè)浮點(diǎn)乘法和累加單元,F(xiàn)loatingpointMultiplyAccumulatorFMAC, 2個(gè)LoadStores和1個(gè)BP,共6個(gè)并行功能組件,所有VPE的相同數(shù)量的本地寄存器邏輯上組成一個(gè)1024位的向量寄存器SPU通過(guò)共享寄存器與VPU交換數(shù)據(jù)。支持廣播指令將標(biāo)量寄存器數(shù)據(jù)廣播到向量寄存器。矢量處理器內(nèi)核支持 11 條傳輸和可變長(zhǎng)度的 VLIW 指令,其中包括 5 條標(biāo)量指令和 6 條矢量指令。識(shí)別并分派到相應(yīng)的功能單元執(zhí)行FT-matrix2000提供96KB標(biāo)量?jī)?nèi)存ScalarMemorySM和768KB陣列內(nèi)存ArrayMemoryAM用于向量訪問(wèn)多核使用DDR和L1D之間共享DDR存儲(chǔ)結(jié)構(gòu)支持多核共享全局緩存GlobalCacheGC,方便使用實(shí)現(xiàn)核心之間的數(shù)據(jù)交換和共享 2 矩陣卷積算法介紹與分析 21 卷積神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu) 具有代表性的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖 2 所示。該模型主要用于早期的手寫數(shù)字識(shí)別任務(wù) 目前的神經(jīng)網(wǎng)絡(luò)模型類似于這個(gè)模型,主要包括卷積層下采樣層全連接層和相應(yīng)的正則化層。由于卷積神經(jīng)網(wǎng)絡(luò)模型中的體積,模型的深度和廣度以及連接方法都發(fā)生了變化。堆積層的計(jì)算時(shí)間約占整個(gè)模型計(jì)算的85次以上。因此,本文主要研究加速卷積神經(jīng)網(wǎng)絡(luò)模型中卷積層的計(jì)算。圖2 典型的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu) Fig2TypicalstructureofCNN22 二維矩陣卷積 二維矩陣卷積常用于圖像處理。卷積神經(jīng)網(wǎng)絡(luò)中的卷積操作可以抽象為一組卷積核和一個(gè)輸入特征圖的卷積操作。每一個(gè)大小為 kx×ky 的體積,乘積內(nèi)核在輸入特征圖上用 kx×ky 卷積窗口進(jìn)行相應(yīng)的點(diǎn)積運(yùn)算,累加求和得到輸出特征圖中的一個(gè)元素。卷積核在輸入特征圖上從左到下自上而下。向右執(zhí)行上述操作,*終會(huì)得到一個(gè)二維輸出的特征圖。設(shè)置水平移動(dòng)步長(zhǎng)為Sx,垂直移動(dòng)步長(zhǎng)為Sy,則輸出特征圖上的位置為ab元素。輸出特征圖mo之間的卷積核就是輸入特征圖和輸出特征圖之間對(duì)應(yīng)的偏移值。表示輸入特征圖和對(duì)應(yīng)的輸出特征圖之間的一組連接。代表非線性激活函數(shù)如tanhsigmoid或ReLU 23二維矩陣卷積的常用計(jì)算方法圖3二維矩陣卷積計(jì)算的兩種方法圖3Twomethodsoftwo-Dimensionmatrixconvolutionforcalculating 3通道2×2卷積核可以得到兩個(gè)通過(guò)卷積計(jì)算輸出2×2的特征圖。我們可以發(fā)現(xiàn),如果采用傳統(tǒng)的矩陣卷積計(jì)算方法,因?yàn)槭嵌S矩陣卷積計(jì)算,尤其是當(dāng)卷積核的規(guī)模較小時(shí),算法的并行性就難以保證。因此,北京郵電大學(xué)張強(qiáng)強(qiáng)等人。[22]使用新的計(jì)算方法將卷積矩陣和卷積核矩陣擴(kuò)展為矩陣塊。卷積計(jì)算是通過(guò)普通矩陣相乘來(lái)進(jìn)行的,如圖3b所示。計(jì)算步驟如下:根據(jù)卷積核的大小和移動(dòng)步長(zhǎng),將對(duì)應(yīng)卷積矩陣的對(duì)應(yīng)卷積塊展開(kāi)為列向量。所有展開(kāi)后的列向量組成一個(gè)新矩陣,將單個(gè)卷積核矩陣逐行展開(kāi)成行向量。所有擴(kuò)展的卷積核形成一個(gè)新的卷積核矩陣。將新的卷積矩陣和新的卷積核矩陣做成一個(gè)普通矩陣,然后可以通過(guò)矩陣乘法核對(duì)輸入的特征圖從上到下從左到右進(jìn)行上述操作,*后得到一個(gè)二維的輸出特征將獲得地圖。設(shè)置水平移動(dòng)步長(zhǎng)為Sx,垂直移動(dòng)步長(zhǎng)為Sy,則輸出特征圖上的位置為ab元素。計(jì)算如等式11,其中是輸入特征圖mi和輸出特征圖mo之間的卷積核是輸入特征圖和輸出特征圖之間對(duì)應(yīng)的偏移值,表示輸入特征圖和對(duì)應(yīng)的輸出特征圖之間的連接集合。tanhsigmoid 或 ReLU 等非線性激活函數(shù) 23 二維矩陣卷積常用的計(jì)算方法 圖 3 二維矩陣卷積計(jì)算的兩種方法 圖 3 軟二維矩陣卷積計(jì)算的兩種方法 圖 3a 為傳統(tǒng)矩陣卷積計(jì)算方法 輸入為 3 3× 輸入特征圖 3 輸入卷積核為兩個(gè) 3 通道 2×2 卷積核。通過(guò)卷積計(jì)算,可以得到兩個(gè)2×2的輸出特征圖。我們可以發(fā)現(xiàn),如果采用傳統(tǒng)的矩陣卷積計(jì)算方法,則是二維矩陣卷積計(jì)算,尤其是在卷積核較小的情況下,算法的并行性難以保證。因此,北京郵電大學(xué)張強(qiáng)強(qiáng)等人。[22]使用了一種新的計(jì)算方法,即卷積矩陣將卷積核矩陣展開(kāi)成一個(gè)矩陣塊,然后通過(guò)與普通矩陣相乘來(lái)進(jìn)行卷積計(jì)算。如圖3b所示,計(jì)算步驟如下。乘積塊擴(kuò)展為列向量。所有擴(kuò)展的列向量形成一個(gè)新矩陣。將單個(gè)卷積核矩陣逐行展開(kāi)成行向量。所有擴(kuò)展的卷積核組成一個(gè)新的卷積核矩陣,對(duì)新的卷積核進(jìn)行卷積。矩陣和新的卷積核矩陣可以乘以普通矩陣和矩陣。內(nèi)核對(duì)輸入的特征圖從上到下、從左到右進(jìn)行上述操作,*終會(huì)得到一個(gè)二維的輸出特征圖。設(shè)置水平移動(dòng)步長(zhǎng)為Sx,垂直移動(dòng)步長(zhǎng)為Sy,則輸出特征圖上的位置為ab元素。計(jì)算如等式11,其中是輸入特征圖mi和輸出特征圖mo之間的卷積核是輸入特征圖和輸出特征圖之間對(duì)應(yīng)的偏移值,表示輸入特征圖和對(duì)應(yīng)的輸出特征圖。tanhsigmoid 或 ReLU 等非線性激活函數(shù) 23 二維矩陣卷積常用的計(jì)算方法 圖 3 二維矩陣卷積計(jì)算的兩種方法 圖 3 軟二維矩陣卷積計(jì)算的兩種方法 圖 3a 為傳統(tǒng)矩陣卷積計(jì)算方法 輸入為 3 3× 輸入特征圖 3 輸入卷積核為兩個(gè) 3 通道 2×2 卷積核。通過(guò)卷積計(jì)算,可以得到兩個(gè)2×2的輸出特征圖。我們可以發(fā)現(xiàn),如果采用傳統(tǒng)的矩陣卷積計(jì)算方法,則是二維矩陣卷積計(jì)算,尤其是在卷積核較小的情況下,算法的并行性難以保證。所以,北京郵電大學(xué)張強(qiáng)強(qiáng)等。[22]使用了一種新的計(jì)算方法,即卷積矩陣將卷積核矩陣展開(kāi)成一個(gè)矩陣塊,然后通過(guò)與普通矩陣相乘來(lái)進(jìn)行卷積計(jì)算。如圖3b所示,計(jì)算步驟如下。乘積塊擴(kuò)展為列向量。所有擴(kuò)展的列向量形成一個(gè)新矩陣。將單個(gè)卷積核矩陣逐行展開(kāi)成行向量。所有擴(kuò)展的卷積核組成一個(gè)新的卷積核矩陣,對(duì)新的卷積核進(jìn)行卷積。矩陣和新的卷積核矩陣可以乘以普通矩陣和矩陣。g 圖3a是傳統(tǒng)的矩陣卷積計(jì)算方法。輸入是三個(gè) 3×3 的輸入特征圖。輸入卷積核是兩個(gè)3通道的2×2卷積核。通過(guò)卷積計(jì)算可以得到兩個(gè)2×2的卷積核。我們可以發(fā)現(xiàn),如果采用傳統(tǒng)的矩陣卷積計(jì)算方法,算法的并行性很難保證,尤其是在卷積核較小的情況下。因此,北京郵電大學(xué)張強(qiáng)-強(qiáng)[22]采用了一種新的計(jì)算方法,將卷積矩陣和卷積核矩陣展開(kāi)成矩陣塊,然后通過(guò)乘以普通矩陣進(jìn)行卷積計(jì)算,如圖3b所示. 計(jì)算步驟如下:卷積核的大小和移動(dòng)步長(zhǎng)將對(duì)應(yīng)卷積矩陣的對(duì)應(yīng)卷積塊展開(kāi)為列向量。所有擴(kuò)展的列向量形成一個(gè)新矩陣。將單個(gè)卷積核矩陣逐行展開(kāi)為行向量。所有擴(kuò)展卷積核形成一個(gè)新的卷積核矩陣。新的卷積矩陣和新的卷積核矩陣可以與普通矩陣和矩陣相乘。g 圖3a是傳統(tǒng)的矩陣卷積計(jì)算方法。輸入是三個(gè) 3×3 的輸入特征圖。輸入卷積核是兩個(gè)3通道的2×2卷積核。通過(guò)卷積計(jì)算可以得到兩個(gè)2×2的卷積核。我們可以發(fā)現(xiàn),如果采用傳統(tǒng)的矩陣卷積計(jì)算方法,算法的并行性很難保證,尤其是在卷積核很小的時(shí)候。因此,北京郵電大學(xué)的張強(qiáng)-強(qiáng)[22]采用了一種新的計(jì)算方法,將卷積矩陣和卷積核矩陣展開(kāi)成一個(gè)矩陣塊,然后將普通矩陣相乘進(jìn)行卷積計(jì)算,如圖3b. 計(jì)算步驟如下: 卷積核的大小和移動(dòng)步長(zhǎng)將對(duì)應(yīng)卷積矩陣的對(duì)應(yīng)卷積塊展開(kāi)為列向量。所有擴(kuò)展的列向量形成一個(gè)新矩陣。將單個(gè)卷積核矩陣逐行展開(kāi)為行向量。所有擴(kuò)展卷積核形成一個(gè)新的卷積核矩陣。

通過(guò)調(diào)用普通BLASBasicLinearAlgebraSubprogramsBLAS[23]函數(shù)庫(kù)中的GEMMGeneralMatrixMultiplicationGEMM來(lái)完成二維矩陣卷積的計(jì)算,通過(guò)圖3b所示的方法,將小而難并行的卷積計(jì)算模塊組合成一個(gè)大的形式-scale 矩陣,然后使用矩陣乘法。高并行度提高矩陣卷積的計(jì)算效率。因?yàn)楸疚难芯康木仃嚲矸e運(yùn)算主要用于卷積神經(jīng)網(wǎng)絡(luò)模型,而卷積計(jì)算的結(jié)果通常作為下一層運(yùn)算的輸入值,神經(jīng)網(wǎng)絡(luò)模型多層的計(jì)算結(jié)果具有特定的二維結(jié)構(gòu)。圖3b中使用的計(jì)算方法通過(guò)組合成大規(guī)模矩陣,增加了矩陣卷積計(jì)算的并行度,但也破壞了卷積計(jì)算結(jié)果的二維結(jié)構(gòu)。因此,計(jì)算結(jié)果不能直接作為下一級(jí)的輸入值??赡苄枰獙?duì)卷積結(jié)果進(jìn)行重新排序以用作下一級(jí)操作的輸入值。同時(shí),由于卷積矩陣經(jīng)過(guò)反復(fù)擴(kuò)展,擴(kuò)展后的矩陣大小也大大增加。比如2×2卷積核尺度下的3×3卷積矩陣擴(kuò)展到4×4,數(shù)據(jù)量增加了778,當(dāng)卷積矩陣為5×5時(shí),擴(kuò)展后的卷積矩陣變化了16×5數(shù)據(jù)量增加到220,片上存儲(chǔ)對(duì)計(jì)算尤為重要。因此,該方法使得數(shù)據(jù)存儲(chǔ)量的增加成為該方法的主要缺陷。3 二維矩陣卷積的矢量化設(shè)計(jì)與實(shí)現(xiàn)第2節(jié)傳統(tǒng)卷積計(jì)算方法分析我們提出了一種新的二維矩陣卷積矢量化實(shí)現(xiàn)方法。算法實(shí)現(xiàn)過(guò)程如下: 1 根據(jù)多核向量處理器m的核數(shù),輸入特征圖的個(gè)數(shù)n大小為n1×n2 輸入卷積核數(shù)k 大小為k1×k2 . 向量處理器單核向量存儲(chǔ)器容量v1和標(biāo)量存儲(chǔ)器bank容量v2合理劃分為多核處理器中各核的計(jì)算負(fù)荷。2 特征圖元素將被輸入卷積核矩陣按行連續(xù)存儲(chǔ)在向量存儲(chǔ)庫(kù)AM中。卷積核矩陣按行連續(xù)存儲(chǔ)在標(biāo)量存儲(chǔ)庫(kù)SM中。3 根據(jù)單核向量處理單元的數(shù)量加載p個(gè)輸入特征圖元素。寄存器和移位寄存器中的元素相乘,相乘結(jié)果累加到步驟4中的累加寄存器ACC 6 根據(jù)卷積核k1的行數(shù),以列數(shù)k2重復(fù)上述過(guò)程,直到輸出特征圖的第一行元素的計(jì)算完成。7 根據(jù)輸入特征圖的行數(shù)n1和列數(shù)n2加載輸入特征圖的下一行。重復(fù)以上步驟完成整個(gè)卷積結(jié)果矩陣。計(jì)算卷積神經(jīng)網(wǎng)絡(luò)模型中卷積核的尺度一般比較小,通常是1×13×35×57×711×11等,根據(jù)我們的算法,卷積核數(shù)據(jù)需要是標(biāo)量的,所以將卷積核數(shù)據(jù)設(shè)置在放置在AM中的SM輸入特征圖矩陣中,向量化過(guò)程如下: 31 單核程序向量化方法1 我們以雙精度浮點(diǎn)數(shù)為例。單個(gè)數(shù)據(jù)為 8 個(gè)字節(jié)。為了描述,我們將輸入特征圖設(shè)置為 N×N。方陣為N×N×8768×1024,所以向量存儲(chǔ)庫(kù)AM中一次可以存儲(chǔ)的*大輸入特征圖尺寸為222×222。對(duì)于嵌入式處理器編程,當(dāng)輸入特征圖的大小大于222×222時(shí),我們需要通過(guò)DMA從外部存儲(chǔ)器DDR加載數(shù)據(jù)。其他行的計(jì)算過(guò)程類似16個(gè)PE加載輸入矩陣B的第一行元素 b11b12b13b14b15b16 標(biāo)量加載卷積核矩陣的第一行元素k11廣播k11到向量寄存器,即向量寄存器為k11k11k1對(duì)下一行元素重復(fù)以上步驟,完成整個(gè)卷積結(jié)果矩陣的計(jì)算。卷積神經(jīng)網(wǎng)絡(luò)模型中卷積核的大小一般比較小,通常是1×13×35×57×711×11等,根據(jù)我們的算法,體積是需要的。乘積核心數(shù)據(jù)需要取一個(gè)標(biāo)量,所以卷積核心數(shù)據(jù)放在SM輸入特征圖矩陣中,放在AM中。矢量化過(guò)程如下:31 單核程序向量化方法1 我們以雙精度浮點(diǎn)數(shù)為例。單個(gè)數(shù)據(jù)為 8 個(gè)字節(jié)。出于敘述的目的,我們將輸入特征圖設(shè)置為一個(gè) N×N 方陣,然后是 N×N×8768×1024,因此向量存儲(chǔ)器 AM 中單次可以存儲(chǔ)的*大輸入特征圖大小為 222 ×222。對(duì)于嵌入式處理器編程來(lái)說(shuō),當(dāng)輸入特征圖的大小大于222×222時(shí),我們需要通過(guò)DMA從外部存儲(chǔ)器DDR中加載數(shù)據(jù)。圖4 FT-matrix2000矩陣卷積算法映射B6×6步長(zhǎng)1×1kernel2×2 Fig4AlgorithmmappingofFT-matrix2000B6×6stride1×1kernel2×2 我們用一個(gè)例子來(lái)說(shuō)明如何同時(shí)計(jì)算輸出卷積矩陣的多個(gè)元素的向量化時(shí)間不展開(kāi)卷積矩陣。考慮一個(gè)1×6 PEsPE1PE2PE3PE4PE5PE6輸入特征圖矩陣I為6×6卷乘積核心矩陣為2×2步長(zhǎng)為1,為簡(jiǎn)單起見(jiàn),我們只描述第一行的計(jì)算輸出結(jié)果矩陣如圖4所示。其他行的計(jì)算過(guò)程與16個(gè)PE類似。加載輸入矩陣 B 的第一行 b11b12b13b14b15b16 標(biāo)量 加載卷積核矩陣第一行的第一個(gè)元素 k11 并將 k11 廣播到向量寄存器,即向量寄存器中的元素為 k11k11k1 重復(fù)上述步驟下一行元素完成整個(gè)卷積結(jié)果矩陣的計(jì)算。卷積神經(jīng)網(wǎng)絡(luò)模型中卷積核的大小一般比較小,通常為1×13×35×57×711×11等,根據(jù)我們的算法,音量是必需的。乘積核心數(shù)據(jù)需要取一個(gè)標(biāo)量,所以卷積核心數(shù)據(jù)放在SM輸入特征圖矩陣中,放在AM中。矢量化過(guò)程如下: 31 單核程序矢量化方法 1 我們以雙精度浮點(diǎn)數(shù)為例。單個(gè)數(shù)據(jù)為 8 個(gè)字節(jié)。出于敘述的目的,我們將輸入特征圖設(shè)置為一個(gè) N×N 方陣,然后是 N×N×8768×1024,因此向量存儲(chǔ)器 AM 中單次可以存儲(chǔ)的*大輸入特征圖大小為 222 ×222。對(duì)于嵌入式處理器編程來(lái)說(shuō),當(dāng)輸入特征圖的大小大于222×222時(shí),我們需要通過(guò)DMA從外部存儲(chǔ)器DDR中加載數(shù)據(jù)。圖4 FT-matrix2000矩陣卷積算法映射B6×6步長(zhǎng)1×1kernel2×2 Fig4AlgorithmmappingofFT-matrix2000B6×6stride1×1kernel2×2 我們用一個(gè)例子來(lái)說(shuō)明如何同時(shí)計(jì)算輸出卷積矩陣的多個(gè)元素的向量化時(shí)間不展開(kāi)卷積矩陣??紤]一個(gè) 1×6 PEsPE1PE2PE3PE4PE5PE6 輸入特征圖矩陣 I 為 6×6 體積 乘積核心矩陣為 2×2,步長(zhǎng)為 1。為簡(jiǎn)單起見(jiàn),我們只描述第輸出結(jié)果矩陣如圖4所示。其他行的計(jì)算過(guò)程與16個(gè)PE類似。加載輸入矩陣B的第一行 b11b12b13b14b15b16 scalar 加載卷積核矩陣第一行的第一個(gè)元素k11,將k11廣播到向量寄存器,即 向量寄存器中的元素為k11k11k1通過(guò)DMA在R中加載數(shù)據(jù)。 圖4 FT-matrix2000矩陣卷積算法映射B6×6步長(zhǎng)1×1kernel2×2 Fig4AlgorithmmappingofFT-matrix2000B6×6stride1×1kernel2×2 不展開(kāi)舉例說(shuō)明卷積矩陣。如何同時(shí)計(jì)算輸出卷積矩陣的多個(gè)元素的向量化實(shí)現(xiàn)方法考慮一個(gè)1×6 PEsPE1PE2PE3PE4PE5PE6輸入特征圖矩陣I為6×6卷積核矩陣為2×2步長(zhǎng)為1為簡(jiǎn)單起見(jiàn),我們只描述輸出結(jié)果矩陣第一行元素的計(jì)算如圖4所示,其他行的計(jì)算過(guò)程與16個(gè)PE的計(jì)算過(guò)程類似。加載輸入矩陣 B 的第一個(gè)元素。 b11b12b13b14b15b16。卷積核矩陣第一行的第一個(gè)元素。向量寄存器,即向量寄存器中的元素為k11k11k1在R中通過(guò)DMA加載數(shù)據(jù)。 圖4 FT-matrix2000矩陣卷積算法映射B6×6步長(zhǎng)1×1kernel2×2 Fig4AlgorithmmappingofFT-matrix2000B6×6stride1×1kernel2×2以不展開(kāi)卷積矩陣為例進(jìn)行說(shuō)明。如何同時(shí)計(jì)算輸出卷積矩陣的多個(gè)元素的向量化實(shí)現(xiàn)方法考慮一個(gè)1×6 PEsPE1PE2PE3PE4PE5PE6輸入特征圖矩陣I為6×6卷積核矩陣為2×2步長(zhǎng)為1為簡(jiǎn)單起見(jiàn),我們只描述輸出結(jié)果矩陣第一行元素的計(jì)算如圖4所示,其他行的計(jì)算過(guò)程與16個(gè)PE的計(jì)算過(guò)程類似。加載輸入矩陣 B 的第一個(gè)元素。 b11b12b13b14b15b16。卷積核矩陣第一行的第一個(gè)元素。向量寄存器,即向量寄存器中的元素為k11k11k1

1k11k11k11通過(guò)向量處理器的乘加指令VFMULAD,每個(gè)PE完成對(duì)應(yīng)元素與k11的乘法,并將乘法結(jié)果累加到對(duì)應(yīng)的累加寄存器ACC中。2 根據(jù)卷積核的移動(dòng)步長(zhǎng)配置對(duì)應(yīng)的shuffle模式如圖5所示,如本例所示,因?yàn)橐苿?dòng)步長(zhǎng)為1,所以配置的shuffle模式為移動(dòng)對(duì)應(yīng)向量寄存器中的元素向左 1 位。*左邊的元素移出寄存器,*右邊的元素補(bǔ)0。當(dāng)前PEs對(duì)應(yīng)移位。元素為b12b13b14b15b160,同時(shí)加載卷積核第一行的第二個(gè)元素k12,廣播到向量寄存器,即k12k12k12k12k12。通過(guò)向量乘加指令,每個(gè)PE完成對(duì)應(yīng)元素與k12的相乘,并將相乘結(jié)果累加為1。累加寄存器ACC中的36個(gè)PE加載輸入矩陣B的第二行元素b21b22b23b24b25b26。標(biāo)量加載卷積核矩陣第二行的第一個(gè)元素k21,并將其廣播到向量寄存器。通過(guò)向量乘加指令,所有PE完成相應(yīng)的元素和卷積。核心元素k21的乘法運(yùn)算和乘法結(jié)果累加到累加寄存器2中 4中的shuffle方式與2中相同,3中取的元素移位。移位完成后,當(dāng)前PE對(duì)應(yīng)的元素為b22b23b24b25b260。同時(shí)標(biāo)量加載卷積核矩陣第二行的第二個(gè)元素,廣播到向量寄存器,即k22k22k22k22k22k22。使用向量乘加指令完成對(duì)應(yīng)元素與k22的乘法運(yùn)算,并將結(jié)果累加到3個(gè)ACC中的累加寄存器完成。步驟4中,累加寄存器中的值為卷積結(jié)果矩陣第一行的元素。圖 5 步長(zhǎng)為 1 的 shuffle 操作。以下優(yōu)點(diǎn)不需要將輸入特征圖和卷積核重新組織成大規(guī)模矩陣來(lái)提高并行性,減少矩陣擴(kuò)展帶來(lái)的存儲(chǔ)壓力,增加數(shù)據(jù)的利用率。在向量化代碼的優(yōu)化過(guò)程中,我們可以通過(guò)軟件流水線來(lái)提高算法的并行性。在完全流水線的情況下,每個(gè)鏡頭可以同時(shí)計(jì)算輸出特征圖的一行元素。同時(shí),也避免了文獻(xiàn)[15]中使用的PEs數(shù)組之間頻繁的數(shù)據(jù)移動(dòng)。6 Double Buffer 機(jī)制展示 Fig6 Doublebuffermechanism2 當(dāng)輸入特征圖的大小超過(guò)向量?jī)?nèi)存條的容量時(shí),無(wú)法一次性添加向量?jī)?nèi)存條。加載整個(gè)輸入特征圖。在高性能計(jì)算中,需要平滑各級(jí)存儲(chǔ)之間的數(shù)據(jù)移動(dòng),以保證內(nèi)核計(jì)算所需的數(shù)據(jù)供應(yīng),實(shí)現(xiàn)高效的處理器效率。因?yàn)镕T-matrix2具有寄存器文件L1DArrayMemoryGlobalCache和DDR和L1D等多級(jí)存儲(chǔ)結(jié)構(gòu),可以配置為full Cache和full SRAM兩種模式。因此,當(dāng)輸入特征圖的數(shù)量超過(guò)向量存儲(chǔ)庫(kù)的容量時(shí),我們使用 SRAM 將 L1D 配置為全 SRAM,并使用雙緩沖乒乓模式來(lái)平滑多級(jí)存儲(chǔ)。數(shù)據(jù)傳輸?shù)慕Y(jié)構(gòu)使內(nèi)核的計(jì)算與DMA數(shù)據(jù)移動(dòng)完全重疊,使內(nèi)核始終處于峰值運(yùn)行狀態(tài),以達(dá)到*佳的計(jì)算效率。雙緩沖機(jī)制如圖6所示,值得注意的是卷積計(jì)算有數(shù)據(jù)重疊,所以是在volume中。當(dāng)乘積矩陣按照卷積核的大小分塊傳輸時(shí),第二次傳輸?shù)木矸e矩陣需要有部分?jǐn)?shù)據(jù)與第一次傳輸?shù)臄?shù)據(jù)重疊。假設(shè)卷積核的大小為m×m。如果第一次傳輸是1到n行那么第二次需要重疊第一次傳輸?shù)?后m-1行元素的傳輸。因?yàn)榫矸e核一般都比較小,所以重疊傳輸數(shù)據(jù)的比例不大。32矩陣卷積的多核程序設(shè)計(jì)與分析算法不僅僅是單核并行。內(nèi)部矢量化實(shí)現(xiàn)還包括多核內(nèi)核間并行性。由于FT-matrix2000是多核處理器,研究矩陣卷積的多核并行性也很重要,尤其是大規(guī)模矩陣卷積,由于需要核間并行性??紤]到計(jì)算負(fù)載的多核劃分算法的相關(guān)性、核之間的通信開(kāi)銷等,多核程序的設(shè)計(jì)較為復(fù)雜。因?yàn)槟壳暗木矸e神經(jīng)網(wǎng)絡(luò)模型中卷積層的計(jì)算規(guī)模存在于1×1到512×512之間,而且一般都是卷積核尺寸較小的矩陣卷積運(yùn)算。因此,在矩陣卷積的多核實(shí)現(xiàn)中,單個(gè)輸入特征圖一般不會(huì)分配給多個(gè)核進(jìn)行計(jì)算。相反,每個(gè)核心負(fù)責(zé)獨(dú)立的卷積計(jì)算。輸入特征圖是多核共享卷積核矩陣。多核的獨(dú)特方式是矩陣卷積的多核實(shí)現(xiàn)。圖7 FT-matrix2000矩陣卷積多核實(shí)現(xiàn)方案 Fig7 MulticoreimplementaSRAM 兩種模式。因此,當(dāng)輸入特征圖的數(shù)量超過(guò)向量存儲(chǔ)庫(kù)的容量時(shí),我們使用 SRAM 將 L1D 配置為完整的 SRAM。使用雙緩沖乒乓模式,平滑多級(jí)存儲(chǔ)結(jié)構(gòu)的數(shù)據(jù)傳輸,使內(nèi)核計(jì)算和DMA 數(shù)據(jù)移動(dòng)完全重疊,讓內(nèi)核始終處于峰值運(yùn)行狀態(tài),達(dá)到*佳計(jì)算效率. 雙緩沖機(jī)制如圖6所示。 值得注意的是,由于卷積計(jì)算有數(shù)據(jù)重疊,所以在卷積矩陣分塊傳輸時(shí)是基于卷積核的。卷積矩陣的第二次傳輸?shù)拇笮⌒枰胁糠謹(jǐn)?shù)據(jù)與第一次傳輸?shù)臄?shù)據(jù)重疊。假設(shè)卷積核的大小為m×m,如果第一次傳輸是1到n行,則第二次傳輸需要與第一次傳輸重疊。*后m-1行傳輸?shù)脑匾话愣急容^小,因?yàn)榫矸e核一般都比較小,所以重疊傳輸數(shù)據(jù)的比例不大。32矩陣卷積的多核編程分析算法的并行性不僅有單核內(nèi)部的向量化實(shí)現(xiàn),還包括多核核。由于FT-matrix2000是多核處理器,研究矩陣卷積的多核并行性,尤其是大規(guī)模矩陣卷積,也是一個(gè)重要的內(nèi)容。由于核間并行性需要考慮計(jì)算負(fù)載的多核劃分算法的相關(guān)性、核間的通信開(kāi)銷等,因此多核程序的設(shè)計(jì)較為復(fù)雜。因?yàn)槟壳熬矸e神經(jīng)網(wǎng)絡(luò)模型中卷積層的計(jì)算規(guī)模存在于1×1到512×512之間,而且一般是卷積核尺寸較小的矩陣體積。所以,在矩陣卷積的多核實(shí)現(xiàn)中,一般不會(huì)將單個(gè)輸入的特征圖分配給多個(gè)核進(jìn)行計(jì)算。相反,每個(gè)核負(fù)責(zé)獨(dú)立的卷積計(jì)算,即通過(guò)與多個(gè)核共享輸入特征圖,卷積核矩陣多核以獨(dú)特的方式實(shí)現(xiàn)多核矩陣卷積圖7 FT-matrix2000矩陣卷積多核-core實(shí)現(xiàn)方案SRAM兩種模式。因此,當(dāng)輸入特征圖的數(shù)量超過(guò)向量存儲(chǔ)庫(kù)的容量時(shí),我們使用 SRAM 將 L1D 配置為完整的 SRAM。使用雙緩沖乒乓模式,平滑多級(jí)存儲(chǔ)結(jié)構(gòu)的數(shù)據(jù)傳輸,使內(nèi)核計(jì)算和DMA 數(shù)據(jù)移動(dòng)完全重疊,讓內(nèi)核始終處于峰值運(yùn)行狀態(tài),達(dá)到*佳計(jì)算效率. 雙緩沖機(jī)制如圖6所示。 值得注意的是,由于卷積計(jì)算有數(shù)據(jù)重疊,所以在卷積矩陣分塊傳輸時(shí)是基于卷積核的。卷積矩陣的第二次傳輸?shù)拇笮⌒枰胁糠謹(jǐn)?shù)據(jù)與第一次傳輸?shù)臄?shù)據(jù)重疊。假設(shè)卷積核的大小為m×m,如果第一次傳輸是1到n行,則第二次傳輸需要與第一次傳輸重疊。*后m-1行傳輸?shù)脑匾话愣急容^小,因?yàn)榫矸e核一般都比較小,所以重疊傳輸數(shù)據(jù)的比例不大。32矩陣卷積的多核編程分析算法的并行性不僅有單核內(nèi)部的向量化實(shí)現(xiàn),還包括多核核。由于FT-matrix2000是多核處理器,研究矩陣卷積的多核并行性,尤其是大規(guī)模矩陣卷積,也是一個(gè)重要的內(nèi)容。由于核間并行性需要考慮計(jì)算負(fù)載的多核劃分算法的相關(guān)性、核間的通信開(kāi)銷等,因此多核程序的設(shè)計(jì)較為復(fù)雜。因?yàn)槟壳熬矸e神經(jīng)網(wǎng)絡(luò)模型中卷積層的計(jì)算規(guī)模存在于1×1到512×512之間,而且一般是卷積核尺寸較小的矩陣體積。因此,在矩陣卷積的多核實(shí)現(xiàn)中,一般不會(huì)將單個(gè)輸入的特征圖分配給多個(gè)核進(jìn)行計(jì)算。相反,每個(gè)核負(fù)責(zé)獨(dú)立的卷積計(jì)算,即通過(guò)與多個(gè)核共享輸入特征圖,圖7 FT-matrix2000矩陣卷積多核實(shí)現(xiàn)方案多核小32矩陣卷積的多核程序設(shè)計(jì)與分析算法的并行性不僅實(shí)現(xiàn)了單核內(nèi)部向量化,也實(shí)現(xiàn)了多核的核間并行。由于FT-matrix2000是多核處理器,矩陣卷積的多核并行性也是一個(gè)問(wèn)題。重要的內(nèi)容尤其是對(duì)于大規(guī)模矩陣卷積。因?yàn)楹酥g的并行需要考慮計(jì)算負(fù)載的多核劃分算法的相關(guān)性,核之間的通信開(kāi)銷等,由于當(dāng)前卷積神經(jīng)網(wǎng)絡(luò)模型中的體積,多核程序的設(shè)計(jì)更加復(fù)雜。乘積層的計(jì)算規(guī)模存在于1×1到512×512之間,一般為矩陣卷積運(yùn)算,卷積核尺寸較小。因此,在矩陣卷積的多核實(shí)現(xiàn)中,單個(gè)輸入特征圖一般不會(huì)分配給多個(gè)每個(gè)核負(fù)責(zé)獨(dú)立的卷積計(jì)算,即矩陣卷積的多核實(shí)現(xiàn)是通過(guò)共享輸入特征圖具有卷積核矩陣的多個(gè)核。矩陣卷積的多核實(shí)現(xiàn)如圖7 多核實(shí)現(xiàn)方案圖7多核實(shí)現(xiàn)a小32矩陣卷積的多核程序設(shè)計(jì)與分析算法的并行性不僅是單核內(nèi)部向量化的實(shí)現(xiàn),還包括互- 多核的核心并行性。由于FT-matrix2000是多核處理器,矩陣卷積的多核并行性也是一個(gè)問(wèn)題。重要的內(nèi)容尤其是對(duì)于大規(guī)模矩陣卷積。因?yàn)楹酥g的并行需要考慮多核劃分算法的計(jì)算負(fù)載、核之間的通信開(kāi)銷等的相關(guān)性,由于當(dāng)前卷積神經(jīng)網(wǎng)絡(luò)模型中的體積,多核程序的設(shè)計(jì)更加復(fù)雜。乘積層的計(jì)算規(guī)模存在于1×1到512×512之間,一般為矩陣卷積運(yùn)算,卷積核尺寸較小。因此,在矩陣卷積的多核實(shí)現(xiàn)中,單個(gè)輸入特征圖一般不會(huì)分配給多個(gè)每個(gè)核負(fù)責(zé)獨(dú)立的卷積計(jì)算,即矩陣卷積的多核實(shí)現(xiàn)是通過(guò)共享輸入特征圖具有卷積核矩陣的多個(gè)核。矩陣卷積的多核實(shí)現(xiàn)如圖7 多核實(shí)現(xiàn)方案 Fig7Multicoreimplementa 乘積層的計(jì)算規(guī)模存在于1×1到512×512之間,一般為矩陣卷積運(yùn)算,卷積核尺寸較小。因此,在矩陣卷積的多核實(shí)現(xiàn)中,單個(gè)輸入特征圖一般不會(huì)分配給多個(gè)每個(gè)核負(fù)責(zé)獨(dú)立的卷積計(jì)算,即矩陣卷積的多核實(shí)現(xiàn)是通過(guò)共享輸入特征圖具有卷積核矩陣的多個(gè)核。矩陣卷積的多核實(shí)現(xiàn)如圖7 多核實(shí)現(xiàn)方案 Fig7Multicoreimplementa 乘積層的計(jì)算規(guī)模存在于1×1到512×512之間,一般為矩陣卷積運(yùn)算,卷積核尺寸較小。因此,在矩陣卷積的多核實(shí)現(xiàn)中,單個(gè)輸入特征圖一般不會(huì)分配給多個(gè)每個(gè)核負(fù)責(zé)獨(dú)立的卷積計(jì)算,即矩陣卷積的多核實(shí)現(xiàn)是通過(guò)共享輸入特征圖具有卷積核矩陣的多個(gè)核。矩陣卷積的多核實(shí)現(xiàn)如圖7 多核實(shí)現(xiàn)方案 Fig7Multicoreimplementa 單個(gè)輸入特征圖一般不會(huì)分配給多個(gè)核,每個(gè)核負(fù)責(zé)獨(dú)立的卷積計(jì)算,即通過(guò)與卷積核矩陣的多個(gè)核共享輸入特征圖來(lái)實(shí)現(xiàn)矩陣卷積的多核。矩陣卷積的多核實(shí)現(xiàn)如圖7 多核實(shí)現(xiàn)方案 Fig7Multicoreimplementa 單個(gè)輸入特征圖一般不會(huì)分配給多個(gè)核,每個(gè)核負(fù)責(zé)獨(dú)立的卷積計(jì)算,即通過(guò)與卷積核矩陣的多個(gè)核共享輸入特征圖來(lái)實(shí)現(xiàn)矩陣卷積的多核。矩陣卷積的多核實(shí)現(xiàn)如圖7 多核實(shí)現(xiàn)方案 Fig7Multicoreimplementa

tionofmatrixconvolutiononFT-matrix2000 另外,由于在矩陣卷積的計(jì)算過(guò)程中,由于卷積核的大小和卷積核在輸入特征圖上的滑動(dòng)步長(zhǎng),在單次卷積的計(jì)算過(guò)程中存在一定的數(shù)據(jù)相關(guān)性,所以考慮多核同步。單輸入特征圖卷積計(jì)算的通信開(kāi)銷不容易進(jìn)行多核并行化。因此,本文主要針對(duì)單個(gè)卷積矩陣的單核向量化設(shè)計(jì)。當(dāng)有多個(gè)獨(dú)立的卷積計(jì)算時(shí),使用多個(gè)核并行加速多輸出矩陣。卷積的多核實(shí)現(xiàn)如圖7所示。 DDR中的輸入特征圖被廣播到n個(gè)計(jì)算核,而n核將不同的卷積核加載到n核標(biāo)量存儲(chǔ)器SM,那么每個(gè)多核程序?qū)崿F(xiàn)的核的計(jì)算過(guò)程與單核程序相同。4 性能測(cè)試與分析 本次實(shí)驗(yàn)對(duì)比平臺(tái)為AMDA10-6700APU,4核4線程,DDR316G內(nèi)存,主頻37GHz,GPU平臺(tái)為NVIDIAGeForceGTX1080TI11GB顯存,核心頻率15GHz,NVIDIA使用cudnn高度優(yōu)化卷積計(jì)算。24] 基于 Torch[25] 神經(jīng)網(wǎng)絡(luò)編程框架 FT-matrix2000 平臺(tái)單核內(nèi)部向量存儲(chǔ)空間 768KB 標(biāo)量存儲(chǔ)空間 96KB 外部核心 DDR *大支持 128GB 時(shí)鐘頻率 1GHz 使用 TI 的函數(shù)庫(kù)和性能統(tǒng)計(jì)和優(yōu)化高性能多核數(shù)字信號(hào)處理器TMS320C66788內(nèi)核125GHz主頻每個(gè)內(nèi)核有32KB的L1P和32KB的L1D,基于CCS55軟件編程平臺(tái)完成所有程序代碼測(cè)試和性能統(tǒng)計(jì)。飛騰平臺(tái)采用類似CCS的FT-matrix2000軟件編程平臺(tái),完成FT-matrix2000矢量程序代碼的編譯和性能統(tǒng)計(jì)。核心代碼程序采用基于手工匯編的方法進(jìn)行軟件流水線和循環(huán)展開(kāi)優(yōu)化。通過(guò)第22節(jié)的分析,可以看出二維矩陣卷積是典型的計(jì)算密集型和訪問(wèn)者。當(dāng)前卷積神經(jīng)網(wǎng)絡(luò)模型中的存儲(chǔ)密集型操作和矩陣卷積的計(jì)算占整個(gè)模型計(jì)算的85個(gè)以上。因此,本實(shí)驗(yàn)選擇兩種計(jì)算方式來(lái)分析第一類卷積矩陣不變卷積核矩陣在尺度上的相應(yīng)增加。第二種卷積核矩陣。不變卷積矩陣尺度也相應(yīng)增加。圖中所有類似的16×5代表一個(gè)16×165×5的方陣,都是64位雙精度浮點(diǎn)數(shù)。圖8是基于卷積核的。FT-matrix2000 和 CPU6678 隨尺度變化 FT-matrix2000 和 CPU6678 的加速基于內(nèi)核尺度變化 圖 8 顯示了 FT-matrix2000 對(duì) CPU 和 TI6678 的加速隨著卷積核大小的變化。可以看出,F(xiàn)T-matrix2000矢量處理器相比主流多核CPU實(shí)現(xiàn)了2444倍的加速。與TI6678相比,加速比為1417倍。圖 9 顯示了具有相同卷積核大小的 FT-matrix2000。FT-matrix2000基于CPU和TI6678的加速比在這種計(jì)算模式下是主流CPU的14238倍。不等速加速比是TI6678的1321倍。圖 9 基于卷積矩陣變化的 FT-matrix2000 和 CPU6678 的加速比。-matrix2000矢量處理器相比主流CPU和TI6678的性能優(yōu)勢(shì)。由于我們的算法主要用于卷積神經(jīng)網(wǎng)絡(luò)中卷積層的計(jì)算卷積模板的翻譯,所以采用的數(shù)據(jù)計(jì)算規(guī)模并不大。從圖中可以看出,在矩陣體積的情況下卷積模板的翻譯,乘積計(jì)算規(guī)模較小時(shí),可以獲得較大的加速比,但當(dāng)矩陣尺寸增大時(shí),加速比減小,基本保持穩(wěn)定。可見(jiàn),這兩種計(jì)算方式對(duì)程序的執(zhí)行性能都有一定的影響。圖10是基于卷積核的尺度。改變了FT-matrix2000相對(duì)GPU加速比圖10SpeedupofFT-matrix2000andGPUbasedonkernelscalechange,主流多核CPU實(shí)現(xiàn)了2444倍的加速,相比TI6678實(shí)現(xiàn)了1417倍的加速。圖 9 顯示了卷積核大小相同的 FT-matrix2000,輸入矩陣大小基于 CPU 和 TI6678 的加速而變化。在這種計(jì)算模式下,與主流CPU相比,實(shí)現(xiàn)了14238倍的加速,相比TI6678實(shí)現(xiàn)了1321倍的加速。圖9 基于卷積矩陣變化的FT-matrix2000和CPU6678的加速比。圖9展示了FT-matrix2000向量處理器在兩種卷積計(jì)算模式下相對(duì)于主流CPU和TI6678的性能優(yōu)勢(shì)。由于我們的算法主要用于卷積神經(jīng)網(wǎng)絡(luò)中卷積層的計(jì)算,所取數(shù)據(jù)的計(jì)算規(guī)模并不大。從圖中可以看出,當(dāng)矩陣卷積計(jì)算的規(guī)模較小時(shí),可以獲得較大的加速比,而當(dāng)矩陣規(guī)模增大時(shí),加速比減小,基本保持穩(wěn)定。可以看出這兩種計(jì)算方式對(duì)程序的影響很大 實(shí)現(xiàn)性能有一定影響 圖10 FT-matrix2000相對(duì)于基于卷積核大小變化的GPU加速比 圖10SpeedupofFT-matrix2000和GPUbasedonkernelscalechange主流多核CPU實(shí)現(xiàn)了2444倍的提速,相比TI6678實(shí)現(xiàn)了1417倍的提速。圖 9 顯示了卷積核大小相同的 FT-matrix2000,輸入矩陣大小基于 CPU 和 TI6678 的加速而變化。在這種計(jì)算模式下,與主流CPU相比,實(shí)現(xiàn)了14238倍的加速,相比TI6678實(shí)現(xiàn)了1321倍的加速。圖9 基于卷積矩陣變化的FT-matrix2000和CPU6678的加速比。圖9展示了FT-matrix2000向量處理器在兩種卷積計(jì)算模式下相對(duì)于主流CPU和TI6678的性能優(yōu)勢(shì)。由于我們的算法主要用于卷積神經(jīng)網(wǎng)絡(luò)中卷積層的計(jì)算,所取數(shù)據(jù)的計(jì)算規(guī)模并不大。從圖中可以看出,當(dāng)矩陣卷積計(jì)算的規(guī)模較小時(shí),可以獲得更大的加速比,當(dāng)矩陣規(guī)模增大時(shí),加速比減小,基本保持穩(wěn)定??梢钥闯鲞@兩種計(jì)算方式對(duì)程序的影響很大 實(shí)現(xiàn)性能有一定影響 圖10 FT-matrix2000相對(duì)于基于卷積核大小變化的GPU加速比 圖10SpeedupofFT-matrix2000和GPUbasedonkernelscalechange矩陣2000向量的性能優(yōu)勢(shì)處理器對(duì)比主流CPU和TI6678。由于我們的算法主要用于卷積神經(jīng)網(wǎng)絡(luò)中卷積層的計(jì)算,所以采用的數(shù)據(jù)計(jì)算規(guī)模并不大。從圖中可以看出是矩陣卷積。當(dāng)計(jì)算規(guī)模較小時(shí),可以獲得較大的加速比,但當(dāng)矩陣規(guī)模增大時(shí),加速比減小,基本保持穩(wěn)定??梢?jiàn),這兩種計(jì)算方式對(duì)程序的執(zhí)行性能都有一定的影響。圖10是基于卷積核尺度的變化。FT-matrix2000相對(duì)GPU加速比圖10SpeedupofFT-matrix2000和GPU基于內(nèi)核尺度變化matrix2000矢量處理器相比主流CPU和TI6678的性能優(yōu)勢(shì)。由于我們的算法主要用于卷積神經(jīng)網(wǎng)絡(luò)中卷積層的計(jì)算,所以采用的數(shù)據(jù)計(jì)算規(guī)模并不大。從圖中可以看出是矩陣卷積。當(dāng)計(jì)算規(guī)模較小時(shí),可以獲得較大的加速比,但當(dāng)矩陣規(guī)模增大時(shí),增速比下降,基本保持穩(wěn)定??梢?jiàn),這兩種計(jì)算方式對(duì)程序的執(zhí)行性能都有一定的影響。圖10是基于卷積核尺度的變化。FT-matrix2000的相對(duì)GPU加速比 Fig10SpeedupofFT-matrix2000andGPUbasedonkernelscalechange

相關(guān)閱讀Relate

  • 法國(guó)簽證營(yíng)業(yè)執(zhí)照翻譯件模板 你與申根簽證只有一條推送的距離
  • 江蘇省增值稅發(fā)票翻譯模板 江蘇稅務(wù)局出口貨物退(免)稅申報(bào)管理系統(tǒng)軟件
  • 肄業(yè)證書翻譯模板 復(fù)旦大學(xué)學(xué)生學(xué)業(yè)證明文書管理細(xì)則(試行)
  • 四級(jí)英語(yǔ)作文模板帶翻譯 大學(xué)英語(yǔ)四級(jí)翻譯模擬訓(xùn)練及答案
  • 社會(huì)某信用代碼證翻譯模板 js驗(yàn)證某社會(huì)信用代碼,某社會(huì)信用代碼 驗(yàn)證js,js+驗(yàn)證+社會(huì)信用代碼證
  • 美國(guó)移民證件翻譯模板 日語(yǔ)簽證翻譯聊聊身份證翻譯模板
  • 翻譯軟件模板 人類史上*實(shí)用的的文檔快速翻譯指南
  • 江蘇省增值稅發(fā)票翻譯模板 江蘇出口貨物退(免)稅申報(bào)管理服務(wù)平臺(tái)
  • 瑞士簽證房產(chǎn)證翻譯件模板 瑞士探親簽證—就讀子女
  • 日語(yǔ)戶口本翻譯模板 戶口本翻譯價(jià)格_戶口本翻譯一般多少錢?
  • 卷積模板的翻譯 面向向量處理器的二維矩陣卷積的設(shè)計(jì)與實(shí)現(xiàn) www.angeldealglobal.com/fymb/7241.html
    ?
    本站部分內(nèi)容和圖片來(lái)源于網(wǎng)絡(luò)用戶和讀者投稿,不確定投稿用戶享有完全著作權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》,如果侵犯了您的權(quán)利,請(qǐng)聯(lián)系:chinazxzy@163.com,及時(shí)刪除。
    Go To Top 回頂部
    • 掃一掃,微信在線