卷積模板的翻譯 面向向量處理器的二維矩陣卷積的設計與實現
日期:2023-03-11 12:39:36 / 人氣: 1145 / 發(fā)布者:成都翻譯公司
面向向量處理器的二維矩陣卷積的設計與實現張軍陽郭陽國防科技大學計算機學院湖南長沙410073摘要為了加速卷積神經網絡模型的計算速度便于大規(guī)模神經網絡模型在嵌入式微處理器中的實現本矢量處理器二維矩陣卷積的設計與實現 本文以FT-matrix2000矢量處理器架構為研究背景。通過對多核向量處理器架構的分析和對卷積神經網絡算法的深入研究,將小規(guī)模的卷積核數據放置在標量存儲空間中。較大的卷積矩陣放在向量存儲中。數據布局方案、施工施工方案、施工方案實例、結構施工方案、營銷方案方案模板、施工組織設計(施工方案)、針對矩陣卷積中數據復用難的問題提出了依據 卷積核移動步長的不同動態(tài)可配置shuffling模式,通過對所取卷積的元素進行不同的移位操作,大大提高了卷積矩陣數據的復用率矩陣。對于二維矩陣卷積由于數據相關性的存在,多核并行的問題比較困難,多核的問題難以并行化。提出了一種多核并行方案,以與多個核共享卷積矩陣。設計了多核獨占多核并行方案。卷積核的大小是恒定的。卷積矩陣大小變化,卷積矩陣大小不變。兩種尺度變化的計算方法在主流CPU gtx1080TITI6678FT-matrix2000平臺上進行對比分析。*終的實驗結果表明,與多核CPU相比,它可以加速高達238倍,相比TI6678,它可以加速21倍。與高性能gtx1080TI相比,可加速663805倍。
尤其是在圖像識別 [2] 語音識別 [3] 機器翻譯 [4] 基于自然語言處理等領域的深度學習目標識別技術取得重大突破,引發(fā)了機器領域的新研究浪潮學習和計算機視覺。深度學習包括卷積神經網絡ConvolutionalNeuralNetworkCNN[5-6]Deep Belief NetworkDBN[7-9]Auto-encoder[10]RecurrentNeuralNetwo等一系列神經網絡模型,rkRNN[11]等常用模型,尤其是基于CNN的模型,在圖像識別領域取得重大突破。目前,幾乎所有圖像識別任務中識別率*好的模型都是基于CNN的。一般來說,CNN模型有幾個卷積層。并且池化層交替出現。*后,它由幾個全連接層和分類層組成。卷積層的計算量占整個模型的85以上。[12] 因此,目前很多研究大多針對CNN加速器,如圖形處理單元GraphicProcessingUnitGPU[13 -14] Field Programmable Logic Gate Array FieldProgrammableGatedArrayFPGA[15-16] Application Specific Integrated CircuitASIC[17-19] Vector Digital Signal Processor DigitalSignalProcessorDSP等向量處理器架構是新穎的架構之一[20]一般包括標量處理單元和向量處理單元標量計算單元負責標量任務的計算和流量控制。矢量計算單元主要負責大規(guī)模的矢量計算。它包括幾個矢量處理單元。每個處理單元都包含豐富的計算組件。提高系統計算性能的同時,也對軟件開發(fā)提出了新的挑戰(zhàn)。如何根據矢量處理器、多處理器、多功能組件的架構特點,充分發(fā)揮各級并行性,高效矢量化各種應用,是目前面臨的主要難點[21]本文針對的難題是卷積神經網絡模型中的二維矩陣卷積,結合向量處理器的架構特點,設計了shuffle操作,提高算法的并行性,提高數據復用率方法,針對多輸出卷積結果矩陣的計算,提出了加速矩陣卷積計算的多核實現方案,并進行了算法優(yōu)化和從架構多級存儲和計算模式方面進行性能分析。圖 1 FT-matrix2000 處理器系統結構 Fig1 ArchitectureofFT-matrix20001 矢量處理器 FT-m 因此,目前很多研究主要針對CNN加速器,如圖形處理單元GraphicProcessingUnitGPU[13-14]現場可編程邏輯門陣列FieldProgrammableGatedArrayFPGA[15-16]專用集成電路ASIC[17-19]矢量數字信號處理器DigitalSignalProcessorDSP等矢量處理器架構是一種新穎的架構[20],一般包括一個標量處理單元和一個向量處理單元。標量計算單元負責標量任務的計算,流控矢量計算單元主要負責大規(guī)模的矢量計算。它包括幾個向量處理。該單元在每個處理單元上包含豐富的計算組件。它具有強大的計算能力,可以大大提高系統的計算性能。同時,也對軟件開發(fā)提出了新的挑戰(zhàn)。充分開發(fā)各級并行性以高效矢量化各種應用是目前面臨的主要難點[21] 本文針對卷積神經網絡模型中二維矩陣卷積的并行難問題,結合矢量處理器的設計架構特點 針對多輸出卷積結果矩陣的計算,提出了一種通過shuffle操作提高算法并行度和提高數據復用率的方法。從計算方式等方面進行了算法優(yōu)化和性能分析。 因此,目前很多研究主要針對CNN加速器,如圖形處理單元GraphicProcessingUnitGPU[13-14]現場可編程邏輯門陣列FieldProgrammableGatedArrayFPGA[15-16]專用集成電路ASIC[17-19]矢量數字信號處理器DigitalSignalProcessorDSP等矢量處理器架構是一種新穎的架構[20],一般包括一個標量處理單元和一個向量處理單元。標量計算單元負責標量任務的計算,流控矢量計算單元主要負責大規(guī)模的矢量計算。它包括幾個向量處理。該單元在每個處理單元上包含豐富的計算組件。它具有強大的計算能力,可以大大提高系統的計算性能。同時,也對軟件開發(fā)提出了新的挑戰(zhàn)。充分開發(fā)各級并行性以高效矢量化各種應用是目前面臨的主要難點[21] 本文針對卷積神經網絡模型中二維矩陣卷積的并行難問題,結合矢量處理器的設計架構特點 針對多輸出卷積結果矩陣的計算,提出了一種通過shuffle操作提高算法并行度和提高數據復用率的方法。從計算方式等方面進行了算法優(yōu)化和性能分析。該單元主要負責大規(guī)模的矢量計算。它包括幾個矢量處理單元。每個處理單元都包含豐富的計算組件。它具有強大的計算能力,可以大大提高系統的計算性能。同時,也對軟件開發(fā)提出了新的挑戰(zhàn)。矢量處理器多處理單元的多功能組件的架構特點充分發(fā)揮了各級并行性。高效矢量化是目前各種應用面臨的主要困難。[21] 本文重點介紹卷積神經網絡模型中的二維矩陣卷積。難以并行化的問題,結合向量處理器的架構特點,設計了一種通過shuffle操作提高算法并行度和提高數據復用率的方法,并提出了一種加速矩陣卷積來計算多輸出卷積結果矩陣。從多級存儲和計算模式的架構來計算多核實現方案以及算法優(yōu)化和性能分析。圖1 FT-matrix 2000處理器架構 圖1 FT-matrix 2000 1向量處理器架構 FT-m單元主要負責大規(guī)模的向量計算。它包括幾個矢量處理單元。每個處理單元都包含豐富的計算組件。它具有強大的計算能力,可以大大提高系統的計算性能。同時,它還對軟件開發(fā)提出了新的挑戰(zhàn)。矢量處理器多處理單元的多功能組件的架構特點充分發(fā)揮了各級并行性。高效矢量化是目前各種應用面臨的主要困難。[21] 本文重點介紹卷積神經網絡模型中的二維矩陣卷積。針對難以并行化的問題,結合向量處理器的架構特點,設計了一種通過shuffle操作提高算法并行度和提高數據復用率的方法,并提出了一種加速矩陣卷積用于計算多輸出卷積結果矩陣。從多級存儲和計算模式的架構來計算多核實現方案以及算法優(yōu)化和性能分析。圖1 FT-matrix 2000處理器架構 圖1 FT-matrix 2000 1向量處理器FT-m架構
VeryLongInstructionWordVLIW 架構包括向量處理單元 VectorProcessingUnitVPU 和標量處理單元 ScalarProcessingUnitSPUSPU 負責標量計算和流量控制 VPU 負責向量計算,包括 16 個向量處理單元 VectorProcessingElementVPE 每個 VPE 包含一個本地寄存器文件和 3 個浮點乘法和累加單元,FloatingpointMultiplyAccumulatorFMAC, 2個LoadStores和1個BP,共6個并行功能組件,所有VPE的相同數量的本地寄存器邏輯上組成一個1024位的向量寄存器SPU通過共享寄存器與VPU交換數據。支持廣播指令將標量寄存器數據廣播到向量寄存器。矢量處理器內核支持 11 條傳輸和可變長度的 VLIW 指令,其中包括 5 條標量指令和 6 條矢量指令。識別并分派到相應的功能單元執(zhí)行FT-matrix2000提供96KB標量內存ScalarMemorySM和768KB陣列內存ArrayMemoryAM用于向量訪問多核使用DDR和L1D之間共享DDR存儲結構支持多核共享全局緩存GlobalCacheGC,方便使用實現核心之間的數據交換和共享 2 矩陣卷積算法介紹與分析 21 卷積神經網絡的基本結構 具有代表性的卷積神經網絡結構如圖 2 所示。該模型主要用于早期的手寫數字識別任務 目前的神經網絡模型類似于這個模型,主要包括卷積層下采樣層全連接層和相應的正則化層。由于卷積神經網絡模型中的體積,模型的深度和廣度以及連接方法都發(fā)生了變化。堆積層的計算時間約占整個模型計算的85次以上。因此,本文主要研究加速卷積神經網絡模型中卷積層的計算。圖2 典型的卷積神經網絡結構 Fig2TypicalstructureofCNN22 二維矩陣卷積 二維矩陣卷積常用于圖像處理。卷積神經網絡中的卷積操作可以抽象為一組卷積核和一個輸入特征圖的卷積操作。每一個大小為 kx×ky 的體積,乘積內核在輸入特征圖上用 kx×ky 卷積窗口進行相應的點積運算,累加求和得到輸出特征圖中的一個元素。卷積核在輸入特征圖上從左到下自上而下。向右執(zhí)行上述操作,*終會得到一個二維輸出的特征圖。設置水平移動步長為Sx,垂直移動步長為Sy,則輸出特征圖上的位置為ab元素。輸出特征圖mo之間的卷積核就是輸入特征圖和輸出特征圖之間對應的偏移值。表示輸入特征圖和對應的輸出特征圖之間的一組連接。代表非線性激活函數如tanhsigmoid或ReLU 23二維矩陣卷積的常用計算方法圖3二維矩陣卷積計算的兩種方法圖3Twomethodsoftwo-Dimensionmatrixconvolutionforcalculating 3通道2×2卷積核可以得到兩個通過卷積計算輸出2×2的特征圖。我們可以發(fā)現,如果采用傳統的矩陣卷積計算方法,因為是二維矩陣卷積計算,尤其是當卷積核的規(guī)模較小時,算法的并行性就難以保證。因此,北京郵電大學張強強等人。[22]使用新的計算方法將卷積矩陣和卷積核矩陣擴展為矩陣塊。卷積計算是通過普通矩陣相乘來進行的,如圖3b所示。計算步驟如下:根據卷積核的大小和移動步長,將對應卷積矩陣的對應卷積塊展開為列向量。所有展開后的列向量組成一個新矩陣,將單個卷積核矩陣逐行展開成行向量。所有擴展的卷積核形成一個新的卷積核矩陣。將新的卷積矩陣和新的卷積核矩陣做成一個普通矩陣,然后可以通過矩陣乘法核對輸入的特征圖從上到下從左到右進行上述操作,*后得到一個二維的輸出特征將獲得地圖。設置水平移動步長為Sx,垂直移動步長為Sy,則輸出特征圖上的位置為ab元素。計算如等式11,其中是輸入特征圖mi和輸出特征圖mo之間的卷積核是輸入特征圖和輸出特征圖之間對應的偏移值,表示輸入特征圖和對應的輸出特征圖之間的連接集合。tanhsigmoid 或 ReLU 等非線性激活函數 23 二維矩陣卷積常用的計算方法 圖 3 二維矩陣卷積計算的兩種方法 圖 3 軟二維矩陣卷積計算的兩種方法 圖 3a 為傳統矩陣卷積計算方法 輸入為 3 3× 輸入特征圖 3 輸入卷積核為兩個 3 通道 2×2 卷積核。通過卷積計算,可以得到兩個2×2的輸出特征圖。我們可以發(fā)現,如果采用傳統的矩陣卷積計算方法,則是二維矩陣卷積計算,尤其是在卷積核較小的情況下,算法的并行性難以保證。因此,北京郵電大學張強強等人。[22]使用了一種新的計算方法,即卷積矩陣將卷積核矩陣展開成一個矩陣塊,然后通過與普通矩陣相乘來進行卷積計算。如圖3b所示,計算步驟如下。乘積塊擴展為列向量。所有擴展的列向量形成一個新矩陣。將單個卷積核矩陣逐行展開成行向量。所有擴展的卷積核組成一個新的卷積核矩陣,對新的卷積核進行卷積。矩陣和新的卷積核矩陣可以乘以普通矩陣和矩陣。內核對輸入的特征圖從上到下、從左到右進行上述操作,*終會得到一個二維的輸出特征圖。設置水平移動步長為Sx,垂直移動步長為Sy,則輸出特征圖上的位置為ab元素。計算如等式11,其中是輸入特征圖mi和輸出特征圖mo之間的卷積核是輸入特征圖和輸出特征圖之間對應的偏移值,表示輸入特征圖和對應的輸出特征圖。tanhsigmoid 或 ReLU 等非線性激活函數 23 二維矩陣卷積常用的計算方法 圖 3 二維矩陣卷積計算的兩種方法 圖 3 軟二維矩陣卷積計算的兩種方法 圖 3a 為傳統矩陣卷積計算方法 輸入為 3 3× 輸入特征圖 3 輸入卷積核為兩個 3 通道 2×2 卷積核。通過卷積計算,可以得到兩個2×2的輸出特征圖。我們可以發(fā)現,如果采用傳統的矩陣卷積計算方法,則是二維矩陣卷積計算,尤其是在卷積核較小的情況下,算法的并行性難以保證。所以,北京郵電大學張強強等。[22]使用了一種新的計算方法,即卷積矩陣將卷積核矩陣展開成一個矩陣塊,然后通過與普通矩陣相乘來進行卷積計算。如圖3b所示,計算步驟如下。乘積塊擴展為列向量。所有擴展的列向量形成一個新矩陣。將單個卷積核矩陣逐行展開成行向量。所有擴展的卷積核組成一個新的卷積核矩陣,對新的卷積核進行卷積。矩陣和新的卷積核矩陣可以乘以普通矩陣和矩陣。g 圖3a是傳統的矩陣卷積計算方法。輸入是三個 3×3 的輸入特征圖。輸入卷積核是兩個3通道的2×2卷積核。通過卷積計算可以得到兩個2×2的卷積核。我們可以發(fā)現,如果采用傳統的矩陣卷積計算方法,算法的并行性很難保證,尤其是在卷積核較小的情況下。因此,北京郵電大學張強-強[22]采用了一種新的計算方法,將卷積矩陣和卷積核矩陣展開成矩陣塊,然后通過乘以普通矩陣進行卷積計算,如圖3b所示. 計算步驟如下:卷積核的大小和移動步長將對應卷積矩陣的對應卷積塊展開為列向量。所有擴展的列向量形成一個新矩陣。將單個卷積核矩陣逐行展開為行向量。所有擴展卷積核形成一個新的卷積核矩陣。新的卷積矩陣和新的卷積核矩陣可以與普通矩陣和矩陣相乘。g 圖3a是傳統的矩陣卷積計算方法。輸入是三個 3×3 的輸入特征圖。輸入卷積核是兩個3通道的2×2卷積核。通過卷積計算可以得到兩個2×2的卷積核。我們可以發(fā)現,如果采用傳統的矩陣卷積計算方法,算法的并行性很難保證,尤其是在卷積核很小的時候。因此,北京郵電大學的張強-強[22]采用了一種新的計算方法,將卷積矩陣和卷積核矩陣展開成一個矩陣塊,然后將普通矩陣相乘進行卷積計算,如圖3b. 計算步驟如下: 卷積核的大小和移動步長將對應卷積矩陣的對應卷積塊展開為列向量。所有擴展的列向量形成一個新矩陣。將單個卷積核矩陣逐行展開為行向量。所有擴展卷積核形成一個新的卷積核矩陣。
通過調用普通BLASBasicLinearAlgebraSubprogramsBLAS[23]函數庫中的GEMMGeneralMatrixMultiplicationGEMM來完成二維矩陣卷積的計算,通過圖3b所示的方法,將小而難并行的卷積計算模塊組合成一個大的形式-scale 矩陣,然后使用矩陣乘法。高并行度提高矩陣卷積的計算效率。因為本文研究的矩陣卷積運算主要用于卷積神經網絡模型,而卷積計算的結果通常作為下一層運算的輸入值,神經網絡模型多層的計算結果具有特定的二維結構。圖3b中使用的計算方法通過組合成大規(guī)模矩陣,增加了矩陣卷積計算的并行度,但也破壞了卷積計算結果的二維結構。因此,計算結果不能直接作為下一級的輸入值??赡苄枰獙矸e結果進行重新排序以用作下一級操作的輸入值。同時,由于卷積矩陣經過反復擴展,擴展后的矩陣大小也大大增加。比如2×2卷積核尺度下的3×3卷積矩陣擴展到4×4,數據量增加了778,當卷積矩陣為5×5時,擴展后的卷積矩陣變化了16×5數據量增加到220,片上存儲對計算尤為重要。因此,該方法使得數據存儲量的增加成為該方法的主要缺陷。3 二維矩陣卷積的矢量化設計與實現第2節(jié)傳統卷積計算方法分析我們提出了一種新的二維矩陣卷積矢量化實現方法。算法實現過程如下: 1 根據多核向量處理器m的核數,輸入特征圖的個數n大小為n1×n2 輸入卷積核數k 大小為k1×k2 . 向量處理器單核向量存儲器容量v1和標量存儲器bank容量v2合理劃分為多核處理器中各核的計算負荷。2 特征圖元素將被輸入卷積核矩陣按行連續(xù)存儲在向量存儲庫AM中。卷積核矩陣按行連續(xù)存儲在標量存儲庫SM中。3 根據單核向量處理單元的數量加載p個輸入特征圖元素。寄存器和移位寄存器中的元素相乘,相乘結果累加到步驟4中的累加寄存器ACC 6 根據卷積核k1的行數,以列數k2重復上述過程,直到輸出特征圖的第一行元素的計算完成。7 根據輸入特征圖的行數n1和列數n2加載輸入特征圖的下一行。重復以上步驟完成整個卷積結果矩陣。計算卷積神經網絡模型中卷積核的尺度一般比較小,通常是1×13×35×57×711×11等,根據我們的算法,卷積核數據需要是標量的,所以將卷積核數據設置在放置在AM中的SM輸入特征圖矩陣中,向量化過程如下: 31 單核程序向量化方法1 我們以雙精度浮點數為例。單個數據為 8 個字節(jié)。為了描述,我們將輸入特征圖設置為 N×N。方陣為N×N×8768×1024,所以向量存儲庫AM中一次可以存儲的*大輸入特征圖尺寸為222×222。對于嵌入式處理器編程,當輸入特征圖的大小大于222×222時,我們需要通過DMA從外部存儲器DDR加載數據。其他行的計算過程類似16個PE加載輸入矩陣B的第一行元素 b11b12b13b14b15b16 標量加載卷積核矩陣的第一行元素k11廣播k11到向量寄存器,即向量寄存器為k11k11k1對下一行元素重復以上步驟,完成整個卷積結果矩陣的計算。卷積神經網絡模型中卷積核的大小一般比較小,通常是1×13×35×57×711×11等,根據我們的算法,體積是需要的。乘積核心數據需要取一個標量,所以卷積核心數據放在SM輸入特征圖矩陣中,放在AM中。矢量化過程如下:31 單核程序向量化方法1 我們以雙精度浮點數為例。單個數據為 8 個字節(jié)。出于敘述的目的,我們將輸入特征圖設置為一個 N×N 方陣,然后是 N×N×8768×1024,因此向量存儲器 AM 中單次可以存儲的*大輸入特征圖大小為 222 ×222。對于嵌入式處理器編程來說,當輸入特征圖的大小大于222×222時,我們需要通過DMA從外部存儲器DDR中加載數據。圖4 FT-matrix2000矩陣卷積算法映射B6×6步長1×1kernel2×2 Fig4AlgorithmmappingofFT-matrix2000B6×6stride1×1kernel2×2 我們用一個例子來說明如何同時計算輸出卷積矩陣的多個元素的向量化時間不展開卷積矩陣。考慮一個1×6 PEsPE1PE2PE3PE4PE5PE6輸入特征圖矩陣I為6×6卷乘積核心矩陣為2×2步長為1,為簡單起見,我們只描述第一行的計算輸出結果矩陣如圖4所示。其他行的計算過程與16個PE類似。加載輸入矩陣 B 的第一行 b11b12b13b14b15b16 標量 加載卷積核矩陣第一行的第一個元素 k11 并將 k11 廣播到向量寄存器,即向量寄存器中的元素為 k11k11k1 重復上述步驟下一行元素完成整個卷積結果矩陣的計算。卷積神經網絡模型中卷積核的大小一般比較小,通常為1×13×35×57×711×11等,根據我們的算法,音量是必需的。乘積核心數據需要取一個標量,所以卷積核心數據放在SM輸入特征圖矩陣中,放在AM中。矢量化過程如下: 31 單核程序矢量化方法 1 我們以雙精度浮點數為例。單個數據為 8 個字節(jié)。出于敘述的目的,我們將輸入特征圖設置為一個 N×N 方陣,然后是 N×N×8768×1024,因此向量存儲器 AM 中單次可以存儲的*大輸入特征圖大小為 222 ×222。對于嵌入式處理器編程來說,當輸入特征圖的大小大于222×222時,我們需要通過DMA從外部存儲器DDR中加載數據。圖4 FT-matrix2000矩陣卷積算法映射B6×6步長1×1kernel2×2 Fig4AlgorithmmappingofFT-matrix2000B6×6stride1×1kernel2×2 我們用一個例子來說明如何同時計算輸出卷積矩陣的多個元素的向量化時間不展開卷積矩陣??紤]一個 1×6 PEsPE1PE2PE3PE4PE5PE6 輸入特征圖矩陣 I 為 6×6 體積 乘積核心矩陣為 2×2,步長為 1。為簡單起見,我們只描述第輸出結果矩陣如圖4所示。其他行的計算過程與16個PE類似。加載輸入矩陣B的第一行 b11b12b13b14b15b16 scalar 加載卷積核矩陣第一行的第一個元素k11,將k11廣播到向量寄存器,即 向量寄存器中的元素為k11k11k1通過DMA在R中加載數據。 圖4 FT-matrix2000矩陣卷積算法映射B6×6步長1×1kernel2×2 Fig4AlgorithmmappingofFT-matrix2000B6×6stride1×1kernel2×2 不展開舉例說明卷積矩陣。如何同時計算輸出卷積矩陣的多個元素的向量化實現方法考慮一個1×6 PEsPE1PE2PE3PE4PE5PE6輸入特征圖矩陣I為6×6卷積核矩陣為2×2步長為1為簡單起見,我們只描述輸出結果矩陣第一行元素的計算如圖4所示,其他行的計算過程與16個PE的計算過程類似。加載輸入矩陣 B 的第一個元素。 b11b12b13b14b15b16。卷積核矩陣第一行的第一個元素。向量寄存器,即向量寄存器中的元素為k11k11k1在R中通過DMA加載數據。 圖4 FT-matrix2000矩陣卷積算法映射B6×6步長1×1kernel2×2 Fig4AlgorithmmappingofFT-matrix2000B6×6stride1×1kernel2×2以不展開卷積矩陣為例進行說明。如何同時計算輸出卷積矩陣的多個元素的向量化實現方法考慮一個1×6 PEsPE1PE2PE3PE4PE5PE6輸入特征圖矩陣I為6×6卷積核矩陣為2×2步長為1為簡單起見,我們只描述輸出結果矩陣第一行元素的計算如圖4所示,其他行的計算過程與16個PE的計算過程類似。加載輸入矩陣 B 的第一個元素。 b11b12b13b14b15b16。卷積核矩陣第一行的第一個元素。向量寄存器,即向量寄存器中的元素為k11k11k1
1k11k11k11通過向量處理器的乘加指令VFMULAD,每個PE完成對應元素與k11的乘法,并將乘法結果累加到對應的累加寄存器ACC中。2 根據卷積核的移動步長配置對應的shuffle模式如圖5所示,如本例所示,因為移動步長為1,所以配置的shuffle模式為移動對應向量寄存器中的元素向左 1 位。*左邊的元素移出寄存器,*右邊的元素補0。當前PEs對應移位。元素為b12b13b14b15b160,同時加載卷積核第一行的第二個元素k12,廣播到向量寄存器,即k12k12k12k12k12。通過向量乘加指令,每個PE完成對應元素與k12的相乘,并將相乘結果累加為1。累加寄存器ACC中的36個PE加載輸入矩陣B的第二行元素b21b22b23b24b25b26。標量加載卷積核矩陣第二行的第一個元素k21,并將其廣播到向量寄存器。通過向量乘加指令,所有PE完成相應的元素和卷積。核心元素k21的乘法運算和乘法結果累加到累加寄存器2中 4中的shuffle方式與2中相同,3中取的元素移位。移位完成后,當前PE對應的元素為b22b23b24b25b260。同時標量加載卷積核矩陣第二行的第二個元素,廣播到向量寄存器,即k22k22k22k22k22k22。使用向量乘加指令完成對應元素與k22的乘法運算,并將結果累加到3個ACC中的累加寄存器完成。步驟4中,累加寄存器中的值為卷積結果矩陣第一行的元素。圖 5 步長為 1 的 shuffle 操作。以下優(yōu)點不需要將輸入特征圖和卷積核重新組織成大規(guī)模矩陣來提高并行性,減少矩陣擴展帶來的存儲壓力,增加數據的利用率。在向量化代碼的優(yōu)化過程中,我們可以通過軟件流水線來提高算法的并行性。在完全流水線的情況下,每個鏡頭可以同時計算輸出特征圖的一行元素。同時,也避免了文獻[15]中使用的PEs數組之間頻繁的數據移動。6 Double Buffer 機制展示 Fig6 Doublebuffermechanism2 當輸入特征圖的大小超過向量內存條的容量時,無法一次性添加向量內存條。加載整個輸入特征圖。在高性能計算中,需要平滑各級存儲之間的數據移動,以保證內核計算所需的數據供應,實現高效的處理器效率。因為FT-matrix2具有寄存器文件L1DArrayMemoryGlobalCache和DDR和L1D等多級存儲結構,可以配置為full Cache和full SRAM兩種模式。因此,當輸入特征圖的數量超過向量存儲庫的容量時,我們使用 SRAM 將 L1D 配置為全 SRAM,并使用雙緩沖乒乓模式來平滑多級存儲。數據傳輸的結構使內核的計算與DMA數據移動完全重疊,使內核始終處于峰值運行狀態(tài),以達到*佳的計算效率。雙緩沖機制如圖6所示,值得注意的是卷積計算有數據重疊,所以是在volume中。當乘積矩陣按照卷積核的大小分塊傳輸時,第二次傳輸的卷積矩陣需要有部分數據與第一次傳輸的數據重疊。假設卷積核的大小為m×m。如果第一次傳輸是1到n行那么第二次需要重疊第一次傳輸的*后m-1行元素的傳輸。因為卷積核一般都比較小,所以重疊傳輸數據的比例不大。32矩陣卷積的多核程序設計與分析算法不僅僅是單核并行。內部矢量化實現還包括多核內核間并行性。由于FT-matrix2000是多核處理器,研究矩陣卷積的多核并行性也很重要,尤其是大規(guī)模矩陣卷積,由于需要核間并行性??紤]到計算負載的多核劃分算法的相關性、核之間的通信開銷等,多核程序的設計較為復雜。因為目前的卷積神經網絡模型中卷積層的計算規(guī)模存在于1×1到512×512之間,而且一般都是卷積核尺寸較小的矩陣卷積運算。因此,在矩陣卷積的多核實現中,單個輸入特征圖一般不會分配給多個核進行計算。相反,每個核心負責獨立的卷積計算。輸入特征圖是多核共享卷積核矩陣。多核的獨特方式是矩陣卷積的多核實現。圖7 FT-matrix2000矩陣卷積多核實現方案 Fig7 MulticoreimplementaSRAM 兩種模式。因此,當輸入特征圖的數量超過向量存儲庫的容量時,我們使用 SRAM 將 L1D 配置為完整的 SRAM。使用雙緩沖乒乓模式,平滑多級存儲結構的數據傳輸,使內核計算和DMA 數據移動完全重疊,讓內核始終處于峰值運行狀態(tài),達到*佳計算效率. 雙緩沖機制如圖6所示。 值得注意的是,由于卷積計算有數據重疊,所以在卷積矩陣分塊傳輸時是基于卷積核的。卷積矩陣的第二次傳輸的大小需要有部分數據與第一次傳輸的數據重疊。假設卷積核的大小為m×m,如果第一次傳輸是1到n行,則第二次傳輸需要與第一次傳輸重疊。*后m-1行傳輸的元素一般都比較小,因為卷積核一般都比較小,所以重疊傳輸數據的比例不大。32矩陣卷積的多核編程分析算法的并行性不僅有單核內部的向量化實現,還包括多核核。由于FT-matrix2000是多核處理器,研究矩陣卷積的多核并行性,尤其是大規(guī)模矩陣卷積,也是一個重要的內容。由于核間并行性需要考慮計算負載的多核劃分算法的相關性、核間的通信開銷等,因此多核程序的設計較為復雜。因為目前卷積神經網絡模型中卷積層的計算規(guī)模存在于1×1到512×512之間,而且一般是卷積核尺寸較小的矩陣體積。所以,在矩陣卷積的多核實現中,一般不會將單個輸入的特征圖分配給多個核進行計算。相反,每個核負責獨立的卷積計算,即通過與多個核共享輸入特征圖,卷積核矩陣多核以獨特的方式實現多核矩陣卷積圖7 FT-matrix2000矩陣卷積多核-core實現方案SRAM兩種模式。因此,當輸入特征圖的數量超過向量存儲庫的容量時,我們使用 SRAM 將 L1D 配置為完整的 SRAM。使用雙緩沖乒乓模式,平滑多級存儲結構的數據傳輸,使內核計算和DMA 數據移動完全重疊,讓內核始終處于峰值運行狀態(tài),達到*佳計算效率. 雙緩沖機制如圖6所示。 值得注意的是,由于卷積計算有數據重疊,所以在卷積矩陣分塊傳輸時是基于卷積核的。卷積矩陣的第二次傳輸的大小需要有部分數據與第一次傳輸的數據重疊。假設卷積核的大小為m×m,如果第一次傳輸是1到n行,則第二次傳輸需要與第一次傳輸重疊。*后m-1行傳輸的元素一般都比較小,因為卷積核一般都比較小,所以重疊傳輸數據的比例不大。32矩陣卷積的多核編程分析算法的并行性不僅有單核內部的向量化實現,還包括多核核。由于FT-matrix2000是多核處理器,研究矩陣卷積的多核并行性,尤其是大規(guī)模矩陣卷積,也是一個重要的內容。由于核間并行性需要考慮計算負載的多核劃分算法的相關性、核間的通信開銷等,因此多核程序的設計較為復雜。因為目前卷積神經網絡模型中卷積層的計算規(guī)模存在于1×1到512×512之間,而且一般是卷積核尺寸較小的矩陣體積。因此,在矩陣卷積的多核實現中,一般不會將單個輸入的特征圖分配給多個核進行計算。相反,每個核負責獨立的卷積計算,即通過與多個核共享輸入特征圖,圖7 FT-matrix2000矩陣卷積多核實現方案多核小32矩陣卷積的多核程序設計與分析算法的并行性不僅實現了單核內部向量化,也實現了多核的核間并行。由于FT-matrix2000是多核處理器,矩陣卷積的多核并行性也是一個問題。重要的內容尤其是對于大規(guī)模矩陣卷積。因為核之間的并行需要考慮計算負載的多核劃分算法的相關性,核之間的通信開銷等,由于當前卷積神經網絡模型中的體積,多核程序的設計更加復雜。乘積層的計算規(guī)模存在于1×1到512×512之間,一般為矩陣卷積運算,卷積核尺寸較小。因此,在矩陣卷積的多核實現中,單個輸入特征圖一般不會分配給多個每個核負責獨立的卷積計算,即矩陣卷積的多核實現是通過共享輸入特征圖具有卷積核矩陣的多個核。矩陣卷積的多核實現如圖7 多核實現方案圖7多核實現a小32矩陣卷積的多核程序設計與分析算法的并行性不僅是單核內部向量化的實現,還包括互- 多核的核心并行性。由于FT-matrix2000是多核處理器,矩陣卷積的多核并行性也是一個問題。重要的內容尤其是對于大規(guī)模矩陣卷積。因為核之間的并行需要考慮多核劃分算法的計算負載、核之間的通信開銷等的相關性,由于當前卷積神經網絡模型中的體積,多核程序的設計更加復雜。乘積層的計算規(guī)模存在于1×1到512×512之間,一般為矩陣卷積運算,卷積核尺寸較小。因此,在矩陣卷積的多核實現中,單個輸入特征圖一般不會分配給多個每個核負責獨立的卷積計算,即矩陣卷積的多核實現是通過共享輸入特征圖具有卷積核矩陣的多個核。矩陣卷積的多核實現如圖7 多核實現方案 Fig7Multicoreimplementa 乘積層的計算規(guī)模存在于1×1到512×512之間,一般為矩陣卷積運算,卷積核尺寸較小。因此,在矩陣卷積的多核實現中,單個輸入特征圖一般不會分配給多個每個核負責獨立的卷積計算,即矩陣卷積的多核實現是通過共享輸入特征圖具有卷積核矩陣的多個核。矩陣卷積的多核實現如圖7 多核實現方案 Fig7Multicoreimplementa 乘積層的計算規(guī)模存在于1×1到512×512之間,一般為矩陣卷積運算,卷積核尺寸較小。因此,在矩陣卷積的多核實現中,單個輸入特征圖一般不會分配給多個每個核負責獨立的卷積計算,即矩陣卷積的多核實現是通過共享輸入特征圖具有卷積核矩陣的多個核。矩陣卷積的多核實現如圖7 多核實現方案 Fig7Multicoreimplementa 單個輸入特征圖一般不會分配給多個核,每個核負責獨立的卷積計算,即通過與卷積核矩陣的多個核共享輸入特征圖來實現矩陣卷積的多核。矩陣卷積的多核實現如圖7 多核實現方案 Fig7Multicoreimplementa 單個輸入特征圖一般不會分配給多個核,每個核負責獨立的卷積計算,即通過與卷積核矩陣的多個核共享輸入特征圖來實現矩陣卷積的多核。矩陣卷積的多核實現如圖7 多核實現方案 Fig7Multicoreimplementa
tionofmatrixconvolutiononFT-matrix2000 另外,由于在矩陣卷積的計算過程中,由于卷積核的大小和卷積核在輸入特征圖上的滑動步長,在單次卷積的計算過程中存在一定的數據相關性,所以考慮多核同步。單輸入特征圖卷積計算的通信開銷不容易進行多核并行化。因此,本文主要針對單個卷積矩陣的單核向量化設計。當有多個獨立的卷積計算時,使用多個核并行加速多輸出矩陣。卷積的多核實現如圖7所示。 DDR中的輸入特征圖被廣播到n個計算核,而n核將不同的卷積核加載到n核標量存儲器SM,那么每個多核程序實現的核的計算過程與單核程序相同。4 性能測試與分析 本次實驗對比平臺為AMDA10-6700APU,4核4線程,DDR316G內存,主頻37GHz,GPU平臺為NVIDIAGeForceGTX1080TI11GB顯存,核心頻率15GHz,NVIDIA使用cudnn高度優(yōu)化卷積計算。24] 基于 Torch[25] 神經網絡編程框架 FT-matrix2000 平臺單核內部向量存儲空間 768KB 標量存儲空間 96KB 外部核心 DDR *大支持 128GB 時鐘頻率 1GHz 使用 TI 的函數庫和性能統計和優(yōu)化高性能多核數字信號處理器TMS320C66788內核125GHz主頻每個內核有32KB的L1P和32KB的L1D,基于CCS55軟件編程平臺完成所有程序代碼測試和性能統計。飛騰平臺采用類似CCS的FT-matrix2000軟件編程平臺,完成FT-matrix2000矢量程序代碼的編譯和性能統計。核心代碼程序采用基于手工匯編的方法進行軟件流水線和循環(huán)展開優(yōu)化。通過第22節(jié)的分析,可以看出二維矩陣卷積是典型的計算密集型和訪問者。當前卷積神經網絡模型中的存儲密集型操作和矩陣卷積的計算占整個模型計算的85個以上。因此,本實驗選擇兩種計算方式來分析第一類卷積矩陣不變卷積核矩陣在尺度上的相應增加。第二種卷積核矩陣。不變卷積矩陣尺度也相應增加。圖中所有類似的16×5代表一個16×165×5的方陣,都是64位雙精度浮點數。圖8是基于卷積核的。FT-matrix2000 和 CPU6678 隨尺度變化 FT-matrix2000 和 CPU6678 的加速基于內核尺度變化 圖 8 顯示了 FT-matrix2000 對 CPU 和 TI6678 的加速隨著卷積核大小的變化??梢钥闯?,FT-matrix2000矢量處理器相比主流多核CPU實現了2444倍的加速。與TI6678相比,加速比為1417倍。圖 9 顯示了具有相同卷積核大小的 FT-matrix2000。FT-matrix2000基于CPU和TI6678的加速比在這種計算模式下是主流CPU的14238倍。不等速加速比是TI6678的1321倍。圖 9 基于卷積矩陣變化的 FT-matrix2000 和 CPU6678 的加速比。-matrix2000矢量處理器相比主流CPU和TI6678的性能優(yōu)勢。由于我們的算法主要用于卷積神經網絡中卷積層的計算卷積模板的翻譯,所以采用的數據計算規(guī)模并不大。從圖中可以看出,在矩陣體積的情況下卷積模板的翻譯,乘積計算規(guī)模較小時,可以獲得較大的加速比,但當矩陣尺寸增大時,加速比減小,基本保持穩(wěn)定??梢姡@兩種計算方式對程序的執(zhí)行性能都有一定的影響。圖10是基于卷積核的尺度。改變了FT-matrix2000相對GPU加速比圖10SpeedupofFT-matrix2000andGPUbasedonkernelscalechange,主流多核CPU實現了2444倍的加速,相比TI6678實現了1417倍的加速。圖 9 顯示了卷積核大小相同的 FT-matrix2000,輸入矩陣大小基于 CPU 和 TI6678 的加速而變化。在這種計算模式下,與主流CPU相比,實現了14238倍的加速,相比TI6678實現了1321倍的加速。圖9 基于卷積矩陣變化的FT-matrix2000和CPU6678的加速比。圖9展示了FT-matrix2000向量處理器在兩種卷積計算模式下相對于主流CPU和TI6678的性能優(yōu)勢。由于我們的算法主要用于卷積神經網絡中卷積層的計算,所取數據的計算規(guī)模并不大。從圖中可以看出,當矩陣卷積計算的規(guī)模較小時,可以獲得較大的加速比,而當矩陣規(guī)模增大時,加速比減小,基本保持穩(wěn)定??梢钥闯鲞@兩種計算方式對程序的影響很大 實現性能有一定影響 圖10 FT-matrix2000相對于基于卷積核大小變化的GPU加速比 圖10SpeedupofFT-matrix2000和GPUbasedonkernelscalechange主流多核CPU實現了2444倍的提速,相比TI6678實現了1417倍的提速。圖 9 顯示了卷積核大小相同的 FT-matrix2000,輸入矩陣大小基于 CPU 和 TI6678 的加速而變化。在這種計算模式下,與主流CPU相比,實現了14238倍的加速,相比TI6678實現了1321倍的加速。圖9 基于卷積矩陣變化的FT-matrix2000和CPU6678的加速比。圖9展示了FT-matrix2000向量處理器在兩種卷積計算模式下相對于主流CPU和TI6678的性能優(yōu)勢。由于我們的算法主要用于卷積神經網絡中卷積層的計算,所取數據的計算規(guī)模并不大。從圖中可以看出,當矩陣卷積計算的規(guī)模較小時,可以獲得更大的加速比,當矩陣規(guī)模增大時,加速比減小,基本保持穩(wěn)定。可以看出這兩種計算方式對程序的影響很大 實現性能有一定影響 圖10 FT-matrix2000相對于基于卷積核大小變化的GPU加速比 圖10SpeedupofFT-matrix2000和GPUbasedonkernelscalechange矩陣2000向量的性能優(yōu)勢處理器對比主流CPU和TI6678。由于我們的算法主要用于卷積神經網絡中卷積層的計算,所以采用的數據計算規(guī)模并不大。從圖中可以看出是矩陣卷積。當計算規(guī)模較小時,可以獲得較大的加速比,但當矩陣規(guī)模增大時,加速比減小,基本保持穩(wěn)定。可見,這兩種計算方式對程序的執(zhí)行性能都有一定的影響。圖10是基于卷積核尺度的變化。FT-matrix2000相對GPU加速比圖10SpeedupofFT-matrix2000和GPU基于內核尺度變化matrix2000矢量處理器相比主流CPU和TI6678的性能優(yōu)勢。由于我們的算法主要用于卷積神經網絡中卷積層的計算,所以采用的數據計算規(guī)模并不大。從圖中可以看出是矩陣卷積。當計算規(guī)模較小時,可以獲得較大的加速比,但當矩陣規(guī)模增大時,增速比下降,基本保持穩(wěn)定??梢?,這兩種計算方式對程序的執(zhí)行性能都有一定的影響。圖10是基于卷積核尺度的變化。FT-matrix2000的相對GPU加速比 Fig10SpeedupofFT-matrix2000andGPUbasedonkernelscalechange
相關閱讀Relate
熱門文章 Recent
- 中國農業(yè)銀行流水賬單翻譯模板 中國銀行交易流水明細清單翻譯模板2018-簽證2023-03-11
- 正規(guī)合同翻譯模板 大連合同翻譯_大連合同翻譯服務公司2023-03-11
- 德國萊比錫大學學位證翻譯模板2023-03-11
- 日文翻譯個人簡歷模板免費下載 日語翻譯崗位簡歷范文2023-03-11
- 寫作訓練求職信模板及翻譯 求職信模板中文2023-03-11
- 中等專業(yè)學校畢業(yè)證書翻譯模板 *高學歷證書是畢業(yè)證還是學位證?證書編號是什么意思?認證材料2023-03-11
- 高考成績翻譯模板 諾丁漢大學學位證和成績單應該怎么翻譯2023-03-11
- 中國公證書翻譯模板 公證書翻譯_委托公證書翻譯_公證處蓋章認證翻譯2023-03-11
- 真誠地道歉模板翻譯 中英對照道歉信篇一:道歉信英文模板及翻譯2023-03-11
- 蛋白質時間翻譯的模板 動物生物化學十五章蛋白質翻譯.ppt 33頁2023-03-11