TWI790789B - 卷積運算方法 - Google Patents
卷積運算方法 Download PDFInfo
- Publication number
- TWI790789B TWI790789B TW110139381A TW110139381A TWI790789B TW I790789 B TWI790789 B TW I790789B TW 110139381 A TW110139381 A TW 110139381A TW 110139381 A TW110139381 A TW 110139381A TW I790789 B TWI790789 B TW I790789B
- Authority
- TW
- Taiwan
- Prior art keywords
- depth
- convolution
- point
- block
- blocks
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000009825 accumulation Methods 0.000 claims abstract description 13
- 230000015654 memory Effects 0.000 claims description 125
- 238000004364 calculation method Methods 0.000 claims description 21
- 238000012545 processing Methods 0.000 claims description 11
- 230000003068 static effect Effects 0.000 claims description 3
- 238000012546 transfer Methods 0.000 claims description 2
- 238000005192 partition Methods 0.000 abstract 15
- 238000010586 diagram Methods 0.000 description 14
- 230000005540 biological transmission Effects 0.000 description 6
- 238000012935 Averaging Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Landscapes
- Electrotherapy Devices (AREA)
- Circuit For Audible Band Transducer (AREA)
- Measurement Of Velocity Or Position Using Acoustic Or Ultrasonic Waves (AREA)
Abstract
一種卷積運算方法,包含:依據分塊規則配置運算裝置;讀取運算資料分塊;讀取逐深度卷積參數分塊進行逐深度加權運算產生逐深度加權分塊;進行逐深度偏移運算產生逐深度卷積運算結果分塊;擷取逐點卷積參數分塊對逐深度卷積運算結果分塊進行逐點加權運算產生逐點加權分塊並進行深度維度之累加程序產生輸出分塊;在輸出分塊滿足深度維度運算條件時,對輸出分塊進行逐點偏移運算產生並輸出逐點卷積運算結果分塊,並在不滿足深度維度運算條件時,設置輸出分塊為先前輸出分塊,對下一運算資料進行運算。
Description
本發明是關於卷積運算技術,尤其是關於一種卷積運算方法。
卷積運算廣泛應用於訊號與影像處理及其他工程科學領域中。其中,近年來最重要的應用即在深度學習中的卷積神經網路。
深度可分離卷積運算是一種進行卷積運算的方式,其運算方式是將卷積運算拆分為逐深度卷積運算及逐點卷積運算兩個部分進行。習知技術是先進行逐深度卷積運算,並將逐深度卷積運算的結果儲存於一動態隨機存取記憶體中,當要進行逐點卷積運算時再將逐深度卷積運算的結果自動態隨機存取記憶體中讀取至一暫存器(通常為靜態隨機存取記憶體)中,考量到硬體的限制如記憶體的大小及不同記憶體間的傳輸頻寬,當逐深度卷積及逐點卷積所需要的資料量較大時,將容易使資料在記憶體間進行大量搬移,而降低卷積運算的速度與效能。
鑑於先前技術的問題,本發明之一目的在於提供一種卷積運算方法,以改善先前技術。
本發明包含一種卷積運算方法,應用於運算裝置中,包含:(A)配置運算裝置以使運算裝置依據分塊規則存取外部記憶體所儲存之運算資料、一組逐深度卷積參數及一組逐點卷積參數;(B)自外部記憶體讀取運算資料分塊至內部記憶體儲存;(C)自外部記憶體讀取對應的一組逐深度卷積參數分塊至內部記憶體儲存,由卷積運算電路據以對運算資料分塊進行逐深度加權運算並產生逐深度加權分塊;(D)由卷積運算電路據以對逐深度加權分塊進行逐深度偏移運算以產生逐深度卷積運算結果分塊;(E)自外部記憶體讀取對應的一組逐點卷積參數分塊至內部記憶體儲存,由卷積運算電路據以對逐深度卷積運算結果分塊進行逐點加權運算並產生逐點加權分塊,並使逐點加權分塊進行深度維度之累加程序產生輸出分塊,其中累加程序在先前輸出分塊存在時使逐點加權分塊與先前輸出分塊進行累加;(F)在輸出分塊滿足深度維度運算條件時,由卷積運算電路據以對輸出分塊進行逐點偏移運算以產生並輸出逐點卷積運算結果分塊至外部記憶體儲存,並在不滿足深度維度運算條件時,設置輸出分塊為先前輸出分塊,並對下一運算資料分塊執行步驟(B)至步驟(F);以及(G)在運算資料尚未全部運算結束時,對下一運算資料分塊執行步驟(B)至步驟(F)。
本發明另包含一種卷積運算方法,應用於運算裝置中,運算裝置包含內部記憶體、卷積運算電路及直接記憶體存取電路。卷積運算方法包含:根據分塊規則,利用直接記憶體存取電路將外部記憶體中運算資料之運算資料分塊及一組逐深度卷積參數中對應的一組逐深度卷積參數分塊儲存至內部記憶體;利用卷積運算電路對運算資料分塊及逐深度卷積參數分塊進行逐深度卷積運算以產生逐深度卷積運算結果分塊;根據分塊規則,利用直接記憶體存取電路將外部記憶體中一組逐點卷積參數中對應的一組逐點卷積參數分塊儲存至內部記憶體;利用卷積運算電路對該逐深度卷積運算結果分塊及逐點卷積參數分塊進行逐點卷積運算以產生逐點卷積運算結果分塊;以及利用直接記憶體存取電路將逐點卷積運算結果分塊儲存至外部記憶體。其中,逐深度卷積運算結果分塊未儲存至外部記憶體。
本發明所提出的卷積運算方法,藉由分塊運算機制進行資料的存取與運算,使逐深度卷積運算的結果沒有儲存至外部記憶體即接著進行逐點卷積運算,可減少內部記憶體及外部記憶體間的資料傳輸,大幅提升卷積運算效率。
有關本案的特徵、實作與功效,茲配合圖式作較佳實施例詳細說明如下。
本發明之一目的在於提供一種具有分塊運算機制的卷積運算方法及裝置,對用以進行卷積的資料及參數進行分塊並運算,減少內部記憶體及外部記憶體間的資料傳輸,大幅提升卷積運算效率。
請參照圖1。圖1顯示本發明一實施例中,一種具有分塊運算機制的運算裝置100與外部記憶體180的方塊圖。運算裝置100讀取外部記憶體180所儲存的資料進行卷積運算,並包含:內部記憶體110、卷積運算電路120、直接記憶體存取電路(DMA)190及處理電路130。
於一實施例中,內部記憶體110、卷積運算電路120、直接記憶體存取電路190及處理電路130可整合於同一裸晶片(chip die)上,外部記憶體180則設置於另一裸晶片上。處理電路130電性耦接於內部記憶體110、直接記憶體存取電路190及卷積運算電路120,以控制直接記憶體存取電路190、內部記憶體110及卷積運算電路120的運作,執行卷積運算方法,以達到進行卷積運算的目的。
直接記憶體存取電路190在處理電路130的控制下,對外部記憶體180所儲存的運算資料DAT、一組逐深度卷積參數DCP及一組逐點卷積參數PCP分塊讀取至內部記憶體110或卷積運算電路120以進行卷積運算。於一實施例中,內部記憶體110為靜態隨機存取記憶體(SRAM),外部記憶體180為動態隨機存取記憶體(DRAM)。
卷積運算電路120包含複數乘法與加法計算電路(未繪示),進行卷積運算所需的乘法與加法的運算。在處理電路130的控制下,卷積運算電路120自內部記憶體110或外部記憶體180讀取所需運算的資料分塊與參數分塊,進行逐深度卷積運算與逐點卷積運算,並將最終的運算結果輸出至外部記憶體180儲存。
以下將針對逐深度卷積運算及逐點卷積運算進行說明。
請參照圖2A及圖2B。圖2A顯示本發明一實施例中,逐深度卷積運算的示意圖。圖2B顯示本發明一實施例中,逐點卷積運算的示意圖。
如圖2A所示,逐深度卷積運算是根據運算資料DAT及一組逐深度卷積參數DCP進行,以產生逐深度卷積運算結果DCR。於一實施例中,一組逐深度卷積參數DCP包含用以進行逐深度加權運算的一組逐深度卷積權重DWP與用以進行逐深度偏移運算的一組逐深度卷積偏移量DBP。
各運算資料DAT、逐深度卷積權重DWP及逐深度卷積偏移量DBP均包含寬度維度W、高度維度H及深度維度C。在圖2A中標示出範例性的維度數值,其中運算資料DAT的尺寸為7×7×32,逐深度卷積權重DWP的尺寸為3×3×32。逐深度卷積偏移量DBP為一維向量,且尺寸為1×1×32。
逐深度加權運算在深度維度C上,使32個逐深度卷積權重DWP與32個運算資料DAT一一對應運算,以在深度維度C上產生32個運算結果。在不考慮邊界之外的冗餘資料的情形下,每個深度維度C上的運算結果是由3×3的逐深度卷積權重DWP做為遮罩,在7×7的運算資料DAT上進行單點橫向與縱向移動並與所覆蓋的各區域運算(例如各點相乘、相加再平均),產生5×5的運算結果。
逐深度偏移運算使32個深度維度C的運算結果與逐深度卷積偏移量DBP的數值一一對應疊加(例如運算結果在寬度維度W與高度維度H上的各點與一個逐深度卷積偏移量DBP的數值分別疊加),產生尺寸為5×5×32的逐深度卷積運算結果DCR。
須注意的是,上述的逐深度卷積運算僅為一範例。在其他實施例中,亦可考慮運算資料DAT邊界之外填補的冗餘資料來進行運算,或是使逐深度卷積權重DWP形成的遮罩,在運算資料DAT上進行橫向與縱向上每隔兩點的移動所覆蓋的各區域進行運算。本發明並不限於特定的運算方式。
逐點卷積運算是根據圖2A的逐深度卷積運算結果DCR及圖2B所示的逐點卷積參數PCP進行,以產生圖2B所示的逐點卷積運算結果PCR。於一實施例中,一組逐點卷積參數PCP包含一組用以進行加權運算的逐點卷積權重PWP與用以進行偏移運算的一組逐點卷積偏移量PBP。
各逐點卷積權重PWP及逐點卷積偏移量PBP均包含寬度維度W、高度維度H及深度維度C,逐點卷積權重PWP則更包含與逐點卷積偏移量PBP的深度維度C對應的個數維度N。在圖2B中標示範例性的維度數值,其中逐點卷積權重PWP的尺寸為1×1×32×64。逐點卷積偏移量PBP為一維向量,且尺寸為1×1×64。
逐點加權運算在深度維度C上,使每個1×1×32的逐點卷積權重PWP中的32個1×1逐點卷積權重單元與32個逐深度卷積運算結果DCR一一對應運算(例如相乘),以產生32個尺寸為5×5的運算結果後相平均加為單一個尺寸為5×5的總運算結果。個數維度N上為64個的逐點卷積權重PWP各別與逐深度卷積運算結果DCR進行上述運算,產生64個且尺寸為5×5的總運算結果。
逐點偏移運算使此總運算結果與深度維度C上為64個的逐點卷積偏移量PBP一一對應疊加,產生尺寸為5×5×64的逐點卷積運算結果PCR。
為減少內部記憶體110及外部記憶體180間的資料來回傳輸,以達到加速卷積運算的目的,運算裝置100將藉由分塊運算機制進行卷積運算方法,使逐深度卷積運算的結果沒有儲存至外部記憶體180即接著進行逐點卷積運算。以下將針對分塊運算機制進行更詳細的說明。
請同時參照圖3。圖3顯示本發明一實施例中,一種具有分塊運算機制的卷積運算方法300的流程圖。卷積運算方法300可應用例如,但不限於於圖1的運算裝置100中。卷積運算方法300之一實施例如圖3所示,包含下列步驟。
於步驟S310,配置運算裝置100使運算裝置100依據分塊規則存取外部記憶體180所儲存之運算資料DAT、逐深度卷積參數DCP及逐點卷積參數DCP等資料。
在一實施例中,運算裝置100的處理電路130是藉由預先決定的分塊規則來配置,以依據此分塊規則來控制直接記憶體存取電路190、內部記憶體110及/或卷積運算電路120自外部記憶體180中讀取運算資料DAT、逐深度卷積參數DCP及逐點卷積參數DCP等之分塊資料,以進行卷積運算。
前述分塊規則描述了對運算資料DAT、逐深度卷積參數DCP及逐點卷積參數DCP分別根據至少一維度所進行的分塊方式。在一實施例中,處理電路130依據預定分塊規則來配置後,可產生符合分塊規格的存取控制指令來控制直接記憶體存取電路190以存取外部記憶體180所儲存之運算資料DAT、逐深度卷積參數DCP及逐點卷積參數DCP等資料。
經過分塊後,運算資料DAT將被分為多個運算資料分塊,逐深度卷積參數DCP被分為多組逐深度卷積參數分塊,逐點卷積參數DCP被分為多組逐點卷積參數分塊。
以下先針對在運算資料DAT僅根據深度維度C分塊產生具有特定數目的運算資料分塊時,卷積運算方法300的流程的運作進行說明。
逐深度卷積參數DCP包含的逐深度卷積權重DWP及逐深度卷積偏移量DBP分別根據深度維度C分塊。所產生的逐深度卷積參數分塊包含具有此特定數目的逐深度卷積權重分塊及逐深度卷積偏移量分塊。而依據逐深度卷積參數DCP所進行的運算包含逐深度加權運算及逐深度偏移運算。
逐點卷積參數PCP包含的逐點卷積權重PWP根據深度維度C分塊,逐點卷積參數PCP包含的逐點卷積偏移量PBP在本實施例中不分塊。所產生的逐點卷積參數分塊包含具有此特定數目的逐點卷積權重分塊,及逐點卷積偏移量PBP。而依據逐點卷積參數PCP所進行的運算包含逐點加權運算及逐點偏移運算。
以圖2A所示為例,運算資料DAT分塊產生包含尺寸均為7×7×16的運算資料分塊200A、200B。逐深度卷積權重DWP及逐深度卷積偏移量DBP分別產生尺寸均為3×3×16的逐深度卷積權重分塊210A、210B及尺寸均為1×1×16的逐深度卷積偏移量220A、220B。逐深度卷積運算結果DCR也將被分塊成尺寸均為5×5×16的逐深度卷積運算結果分塊230A、230B。
逐點卷積權重PWP分塊產生尺寸均為1×1×16×64的逐點卷積權重分塊240A、240B。由於逐點卷積偏移量PBP的深度維度C是與逐點卷積權重PWP的個數維度N相對應,在逐點卷積權重PWP並未在個數維度N進行分塊的情形下,逐點卷積偏移量PBP不需要分塊,而維持1×1×64的尺寸。
於步驟S320,自外部記憶體180讀取運算資料分塊至內部記憶體110儲存。於本實施例中,運算資料分塊200A將先被讀取至內部記憶體110儲存。
於步驟S330,自外部記憶體180讀取對應的一組逐深度卷積參數分塊至內部記憶體110儲存,由卷積運算電路120據以對運算資料分塊進行逐深度加權運算並產生逐深度加權分塊。
於步驟S340,由卷積運算電路120據以對逐深度加權分塊進行逐深度偏移運算以產生逐深度卷積運算結果分塊。
於本實施例中,運算資料分塊200A對應的逐深度卷積權重分塊210A及逐深度卷積偏移量分塊220A將被讀取。卷積運算電路120根據逐深度卷積權重分塊210A對運算資料分塊200A進行逐深度加權運算產生逐深度加權分塊(未繪示)後,再根據逐深度卷積偏移量分塊220A對逐深度加權分塊進行逐深度偏移運算,以產生尺寸為5×5×16的逐深度卷積運算結果分塊230A。
於步驟S350,自外部記憶體180讀取對應的一組逐點卷積參數分塊至內部記憶體110儲存,由卷積運算電路120據以對逐深度卷積運算結果分塊進行逐點加權運算並產生逐點加權分塊,並使逐點加權分塊進行深度維度之累加程序產生輸出分塊。其中,累加程序在先前輸出分塊存在時使逐點加權分塊與先前輸出分塊進行累加。
於本實施例中,逐點卷積權重分塊240A及逐點卷積偏移量PBP將被讀取。卷積運算電路120根據尺寸為1×1×16×64的逐點卷積權重分塊240A對逐深度卷積運算結果分塊230A進行逐點加權運算,產生尺寸為5×5×64的逐點加權分塊(未繪示)。
由於運算資料分塊是根據深度維度C分塊產生,致使在深度維度C的尺寸為32的逐點卷積權重PWP亦在深度維度C上分塊。更詳細的說,各在深度維度C的尺寸為16的逐點卷積權重分塊240A及逐點卷積權重分塊240B,分別對逐深度卷積運算結果分塊230A運算所產生的逐點加權分塊必須累加,才能還原為在深度維度C的尺寸為32的運算結果。
因此,在運算資料分塊是根據深度維度C分塊產生時,先前輸出分塊將被設置,並初始化為0。累加程序在先前輸出分塊存在的情形下,使逐點加權分塊與先前輸出分塊累加,以產生輸出分塊(未繪示)。
於步驟S360,判斷輸出分塊是否滿足深度維度運算條件。
於一實施例中,當運算資料DAT並未根據深度維度分塊產生,或當運算資料DAT根據深度維度分塊且輸出分塊完成所有深度維度的累加程序時,輸出分塊滿足深度維度運算條件。
根據逐點卷積權重分塊240A產生的輸出分塊並未滿足深度維度運算條件。
於步驟S370,輸出分塊將被設置為先前輸出分塊,並對下一運算資料分塊200B執行步驟S320至步驟S360。
因此,流程將回至步驟S320讀取運算資料分塊200B,並於步驟S330以及S340讀取對應的逐深度卷積權重分塊210B及逐深度卷積偏移量220B並由卷積運算電路120進行逐深度加權運算與逐深度偏移運算,產生尺寸為5×5×16的逐深度卷積運算結果分塊230B。接著,流程於步驟S350讀取逐點卷積權重分塊240B將被讀取(逐點卷積偏移量PBP已經被讀取,可選擇性地不須再額外讀取)並對逐深度卷積運算結果分塊230B進行逐點加權運算產生尺寸為5×5×64的逐點加權分塊,進而藉由累加程序與先前輸出分塊累加產生輸出分塊。此時,步驟S360將判斷輸出分塊已完成所有深度維度的累加而滿足深度維度運算條件。
於步驟S380,在輸出分塊滿足深度維度運算條件時,由卷積運算電路120據以對輸出分塊進行逐點偏移運算以產生並輸出逐點卷積運算結果分塊至內部記憶體110或透過直接記憶體存取電路190儲存至外部記憶體180。
因此,卷積運算電路120根據逐點卷積偏移量PBP對輸出分塊進行逐點偏移運算,產生並輸出逐點卷積運算結果分塊至內部記憶體110或透過直接記憶體存取電路190儲存至外部記憶體180。於本實施例中,逐點卷積運算結果分塊相當於圖2B的逐點卷積運算結果PCR。
於步驟S390,判斷運算資料是否全部運算結束。
由於在本實施例中,運算資料所分塊產生的運算資料分塊200A及200B均已運算結束,因此流程將進行至步驟S395,以結束運算。
另一方面,分塊規則若僅根據運算資料DAT的寬度維度W及高度維度H其中之一對運算資料DAT進行分塊時,由於與深度維度無關,其運算方式大同小異。以下針對在運算資料DAT僅根據寬度維度W分塊產生具有特定數目的運算資料分塊時,卷積運算方法300的流程的運作進行說明,而不再對高度維度H的運算贅述。
請同時參照圖4A及圖4B。圖4A顯示本發明一實施例中,逐深度卷積運算的示意圖。圖4B顯示本發明一實施例中,逐點卷積運算的示意圖。圖4A及圖4B所示的資料及參數與圖2A及圖2B相同。在此不再贅述。
在圖4A及圖4B的實施例中,分塊規則為根據運算資料DAT的寬度維度W分塊產生具有特定數目的運算資料分塊,相鄰的運算資料分塊間具有重疊區域且重疊區域的尺寸由逐深度卷積權重DWP的尺寸及加權運算方式決定。逐深度卷積參數DCP包含的逐深度卷積權重DWP及逐深度卷積偏移量DBP不須分塊。因此,逐深度卷積參數分塊包含逐深度卷積權重DWP及逐深度卷積偏移量DBP。
逐點卷積參數DCP包含的逐點卷積權重PWP選擇性地根據個數維度分塊產生特定數目的逐點卷積權重分塊。逐點卷積偏移量PBP選擇性地根據深度維度分塊產生特定數目的逐點卷積偏移量分塊。
須注意的是,由於上述逐點卷積參數PCP的分塊方式實際上與運算資料DAT根據寬度維度W的分塊方式相獨立,因此可選擇性依需求決定是否需要對逐點卷積參數PCP進行分塊。
以圖4A所示為例,運算資料DAT分塊產生包含尺寸分別為5×7×16及4×7×16的運算資料分塊400A、400B。其中,由於逐深度卷積權重DWP的尺寸為3×3×32,且加權運算方式由逐深度卷積權重DWP做為遮罩進行單點橫向與縱向移動計算,因此運算資料分塊400A、400B間的重疊區域為2×7×16。
逐深度卷積權重DWP及逐深度卷積偏移量DBP由於不需要分塊,而維持3×3×32及1×1×32的尺寸。逐深度卷積運算結果DCR將被分塊成尺寸分別為3×3×32及2×2×32的逐深度卷積運算結果分塊410A、410B。
在本實施例中,逐點卷積權重PWP根據個數維度分塊產生尺寸均為1×1×32×32的兩個逐點卷積權重分塊420A、420B。逐點卷積偏移量PBP根據深度維度分塊產生尺寸均為1×1×32的兩個逐點卷積偏移量430A、430B。
以圖4A及圖4B的方塊方式所進行的卷積運算方法300將如下所述。流程將於步驟S320讀取運算資料分塊400A,並於步驟S330以及340讀取對應的逐深度卷積權重DWP及逐深度卷積偏移量DBP並由卷積運算電路120進行逐深度加權運算與逐深度偏移運算,產生尺寸為3×5×32的逐深度卷積運算結果分塊410A。接著,流程於步驟S350讀取逐點卷積權重分塊420A、420B及逐點卷積偏移量430A、430B並對逐深度卷積運算結果分塊410A進行逐點加權運算產生尺寸為3×5×32的逐點加權分塊(未繪示)。
在運算資料DAT並未根據深度維度分塊時,先前輸出分塊不存在。累加程序使逐點加權分塊直接輸出為輸出分塊(未繪示)。
此時,步驟S360將由於運算資料DAT並未根據深度維度分塊產生,而判斷輸出分塊滿足深度維度運算條件。流程將於步驟S380由卷積運算電路120據以對輸出分塊進行逐點偏移運算以產生並輸出尺寸為3×5×32的逐點卷積運算結果分塊至外部記憶體180儲存。
須注意的是,由於逐點卷積權重分塊420A、420B及逐點卷積偏移量430A、430B均為兩個分塊,實作上流程可先藉由逐點卷積權重分塊420A以及逐點卷積偏移量430A對應逐深度卷積運算結果分塊410A運算產生一個輸出分塊並進行逐點偏移運算以及輸出一個逐點卷積運算結果分塊後,再由逐點卷積權重分塊420B以及逐點卷積偏移量430B對應逐深度卷積運算結果分塊410B運算產生另一個輸出分塊並進行逐點偏移運算以及輸出另一個逐點卷積運算結果分塊。
於步驟S390,判斷運算資料是否全部運算結束。
由於在本實施例中,運算資料分塊400B尚未運算完,流程將對下一運算資料分塊400B執行步驟S320至步驟S360。由於沒有深度維度上的累加,運算資料分塊400B的運算過程與運算資料分塊400A相同,並在步驟S380產生兩個2×5×32的逐點卷積運算結果分塊,並輸出至外部記憶體180儲存,在此不再贅述。接著,流程將於步驟S390判斷運算資料所分塊產生的運算資料分塊400A及400B均已運算結束,並在步驟S395結束運算。
上述的實施例是分別以運算資料僅根據深度維度C及僅根據寬度維度W進行分塊來說明。然而運算資料可依需求,根據寬度維度W、高度維度H及深度維度C的各種排列組合來決定分塊規則。
然而須注意的是,為避免任意分塊反而造成運算效率不佳,較佳的分塊規則須滿足下列條件:(1)運算資料分塊與逐深度卷積權重分塊、逐深度卷積運算結果分塊及逐點卷積權重在深度維度上的數目相等;(2)逐深度卷積偏移量分塊與運算資料分塊在深度維度上的數目相等;(3)逐點卷積運算結果分塊及組逐點卷積偏移量在深度維度上的數目相等。
實作上,資料與參數的分塊方式(包括維度與大小)可根據內部記憶體110的儲存容量大小決定。其中,內部記憶體110對應逐深度卷積運算及逐點卷積運算,分別具有必須儲存的內容。
請同時參照圖5A及圖5B。圖5A顯示本發明一實施例中,內部記憶體110對應逐深度卷積運算的儲存內容的示意圖。圖5B顯示本發明一實施例中,內部記憶體110對應逐點卷積運算的儲存內容的示意圖。
如圖5A所示,內部記憶體110的儲存容量大小對應逐深度卷積運算,至少需要足以儲存運算資料分塊500、逐深度卷積參數分塊510及逐深度卷積運算結果分塊520,並在運算資料分塊500由運算資料至少根據深度維度進行分塊產生時儲存由逐點卷積運算所產生的先前輸出分塊530。
如圖5B所示,內部記憶體110的儲存容量大小對應逐點卷積運算,至少需要足以儲存逐深度卷積運算結果分塊520、逐點卷積參數分塊540及先前輸出分塊530。
其中,運算資料分塊500、逐深度卷積參數分塊510以及逐深度卷積運算結果分塊520所佔的區域,與逐深度卷積運算中的逐點卷積參數分塊540所佔的區域可為依時序互相取代的共用區域,亦即,運算資料分塊500、逐深度卷積參數分塊510、深度卷積運算結果分塊520及逐點卷積參數分塊540係可分時複用內部記憶體110中包含的第一區域。逐深度卷積運算結果分塊520可在逐深度卷積運算做為輸出資料,並在逐點卷積運算做為輸入資料而共用。
逐點卷積運算所產生的先前輸出分塊530需針對不同運算資料分塊的卷積運算結果進行累加,因此無法與其它資料共用儲存空間,亦即,內部記憶體110中包含的第二區域是由先前輸出分塊530專用。
因此,資料與參數的分塊方式必須根據上述內部記憶體110必須儲存的內容的限制進行。
於其他實施例中,外部記憶體180與內部記憶體110間的傳輸頻寬、資料利用率、逐深度卷積運算的利用率及點度卷積運算的利用率均可用以做為運算資料的分塊方式的考慮因素。
因此,藉由上述的分塊運算機制,本發明的卷積運算方法及裝置僅需在進行卷積運算時自外部記憶體180讀取所需的資料分塊與參數分塊至內部記憶體110,並在完成所有的運算後再輸出至外部記憶體180。內部記憶體110及外部記憶體180間的資料傳輸量可大幅下降。
需注意的是,上述的實施方式僅為一範例。於其他實施例中,本領域的通常知識者當可在不違背本發明的精神下進行更動。應瞭解到,在上述的實施方式中所提及的步驟,除特別敘明其順序者外,均可依實際需要調整其前後順序,甚至可同時或部分同時執行。
本發明中具有分塊運算機制的卷積運算方法及裝置可對用以進行卷積的資料及參數進行分塊並運算,特別是逐深度卷積運算的結果並沒有儲存至外部記憶體即接著進行逐點卷積運算,藉此減少內部記憶體及外部記憶體間的資料傳輸,大幅提升卷積運算效率。
雖然本發明之實施例如上所述,然而該些實施例並非用來限定本發明,本技術領域具有通常知識者可依據本發明之明示或隱含之內容對本發明之技術特徵施以變化,凡此種種變化均可能屬於本發明所尋求之專利保護範疇,換言之,本發明之專利保護範圍須視本說明書之申請專利範圍所界定者為準。
100:運算裝置
110:內部記憶體
120:卷積運算電路
130:處理電路
180:外部記憶體
190:直接記憶體存取電路
200A、200B:運算資料分塊
210A、210B:逐深度卷積權重分塊
220A、220B:逐深度卷積偏移量分塊
230A、230B:逐深度卷積運算結果分塊
240A、240B:逐點卷積權重分塊
300:卷積運算方法
S310~S395:步驟
400A、400B:運算資料分塊
410A、410B:逐深度卷積運算結果分塊
420A、420B:逐點卷積權重分塊
430A、430B:逐點卷積偏移量
500:運算資料分塊
510:逐深度卷積參數分塊
520:逐深度卷積運算結果分塊
530:先前輸出分塊
540:逐點卷積參數分塊
C:深度維度
DAT:運算資料
DBP:逐深度卷積偏移量
DCP:逐深度卷積參數
DCR:逐深度卷積運算結果
DWP:逐深度卷積權重
H:高度維度
N:個數維度
PBP:逐點卷積偏移量
PCP:逐點卷積參數
PCR:逐點卷積運算結果
PWP:逐點卷積權重
W:寬度維度
[圖1]顯示本發明之一實施例中,一種具有分塊運算機制的運算裝置與外部記憶體的方塊圖;
[圖2A]顯示本發明一實施例中,逐深度卷積運算的示意圖;
[圖2B]顯示本發明一實施例中,逐點卷積運算的示意圖;
[圖3]顯示本發明一實施例中,一種具有分塊運算機制的卷積運算方法的流程圖;
[圖4A]顯示本發明一實施例中,逐深度卷積運算的示意圖;
[圖4B]顯示本發明一實施例中,逐點卷積運算的示意圖;
[圖5A]顯示本發明一實施例中,內部記憶體對應逐深度卷積運算的儲存內容的示意圖;以及
[圖5B]顯示本發明一實施例中,內部記憶體對應逐點卷積運算的儲存內容的示意圖。
300:卷積運算方法
S310~S395:步驟
Claims (10)
- 一種卷積運算方法,應用於一運算裝置中,包含:(A)配置該運算裝置以使該運算裝置依據一分塊規則存取一外部記憶體所儲存之一運算資料、一組逐深度卷積參數及一組逐點卷積參數;(B)自該外部記憶體讀取一運算資料分塊至一內部記憶體儲存;(C)自該外部記憶體讀取對應的一組逐深度卷積參數分塊至該內部記憶體儲存,由一卷積運算電路據以對該運算資料分塊進行一逐深度加權運算並產生一逐深度加權分塊;(D)由該卷積運算電路據以對該逐深度加權分塊進行一逐深度偏移運算以產生一逐深度卷積運算結果分塊,其中該逐深度卷積運算結果分塊未儲存至該外部記憶體;(E)自該外部記憶體讀取對應的一組逐點卷積參數分塊至該內部記憶體儲存,由該卷積運算電路據以對該逐深度卷積運算結果分塊進行一逐點加權運算並產生一逐點加權分塊,並使該逐點加權分塊進行該深度維度之一累加程序產生一輸出分塊,其中該累加程序在一先前輸出分塊存在時使該逐點加權分塊與該先前輸出分塊進行累加;(F)在該輸出分塊滿足一深度維度運算條件時,由該卷積運算電路據以對該輸出分塊進行一逐點偏移運算以產生並輸出一逐點卷積運算結果分塊至該外部記憶體儲存,並在不滿足該深度維度運算條件時,設置該輸出分塊為該先前輸出分塊,並對下一該運算資料分塊執行步驟(B)至步驟(F);以及(G)在該運算資料尚未全部運算結束時,對下一該運算資料分塊執行步驟(B)至步驟(F)。
- 如請求項1所述之卷積運算方法,其中該組逐深度卷積參數包含一組逐深度卷積權重及一組逐深度卷積偏移量,該組逐點卷積參數包含一組逐深度卷積權重及一組逐深度卷積偏移量;該運算資料、該組逐深度卷積權重、該組逐深度卷積偏移量、該組逐深度卷積權重及該組逐深度卷積偏移量分別具有一寬度維度、一高度維度及該深度維度,該組逐點卷積權重更包含一個數維度且與該組逐點卷積偏移量的該深度維度對應;以及當該運算資料並未根據該深度維度進行分塊,或當該運算資料根據該深度維度分塊且該輸出分塊完成所有該深度維度之累加時,該輸出分塊滿足該深度維度運算條件。
- 如請求項2所述之卷積運算方法,其中當該運算資料根據該寬度維度及該高度維度至少其中之一分塊時,該組逐深度卷積參數分塊包含該組逐深度卷積權重及該組逐深度卷積偏移量,該組逐點卷積參數分塊包含一逐點卷積權重分塊及一逐點卷積偏移量分塊;其中當該運算資料根據該寬度維度及該高度維度其中之一分塊產生一特定數目的該運算資料分塊時,相鄰的該運算資料分塊間具有一重疊區域且該重疊區域的尺寸由該組逐深度卷積權重的尺寸及加權運算方式決定;該組逐點卷積權重選擇性地根據該個數維度分塊產生該特定數目的該逐點卷積權重分塊;以及該組逐點卷積偏移量選擇性地根據該深度維度分塊產生該特定數目的該逐點卷積偏移量分塊。
- 如請求項2所述之卷積運算方法,其中該內部記憶體的該儲存容量大小對應該逐深度卷積運算,至少儲存該運算資料分塊、該組逐深度卷積參數分塊及該逐深度卷積運算結果分塊,並在該運算資料分塊由該運算資料至少根據該深度維度進行分塊產生時儲存該先前輸出分塊;該內部記憶體的該儲存容量大小對應該逐點卷積運算,至少儲存該逐深度卷積運算結果分塊、該組逐點卷積參數分塊及該逐點卷積運算結果分塊,及在該運算資料分塊由該運算資料至少根據該深度維度進行分塊產生時儲存該先前輸出分塊。
- 如請求項2所述之卷積運算方法,其中該運算資料分塊與該組逐深度卷積權重分塊、該組逐深度卷積偏移量分塊、該逐深度卷積運算結果分塊及該組逐點卷積權重在該深度維度上的數目相等,該逐點卷積運算結果分塊及該組逐點卷積偏移量在該深度維度上的數目相等。
- 如請求項1所述之卷積運算方法,其中該內部記憶體為一靜態隨機存取記憶體,該外部記憶體為一動態隨機存取記憶體,該內部記憶體及該外部記憶體間透過一直接記憶體存取電路傳遞資料。
- 一種卷積運算方法,應用於一運算裝置中,該運算裝置包含一內部記憶體、一卷積運算電路及一直接記憶體存取電路,該卷積運算方法包含: 根據一分塊規則,利用該直接記憶體存取電路將一外部記憶體中一運算資料之一運算資料分塊及一組逐深度卷積參數中對應的一組逐深度卷積參數分塊儲存至該內部記憶體;利用該卷積運算電路對該運算資料分塊及該組逐深度卷積參數分塊進行一逐深度卷積運算以產生一逐深度卷積運算結果分塊;根據該分塊規則,利用該直接記憶體存取電路將該外部記憶體中一組逐點卷積參數中對應的一組逐點卷積參數分塊儲存至該內部記憶體;利用該卷積運算電路對該逐深度卷積運算結果分塊及該組逐點卷積參數分塊進行一逐點卷積運算以產生一逐點卷積運算結果分塊;以及利用該直接記憶體存取電路將該逐點卷積運算結果分塊儲存至該外部記憶體;其中,該逐深度卷積運算結果分塊未儲存至該外部記憶體。
- 如請求項7所述之卷積運算方法,其中該內部記憶體包含一第一區域及一第二區域,該第一區域供該運算資料分塊、該組逐深度卷積參數分塊、該逐深度卷積運算結果分塊、及該組逐點卷積參數分塊分時複用,該第二區域供該逐點卷積運算的輸出資料專用。
- 如請求項7所述之卷積運算方法,該運算裝置更包含一處理電路,該方法更包含:配置該處理電路依據該分塊規則控制該直接記憶體存取電路以讀取該外部記憶體所儲存之該運算資料、該組逐深度卷積參數及該組逐點卷積參數。
- 如請求項7所述之卷積運算方法,其中該分塊規則是根據該內部記憶體的儲存容量大小所決定。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110139381A TWI790789B (zh) | 2021-10-22 | 2021-10-22 | 卷積運算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110139381A TWI790789B (zh) | 2021-10-22 | 2021-10-22 | 卷積運算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI790789B true TWI790789B (zh) | 2023-01-21 |
TW202318226A TW202318226A (zh) | 2023-05-01 |
Family
ID=86670165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110139381A TWI790789B (zh) | 2021-10-22 | 2021-10-22 | 卷積運算方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI790789B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10241837B2 (en) * | 2016-12-09 | 2019-03-26 | Beijing Horizon Information Technology Co., Ltd. | Systems and methods for data management |
CN110532859A (zh) * | 2019-07-18 | 2019-12-03 | 西安电子科技大学 | 基于深度进化剪枝卷积网的遥感图像目标检测方法 |
TW202101304A (zh) * | 2019-06-24 | 2021-01-01 | 瑞昱半導體股份有限公司 | 使用像素通道置亂的卷積神經網路的演算方法與系統 |
US20210150306A1 (en) * | 2019-11-14 | 2021-05-20 | Qualcomm Incorporated | Phase selective convolution with dynamic weight selection |
-
2021
- 2021-10-22 TW TW110139381A patent/TWI790789B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10241837B2 (en) * | 2016-12-09 | 2019-03-26 | Beijing Horizon Information Technology Co., Ltd. | Systems and methods for data management |
US20200065154A1 (en) * | 2016-12-09 | 2020-02-27 | Beijing Horizon Information Technology Co., Ltd. | Systems and methods for data management |
TW202101304A (zh) * | 2019-06-24 | 2021-01-01 | 瑞昱半導體股份有限公司 | 使用像素通道置亂的卷積神經網路的演算方法與系統 |
CN110532859A (zh) * | 2019-07-18 | 2019-12-03 | 西安电子科技大学 | 基于深度进化剪枝卷积网的遥感图像目标检测方法 |
US20210150306A1 (en) * | 2019-11-14 | 2021-05-20 | Qualcomm Incorporated | Phase selective convolution with dynamic weight selection |
Also Published As
Publication number | Publication date |
---|---|
TW202318226A (zh) | 2023-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11321423B2 (en) | Operation accelerator | |
US20220383067A1 (en) | Buffer Addressing for a Convolutional Neural Network | |
KR102642853B1 (ko) | 컨볼루션 회로, 그것을 포함하는 어플리케이션 프로세서 및 그것의 동작 방법 | |
CN111461311A (zh) | 基于众核处理器的卷积神经网络运算加速方法及装置 | |
CN112703511B (zh) | 运算加速器和数据处理方法 | |
CN116720549A (zh) | 一种基于cnn输入全缓存的fpga多核二维卷积加速优化方法 | |
CN114995782A (zh) | 数据处理方法、装置、设备和可读存储介质 | |
TWI790789B (zh) | 卷積運算方法 | |
CN109446478B (zh) | 一种基于迭代和可重构方式的复协方差矩阵计算系统 | |
CN111667052A (zh) | 专用神经网络加速器的标准与非标准卷积一致性变换方法 | |
Guan et al. | A novel thermal-aware floorplanning and tsv assignment with game theory for fixed-outline 3-D ICs | |
WO2023103551A1 (zh) | 图像数据处理方法、装置、设备及存储介质 | |
TW202244794A (zh) | 記憶體內計算巨集排列的方法、電腦可讀介質及電子裝置 | |
JP7180751B2 (ja) | ニューラルネットワーク回路 | |
CN113988256B (zh) | 卷积运算方法 | |
CN113705784A (zh) | 一种基于矩阵共享的神经网络权重编码方法及硬件系统 | |
TWI798972B (zh) | 智慧處理器裝置與降低記憶體頻寬的方法 | |
Rakanovic et al. | Reducing off-chip memory traffic in deep CNNs using stick buffer cache | |
CN111080508A (zh) | 一种基于dma的gpu子图像处理方法 | |
CN118503205B (zh) | 用于处理张量数据的方法和装置 | |
CN117609677B (zh) | 一种稀疏矩阵乘法加速方法、fpga、计算系统及存储介质 | |
WO2022000454A1 (zh) | 图像处理方法、集成电路、装置、可移动平台及存储介质 | |
CN118690803A (zh) | 图神经网络的加速方法以及图神经网络加速结构 | |
Volkers et al. | Cache memory design for the data transport to array processors | |
TW202349278A (zh) | 三維卷積運算裝置與三維卷積運算方法 |