TW201933192A - 神經網絡計算加速器及其執行的方法 - Google Patents

神經網絡計算加速器及其執行的方法 Download PDF

Info

Publication number
TW201933192A
TW201933192A TW108101488A TW108101488A TW201933192A TW 201933192 A TW201933192 A TW 201933192A TW 108101488 A TW108101488 A TW 108101488A TW 108101488 A TW108101488 A TW 108101488A TW 201933192 A TW201933192 A TW 201933192A
Authority
TW
Taiwan
Prior art keywords
engine
block
input
convolution
feature map
Prior art date
Application number
TW108101488A
Other languages
English (en)
Other versions
TWI748151B (zh
Inventor
郭羽庭
林建宏
王紹宇
洪聖哲
鄭孟璿
吳奇達
栢瀚 沈
陳怡秀
陳泰龍
Original Assignee
聯發科技股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 聯發科技股份有限公司 filed Critical 聯發科技股份有限公司
Publication of TW201933192A publication Critical patent/TW201933192A/zh
Application granted granted Critical
Publication of TWI748151B publication Critical patent/TWI748151B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)

Abstract

描述了一種神經網絡計算加速器,包括:複數個硬體引擎,包括卷積引擎和至少一第二引擎,每個硬體引擎包括執行神經網絡運算的電路;以及加速器內的緩衝記憶體,用於存儲輸入特徵圖的第一輸入區塊和至少一第二輸入區塊,其中所述至少一第二輸入區塊與所述第一輸入區塊在所述緩衝記憶體中重疊;其中所述卷積引擎運算以從所述緩衝記憶體獲取所述第一輸入區塊,對所述第一輸入區塊執行卷積運算以生成中間特徵圖的中間區塊,並通過所述緩衝記憶體將所述中間區塊傳遞給所述第二引擎。

Description

神經網絡計算加速器及其執行的方法
本公開一般涉及神經網絡技術領域,並且更具體地,涉及神經網絡計算加速器及其執行的方法。
深度學習(Deep learning)因其在計算機視覺,語音識別,自然語言處理,生物資訊學等領域中的優越性能而獲得廣泛接受。深度學習是機器學習的一分支,它使用包含複數個隱藏層的人工神經網絡。一種稱為卷積神經網絡(CNN,Convolutional Neural Network)的人工神經網絡已被深度學習用於諸如圖像資料的大資料集。
神經網絡不僅是計算密集型的,而且還導致大量的記憶體訪問。例如,神經網絡計算的核心計算是卷積。對於特徵提取,輸入圖像可以與一組輸入通道(例如,紅色,綠色和藍色)上的一組濾波器卷積,然後是非線性計算,下採樣計算和類別得分計算。計算通常會對處理器外部的系統記憶體進行大量資料訪問。因此,需要改進神經網絡計算以提高系統性能。
以下概述僅是說明性的,並不旨在以任何方式進行限制。也就是說,提供以下概述以介紹本文描述的新穎和非顯而易見的技術的概念,要點,益處和優點。下面在詳細描述中進一步描述選擇的實現。因此,以下發明內容並非旨在標識所要求保護的主題的必要特徵,也不旨在用於確定所要求保護的主題的範圍。
本發明提供一種神經網絡計算加速器,包括:複數個硬體引擎,包括卷積引擎和至少一第二引擎,每個硬體引擎包括執行神經網絡運算的電路;以及加速器內的緩衝記憶體,用於存儲輸入特徵圖的第一輸入區塊和至少一第二輸入區塊,其中所述至少一第二輸入區塊與所述第一輸入區塊在所述緩衝記憶體中重疊;其中所述卷積引擎運算以從所述緩衝記憶體獲取所述第一輸入區塊,對所述第一輸入區塊執行卷積運算以生成中間特徵圖的中間區塊,並通過所述緩衝記憶體將所述中間區塊傳遞給所述第二引擎。
本發明提供一種用於神經網絡計算的加速器執行的方法,包括:通過加速器中的卷積引擎獲取來自加速器內的緩衝記憶體的輸入特徵圖的第一輸入區塊;對所述第一輸入區塊執行卷積運算以生成中間特徵圖的中間區塊;以及通過緩衝記憶體將所述中間區塊傳遞到加速器中的第二個引擎;其中所述緩衝記憶體存儲第一輸入區塊和至少一第二輸入區塊,所述至少一第二輸入區塊與所述第一輸入區塊在所述緩衝記憶體中重疊。
由上可知,本發明的技術方案中所述至少一第二輸入區塊與所述第一輸入區塊在所述緩衝記憶體中重疊,因此,可以減少從系統記憶體中取出相鄰區塊所引起的資料移動​​。
在說明書及申請專利範圍當中使用了某些詞彙來指稱特定的元件。本領域技術人員應可理解,硬體製造商可能會用不同的名詞來稱呼同一元件。本說明書及申請專利範圍並不以名稱的差異來作為區分元件的方式,而是以元件在功能上的差異來作為區分的準則。在通篇說明書及申請專利範圍當中所提及的“包含”及“包括”為一開放式的用語,故應解釋成“包含但不限定於”。“大體上”是指在可接受的誤差範圍內,本領域技術人員能夠在一定誤差範圍內解決該技術問題,基本達到該技術效果。此外,“耦接”一詞在此包含任何直接及間接的電性連接手段。因此,若文中描述一第一裝置耦接於一第二裝置,則代表該第一裝置可直接電性連接於該第二裝置,或通過其它裝置或連接手段間接地電性連接至該第二裝置。以下該為實施本發明的較佳方式,目的在於說明本發明的精神而非用以限定本發明的保護範圍,本發明的保護範圍當視後附的申請專利範圍所界定者為准。
接下面的描述為本發明預期的最優實施例。這些描述用於闡述本發明的大致原則而不應用於限制本發明。本發明的保護範圍應在參考本發明的申請專利範圍的基礎上進行認定。
本發明的實施例提供了一種用於管理神經網絡處理器(也稱為深度學習加速器(DLA,Deep Learning Accelerator))中的資料重用(reuse)和資料移動的系統和方法。在一實施例中,從DLA外部的系統記憶體獲取到DLA的輸入資料,並將其存儲在DLA內部的緩衝記憶體中。由於緩衝區大小有限,在任何給定的時間點,只有一小部分輸入資料可以存儲在緩衝記憶體中。因此,輸入資料可以被劃分為複數個區塊(tile),並且緩衝記憶體可以同時存儲一或複數個區塊。
神經網絡處理由一系列層(layer)組成。在每一層,輸入特徵圖(input feature map)由DLA中的神經網絡引擎(也稱為“引擎”)處理成輸出特徵圖(output feature map)。 DLA包括執行不同類型的神經網絡計算的複數個不同引擎。每個引擎在逐個區塊的基礎上處理輸入特徵圖;也就是說,每個引擎一次處理輸入特徵圖的一區塊。例如,第一引擎(例如,卷積引擎)對第一輸入區塊執行運算以產生輸出區塊,並且經由緩衝記憶體將輸出區塊傳遞到第二引擎。第二引擎在第一引擎對第二輸入區塊運算時對該輸出區塊進行運算。因此,引擎可以並行處理區塊,通過緩衝記憶體將資料從一引擎傳遞到另一引擎以減少系統記憶體訪問。
在一實施例中,運行時的DLA可以為一或複數個神經網絡運算層選擇區塊方案和區塊遍歷方案。區塊方案指定用於在XY平面中平鋪輸入特徵圖的一或複數個區塊尺寸,並且區塊遍歷方案指定在X,Y和Z維度中生成區塊的順序。
在一實施例中,輸入特徵圖的區塊可以彼此重疊。例如,如果區塊T0和T1重疊,則重疊部分T01可以作為T0的一部分從系統記憶體取出一次,並且可以留在緩衝記憶體中以作為T1的一部分重新使用。因此,可以減少從系統記憶體中取出相鄰區塊所引起的資料移動​​。
在一實施例中,輸出特徵圖的區塊可以彼此重疊。例如,卷積引擎在第一輸入區塊上執行卷積以產生第一輸出區塊,並在第二輸入區塊上執行卷積以產生第二輸出區塊。第一和第二輸出區塊可以彼此重疊。因此,在一實施例中,DLA可以存儲兩個輸出區塊的重疊部分,使得重疊部分僅計算一次。在以上示例中,卷積引擎可以計算第二輸出區塊的非重疊部分。然後,可以將未重疊部分與存儲的重疊部分組合以形成第二輸出區塊。因此,輸出資料的重用(下文中稱為“跨區塊重用”)可以減少DLA的計算工作量。
第1圖描述了根據一實施例的包括用於神經網絡計算的DLA 100的系統。 DLA 100耦合到主處理器130(例如,中央處理單元(CPU),圖形處理單元(GPU),數字信號處理器(DSP),媒體處理器或其他通用和/或專用處理電路)。 DLA 100還耦合到DLA 100外部的系統記憶體140。系統記憶體140可以包括一或複數個動態隨機存取記憶體(DRAM)設備,或其他易失性或非易失性記憶體設備。在第1圖中,粗箭頭表示資料流(例如,輸入和輸出特徵圖資料的流),細箭頭表示控制流(例如,命令,用於控制運算的系統統計等)。
DLA 100包括複數個引擎,每個引擎執行一種類型的神經網絡運算。每個引擎包括用於執行數學計算的硬體電路(例如,乘法器,加法器,累加器等)。在該示例中,DLA 100包括用於執行卷積運算的卷積引擎111,用於執行逐元數學運算(例如,整流(ReLU),批量歸一化(BN)等)的啟動引擎112,用於執行下採樣運算的池化引擎113和數學函數引擎114(例如,用於計算三角函數,最大/最小函數,絕對值等)。 DLA 100可以包括另外的引擎,這裡省略了這些引擎以簡化圖示。
如前所述,神經網絡處理由一系列層組成。在每一層,其中一引擎對輸入特徵圖執行運算以生成輸出特徵圖。第一引擎的輸出特徵圖可以成為第二引擎的輸入特徵圖。這些特徵圖(包括輸入特徵圖和輸出特徵圖)中的每一都是多維陣列,也稱為張量(tensor)。例如,特徵圖可以具有三個維度,包括寬度,高度和深度。出於解釋的目的,在以下描述中,假設寬度,高度和深度維度分別與X,Y和Z維度對齊。
在一實施例中,DLA 100包括緩衝記憶體150,緩衝記憶體150還包括一或複數個緩衝器,例如卷積緩衝器151和共用緩衝器152。卷積緩衝器151存儲輸入資料和濾波器權重以供卷積引擎111使用,共用緩衝器152存儲用於由複數個或所有引擎111-114共用訪問的中間輸入和輸出資料。在一實施例中,緩衝器151和152可以包括靜態隨機存取記憶體(SRAM)設備,或其他易失性或非易失性記憶體設備。
DLA 100還包括控制器120,其將命令從主處理器130發送到引擎111-114。根據命令,引擎111-114從緩衝記憶體150獲取輸入並執行神經網絡計算。 DLA 100經由I / O介面160從系統記憶體140加載(load)資料並將資料存儲到系統記憶體140。從系統記憶體140加載的資料可以存儲在緩衝記憶體150中以便快速訪問資料。根據在運行時由控制器120選擇的區塊方案和區塊遍歷方案從系統記憶體140加載資料。
DLA 100還包括監視器170,其可以由控制器120控制以監視和收集系統統計資料,包括DLA計算負載和對系統記憶體140的資料訪問量(即,DLA 100和系統記憶體140之間的連接上的資料流量的數量)。收集的系統統計資訊被發送到控制器120,用於選擇區塊方案和區塊遍歷方案,這將在後面詳細描述。DLA 100還包括歷史引擎180,其控制可重複使用資料在系統記憶體140和/或緩衝記憶體150中的存儲和加載。
在描述本發明的實施例之前,解釋卷積運算中使用的一些術語是有幫助的。第2圖說明瞭卷積運算的一例子。卷積引擎111使用一組濾波器220對輸入特徵圖210執行卷積。每個濾波器220的高度和寬度通常小於輸入特徵圖的高度和寬度。例如,濾波器可以由XY平面中的5×5個權重組成;也就是說,沿X維度的五個權重和沿Y維度的五個權重。輸入特徵圖210(例如,輸入圖像)可以在X和Y維度中的每一中具有數百或數千或更多圖元。另外,輸入特徵圖210具有尺寸C的深度(Z維度),其等於輸入特徵圖210中的通道數。每個濾波器220在Z維度上具有相同數量(C)的權重或者等效地,每個濾波器220由C個通道或C個深度片(slice)組成。在卷積傳遞期間,濾波器220在XY平面中滑過輸入特徵圖210,並且在任何位置處的權重和圖元值之間計算點積。輸出特徵圖230是輸入圖像的每個空間位置處的濾波器響應的表示。與N個濾波器220卷積將產生具有N個深度片的輸出特徵圖230。N個深度片中的每一對應於N個濾波器220中的一。N個濾波器220可以被劃分為一或複數個濾波器組(或等效地,權重組),例如第2圖的示例中的WG0,WG1和WG2。權重組的數量與輸出過濾器映射230中的Z維度包括的分割(partition)的數量相同。
輸入特徵圖210可以被劃分為複數個輸入區塊;例如,T0是一輸入區塊。每個輸入區塊(例如,T0)包含C個深度片(slice)。第2圖描述了Z維度中具有長度C的方形長方體或矩形長方體形式的T0(虛線圓280)的等效表示。對於每個輸入區塊,卷積引擎111應用N個濾波器220以產生相應的N個輸出區塊;例如,輸出區塊t0是在T0上應用一濾波器(例如,濾波器290)的結果。這些對應的N個輸出區塊位於輸出特徵圖230的相應N個深度片中。
在一實施例中,輸入區塊可以彼此重疊,並且每個區塊被分成相等大小的非重疊塊(block)。塊(例如,塊211)是計算的基本單元。例如,引擎(例如,卷積引擎111)可以包括乘法和累加(MAC,Multiply-And-Accumulate)電路的陣列,並且塊的大小可以等於MAC陣列的大小。因此,可以在引擎內並行地執行對塊的運算。輸入區塊的大小可以由緩衝器的大小(例如,卷積緩衝器151)確定。例如,整個輸入區塊應該適合卷積緩衝器151。在一實施例中,程式員可以在設計時運行編譯器以基於在DLA 100上可用硬體組件和要運行的軟件應用程式的預期特徵來確定複數個區塊大小。
第3A圖和第3B圖描述了根據一些實施例的輸入特徵圖310中的重疊輸入區塊的示例。輸入特徵圖310可以是第1圖中的卷積引擎111的輸入。在兩個示例中,輸入特徵圖310被劃分為XY平面中的4個重疊輸入區塊;例如,T0-T3。如前所述,卷積引擎111在輸入區塊上運算,一次一區塊,以產生輸出特徵圖。卷積引擎111可以通過首先遍歷X維度或首先遍歷Y維度來遍歷輸入特徵圖中的區塊。
第3A圖突出顯示了根據一實施例的T0和T1之間的重疊部分T01。如果卷積引擎111首先遍歷X維度中的輸入區塊(即,以T0,T1,T2,T3的順序),則僅需要從系統記憶體140取出T01一次,作為卷積計算中T0的一部分使用和T1的一部分重新使用。第3B圖突出顯示了T0和T2之間的重疊部分T02。如果卷積引擎111首先遍歷Y維度中的輸入區塊(即,以T0,T2,T1,T3的順序),則僅需要從系統記憶體140取出T02一次,作為卷積計算中T0的一部分使用和T2的一部分重新使用。雖然T01(在第3A圖中)也可以與第3B圖中的Y維度優先區塊遍歷一起重複使用,但是在一實施例中,卷積緩衝器151具有有限的空間並且只能存儲連續遍歷的輸入區塊的重疊部分。卷積緩衝器151的存儲內容的示例在第4A圖和第4B圖中描述。
第4A圖和第4B圖描述了根據一些實施例的卷積緩衝器151的存儲內容。卷積緩衝器151在Buf_Tile 410中存儲一或複數個輸入區塊並在Buf_WG 420中存儲過濾權重以供卷積引擎111使用。由於輸入區塊一次被處理一塊,因此Buf_Tile 410可以實現為環形緩衝器,使得第一區塊中使用的塊被第二區塊中的新塊覆蓋。在第4A圖中,卷積緩衝器151存儲第一輸入區塊T0(包括重疊部分T01)和三個權重組(例如,WG0,WG1和WG2)中的濾波器權重。當使用第3A圖的示例首先遍歷X維度時,卷積緩衝器151還可以存儲第二輸入區塊(例如, T1)的一些或全部非重疊部分。將T01存儲在卷積緩衝器151中作為T0和T1的一部分不僅節省了緩衝空間,而且還減少了系統記憶體總線上的資料流量。如第4B圖所示,當逐塊處理T0時,T1的塊可以被加載到卷積緩衝器151中的部分430中以覆蓋經處理的T0塊。或者,當已經處理了所有T0塊時,可以將T1加載到部分430中。
卷積緩衝器151還可以以權重組(例如,WG0,WG1和WG2)存儲濾波器權重。每個權重組包含用於卷積運算的濾波器子集的權重(例如,根據第2圖中的示例的三個濾波器的權重)。每個權重組對應於輸出特徵圖中的Z維部分。返回參考第2圖中的示例,WG0中的濾波器權重被應用於輸入區塊T0以在輸出特徵圖230中產生第一組輸出區塊(即,輸出特徵圖230的前三個深度片中的輸出區塊。類似地,WG1中的濾波器權重被應用於輸入區塊T0以產生第二組輸出區塊,並且WG2中的濾波器權重被應用於輸入區塊T0以產生第三組輸出區塊(其中每組輸出區塊由不同的填充圖案或顏色表示)。
為了優化計算速度,最好將所有權重組加載到卷積緩衝器151中。然而,卷積緩衝器151中的有限空間在輸入區塊存儲和權重組存儲之間進行權衡。在所有權重組存儲在卷積緩衝器151中的第一實施例中,輸入區塊可以被重新用於具有所有權重組的卷積,以在相應的XY位置中沿Z維度生成所有輸出區塊。因此,如果卷積首先在Z維度上進行,則相同的輸入區塊可以僅從系統記憶體140加載到卷積緩衝器151中一次,並且可以有效地計算相應的輸出區塊。在第二實施例中,卷積引擎111首先遍歷XY平面中的輸入區塊(例如,在所有輸入區塊和WG0之間執行卷積,然後是所有輸入區塊和WG1,以及所有輸入區塊和WG2等),然後可以將更多緩衝空間分配給輸入區塊,並且可以將少於所有權重組存儲在卷積緩衝器151中。
因此,區塊遍歷方案可以是確定卷積緩衝器151中的輸入區塊存儲和權重組存儲的相對大小的因素。當首先在XY平面中遍歷卷積輸入區塊(即,首先是X維度,或者首先是Y維度)時,可以更充分地利用卷積輸出區塊相關的跨區塊資料重用。例如,如第二實施例中那樣,當卷積輸入區塊首先在XY平面中遍歷時,池化引擎(pooling engine)113可以更有效地重用卷積輸出區塊。然而,與第一實施例中一樣,當生成沿著Z維度對應於輸入區塊的所有輸出區塊時(即,當首先在Z維度中遍歷/生成卷積輸出區塊時),可以更有效地執行卷積計算,並且可以更好地重用輸入區塊。在第一實施例和第二實施例中,Buf_Tile 410可以實現為環形緩衝器,而不管存儲在Buf_WG 420中的權重組的數量。
在一實施例中,第1圖中的控制器120可以為神經網絡運算的一或複數個層動態地選擇區塊方案和區塊遍歷方案。例如,每個卷積層可以使用Lx和Ly的組合作為區塊方案,其中Lx和Ly分別是輸入特徵圖的X和Y維度中的區塊的數量。區塊遍歷方案指定在X,Y和Z維度中生成輸出特徵圖中的輸出區塊的順序。如上所述,設計時的神經網絡設計者可以運行編譯器來確定複數個選項。控制器120可以在運行時選擇神經網絡層可提供優化性能的選項之一。在一實施例中,控制器120可以基於由第1圖中的監視器170收集的系統統計資料進行選擇。
在一實施例中,第1圖中的監視器170監視並收集運行時系統統計資訊,並將收集的資訊提供給控制器120。系統統計資訊可包括但不限於DLA 100中每個引擎的計算負載,系統內存總線上的資料流量,訪問過濾器權重導致的內存延遲,以及訪問區塊導致的內存延遲。然後,控制器120相應地選擇區塊方案和區塊遍歷方案。例如,當由訪問過濾器權重引起的記憶體延遲長於閾值時,控制器120可以選擇重用權重,否則可以選擇重用輸入區塊。
第5圖描述了根據一實施例的池化引擎113的輸入的示例。該示例中的卷積引擎111將濾波器520應用於輸入特徵圖510以產生輸出,這裡稱為中間特徵圖530,因為卷積輸出變為池化引擎113的輸入。中間特徵圖530在Z維度中具有兩個部分:Z0和Z1,其中Z0和Z1分別對應於將輸入特徵圖510與權重組WG0和WG1卷積。通過將輸入區塊與濾波器520之一進行卷積來生成中間特徵圖530中的每個區塊(這裡稱為中間區塊);例如,通過輸入區塊T0與濾波器F0的卷積生成t0。
同一XY平面中的中間區塊可以彼此重疊。重疊的區塊部分可以計算一次並由其他中間區塊重複使用。池化引擎113的輸出被稱為輸出特徵圖540。輸出特徵圖540中的輸出區塊p0是中間區塊t0的下採樣版本。在備選實施例中,中間特徵圖530可以是啟動引擎112的輸出,其在卷積引擎111的輸出上運算。
第6圖描述了根據一實施例的中間特徵圖530中的跨區塊資料重用的示例。在該示例中,首先在X維度中遍歷區塊,並且描述中間特徵圖530的一深度片(在XY平面中)包含九個重疊的區塊t0-t8。還參考第1圖,當卷積引擎111在(a)中生成t0(具有粗邊界線的左上方)時,歷史引擎180刷新(即,存儲)資料610,其是t0, t1和t3重疊的部分(以斜線圖示)。資料610可以存儲在存儲位置中,該存儲位置可以在共用緩衝器152,系統記憶體140或兩者的組合中。例如,資料610與t1重疊的部分可以存儲在共用緩衝器152中,因為池化引擎113在t0之後立即處理t1,並且資料610與t3重疊的部分可以存儲在系統記憶體140中,因為在t0之後不立即處理t3。然後,池化引擎113對t0執行池化運算。
為了使池化引擎113在(b)中對t1執行池化,歷史引擎180從存儲的位置加載與t0重疊的t1的第一部分620(以交叉陰影線圖案描述)。由於卷積引擎111已經在(a)中計算了t1的第一部分620,因此卷積引擎111不必在(b)中再次計算t1的第一部分620。因此,卷積引擎111可以計算尺寸減小的t1(即,沒有部分620的t1)以節省計算工作量。然後,池化引擎113對t1執行池化運算,其通過組合縮小尺寸的t1和部分620而形成。歷史引擎180存儲與t2和t4重疊的t1的第二部分630(以斜線圖案描述)在存儲的位置以供以後重用。資料610,620和630也稱為邊界區塊部分或邊界資料。以與區塊t0和t1類似的方式繼續運算區塊t2-t8。
在第6圖的示例中,對於除了區塊遍歷的順序的第一區塊(t0)和最後區塊(t8)之外的中間特徵圖530中的每個區塊,歷史引擎180執行加載和存儲。對於給定區塊,歷史引擎180加載先前已由池化引擎113處理的一或複數個相鄰區塊(即,給定區塊的鄰居)的第一組邊界資料。歷史引擎180還存儲給定區塊的第二組邊界資料,以供池化引擎113尚未處理的一或複數個相鄰區塊。邊界資料的大小可能取決於區塊大小,卷積濾波器大小等。使用t4作為在(e)中給定區塊,加載先前已由池化引擎113處理的一或複數個相鄰區塊(即,t4的鄰居t1和t3)的第一組邊界資料(也即,加載與t1和t3重疊的t4的第一部分(以交叉陰影線圖案描述))。由於卷積引擎111已經在(e)之前計算了t4的第一部分,因此卷積引擎111不必在(e)中再次計算t4的第一部分。因此,卷積引擎111可以計算尺寸減小的t4(即,沒有第一部分的t4)以節省計算工作量。然後,池化引擎113對t4執行池化運算,其通過組合縮小尺寸的t4和第一部分620而形成。對t4執行池化運算之後,歷史引擎180存儲給定區塊t4的第二組邊界資料(也即,第6圖中以斜線圖案描述的t4與t5重疊的部分及t4與t7的重疊部分),以供池化引擎113尚未處理的一或複數個相鄰區塊(也即, t5和t7)重用。
第7圖是描述根據一實施例的用於在深度學習加速器中對第一引擎的輸出區塊和第二引擎的輸入區塊執行跨區塊資料重用的方法700的流程圖。在一實施例中,方法700可以由神經網絡處理器(例如,第1圖的DLA 100)執行。
當DLA 100在步驟710從第一存儲位置獲取由第一引擎生成的一或複數個在先區塊的第一組邊界資料時,方法700開始。在步驟720,DLA 100通過將第一組邊界資料合併到由第一引擎生成的當前區塊中來形成第二引擎的輸入區塊。在步驟730,第二引擎對輸入區塊進行運算。在步驟740,DLA 100將輸入區塊的第二組邊界資料存儲在第二存儲位置中。在替代實施例中,步驟730可以與步驟740同時或在步驟740之後執行。
每個特徵圖中的區塊尺寸可以是均勻的或不均勻的。在一些實施例中,特徵圖可以包含不同大小的區塊。跨越神經網絡的不同層的區塊可以具有不同的大小。關於輸入區塊和輸出區塊的上述資料重用適用於均勻或不均勻的任何區塊尺寸。
第8圖是描述根據一實施例的用於執行神經網絡計算的基於區塊的執行的方法800的流程圖。在一實施例中,方法800可以由神經網絡處理器(例如,第1圖的DLA 100)執行。
當DLA中的卷積引擎從DLA內的緩衝記憶體獲取輸入特徵圖的第一輸入區塊時,方法800開始於步驟810。在步驟820,卷積引擎對第一輸入區塊執行卷積運算,以生成中間特徵圖的中間區塊。在步驟830,卷積引擎通過緩衝記憶體將中間區塊傳遞給DLA中的第二引擎。緩衝記憶體存儲第一輸入區塊和至少一第二輸入區塊,至少一第二輸入區塊與緩衝記憶體中的第一輸入區塊重疊。在一實施例中,第二引擎對中間區塊執行第二運算,而卷積引擎對輸入特徵圖的第二輸入區塊執行卷積運算。在一實施例中,第二引擎在中間區塊上執行第二運算,同時卷積引擎對輸入特徵圖的第二輸入區塊執行卷積運算。
在一實施例中,在非暫時性計算機可讀介質上存儲指令,當在系統的一或複數個處理器上執行該指令時,該指令使系統執行第7圖的方法700和第8圖的方法800。上面已經參考第1圖描述了該系統的示例。
已經參考第1圖的示例性實施例描述了第7圖和第8圖的流程圖的運算。然而,應該理解,第7圖和第8圖的流程圖的運算可以通過除了參考第1圖討論的實施例之外的本發明的實施例來執行,並且參考第1圖討論的實施例可以執行與參考流程圖所討論的運算不同的運算。雖然第7圖和第8圖的流程圖描述了由本發明的某些實施例執行的特定運算順序,但是應該理解,這種順序是示例性的(例如,替代實施例可以以不同順序執行運算,組合某些運算,重疊某些運算等)。
在一些實施例中,術語“大約”,“大約”和“基本上”可以用於表示目標值的±10%以內。術語“大約”,“大約”和“基本上”可以包括目標值。應當理解,術語“大約”,“大約”和“基本上”可以用於指代小於目標值的±10%的範圍,例如:目標值的±5%,±2.5%目標值的±1%,目標值的±1%。
在申請專利範圍中使用諸如“第一”,“第二”,“第三”等的序數術語來修改申請專利範圍要素本身並不意味著一申請專利範圍要素優先於另一或者時間的任何優先權,優先權或順序。執行方法的行為的順序,但僅用作標籤以將具有特定名稱的一申請專利範圍元素與具有相同名稱的另一元素(但是用於使用序數術語)區分,以區分申請專利範圍元素。
本發明雖以較佳實施例揭露如上,然其並非用以限定本發明的範圍,任何本領域技術人員,在不脫離本發明的精神和範圍內,當可做些許的更動與潤飾,因此本發明的保護範圍當視申請專利範圍所界定者為準。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100‧‧‧深度學習加速器
130‧‧‧主處理器
120‧‧‧控制器
111‧‧‧卷積引擎
112‧‧‧啟動引擎
113‧‧‧池化引擎
114‧‧‧數學函數引擎
151‧‧‧卷積緩衝器
152‧‧‧共用緩衝器
150‧‧‧緩衝記憶體
170‧‧‧監視器
160‧‧‧I / O介面
180‧‧‧歷史引擎
140‧‧‧系統記憶體
290,520、F0‧‧‧濾波器
X、Y、Z‧‧‧維度
210、310、510‧‧‧輸入特徵圖
211‧‧‧塊
C‧‧‧尺寸/數量
T0、T1、T2、T3‧‧‧輸入區塊
280‧‧‧虛線圓
220‧‧‧N個濾波器
WG0、WG1、WG2‧‧‧權重組
230、540‧‧‧輸出特徵圖
t0-t8‧‧‧中間區塊
T01、T02、610、620、630‧‧‧重疊部分
410‧‧‧Buf_Tile
420‧‧‧Buf_WG
Z0、Z1‧‧‧中間特徵圖530在Z維度中具有的兩個部分
p0‧‧‧輸出區塊
700、800‧‧‧方法
710、720、730、740、810、820、830‧‧‧步驟
第1圖描述了根據一實施例的包括用於神經網絡計算的DLA的系統。
第2圖說明瞭卷積運算的一例子。
第3A圖和第3B圖描述了根據一些實施例的輸入特徵圖中的重疊輸入區塊的示例。
第4A圖和第4B圖描述了根據一些實施例的卷積緩衝器的存儲內容。
第5圖描述了根據一實施例的池化引擎的輸入的示例。
第6圖描述了根據一實施例的中間特徵圖中的跨區塊資料重用的示例。
第7圖是描述根據一實施例的用於在深度學習加速器中對第一引擎的輸出區塊和第二引擎的輸入區塊執行跨區塊資料重用的方法的流程圖。
第8圖是描述根據一實施例的用於執行神經網絡計算的基於區塊的執行的方法的流程圖。

Claims (19)

  1. 一種神經網絡計算加速器,包括: 複數個硬體引擎,包括卷積引擎和至少一第二引擎,每個硬體引擎包括執行神經網絡運算的電路;以及 加速器內的緩衝記憶體,用於存儲輸入特徵圖的第一輸入區塊和至少一第二輸入區塊,其中所述至少一第二輸入區塊與所述第一輸入區塊在所述緩衝記憶體中重疊; 其中所述卷積引擎運算以從所述緩衝記憶體獲取所述第一輸入區塊,對所述第一輸入區塊執行卷積運算以生成中間特徵圖的中間區塊,並通過所述緩衝記憶體將所述中間區塊傳遞給所述第二引擎。
  2. 如申請專利範圍第1項所述的加速器,其中當所述卷積引擎在至少一所述第二輸入區塊上執行所述卷積運算時,所述第二引擎在所述中間區塊上執行第二運算。
  3. 如申請專利範圍第1項所述的加速器,其中所述緩衝記憶體包括卷積緩衝器,用於由卷積引擎訪問以獲取輸入,所述卷積緩衝器包括用於存儲輸入特徵圖的一或複數個輸入區塊的第一部分,以及用於存儲卷積運算的一組或多組濾波器權重的第二部分。
  4. 如申請專利範圍第3項所述的加速器,其中所述卷積緩衝器的第一部分是環形緩衝器。
  5. 如申請專利範圍第1項所述的加速器,其中所述卷積引擎在生成所述中間區塊時,無需生成第一邊界資料;以及所述加速器還包括歷史引擎,該歷史引擎用於: 存儲所述第一邊界資料,當所述第二引擎對所述中間區塊執行運算時,加載所述第一邊界資料給所述第二引擎作為所述中間區塊的一部分重新使用,其中所述第一邊界資料為所述中間特徵圖中所述中間區塊與一或複數個第一相鄰區塊的重疊部分且所述一或複數個第一相鄰區塊已被所述卷積引擎生成和已被所述第二引擎處理;以及 當所述第二引擎對所述中間區塊執行運算後存儲第二邊界資料,以便作為一或複數個第二相鄰區塊的一部分重新使用, 其中所述第二邊界資料為所述中間特徵圖中所述一或複數個第二相鄰區塊與所述中間區塊的重疊部分,且所述一或複數個第二相鄰區塊尚未被所述卷積引擎生成和尚未被所述第二引擎處理。
  6. 如申請專利範圍第1-5中任一項所述的加速器,其中所述第二引擎是對所述中間區塊執行池化運算的池化引擎。
  7. 如申請專利範圍第1-5中任一項所述的加速器,其中所述硬體引擎還包括可運算以執行逐元數學計算的啟動引擎,並且其中所述中間區塊進一步為所述啟動引擎的輸出,並且所述第二引擎是池化引擎以在所述啟動引擎的輸出上執行池化運算。
  8. 如申請專利範圍第1項所述的加速器,其中所述輸入特徵圖和所述中間特徵圖中的一或複數個包含非均勻尺寸的區塊。
  9. 如申請專利範圍第1項所述的加速器,還包括: 監視器以監視和收集系統統計資訊,所述系統統計資訊包括所述加速器的計算負載和耦合到所述加速器的系統記憶體的資料訪問量;以及 控制器,用於選擇區塊方案,所述區塊方案基於收集的所述系統統計資訊指定用於在XY平面中平鋪所述輸入特徵圖的一或複數個尺寸,其中X與所述輸入特徵圖的寬度維度對齊,Y與所述輸入特徵圖的高度維度對齊。
  10. 如申請專利範圍第9項所述的加速器,其中,所述控制器還用於選擇區塊遍歷方案,所述區塊遍歷方案基於所收集的系統統計指定生成X,Y和Z維度的區塊的順序,其中Z與所述輸出特徵圖的深度維度對齊。
  11. 如申請專利範圍第10項所述的加速器,其中,所述控制器還可用於在運行時為所述神經網絡運算的一或複數個層選擇所述區塊方案和所述區塊遍歷方案。
  12. 一種用於神經網絡計算的加速器執行的方法,包括: 通過加速器中的卷積引擎獲取來自加速器內的緩衝記憶體的輸入特徵圖的第一輸入區塊; 對所述第一輸入區塊執行卷積運算以生成中間特徵圖的中間區塊;以及 通過緩衝記憶體將所述中間區塊傳遞到加速器中的第二個引擎; 其中所述緩衝記憶體存儲第一輸入區塊和至少一第二輸入區塊,所述至少一第二輸入區塊與所述第一輸入區塊在所述緩衝記憶體中重疊。
  13. 如申請專利範圍第12項所述的方法,還包括: 當卷積引擎對輸入特徵圖的至少一第二輸入區塊執行卷積運算時,由第二引擎執行對中間區塊的第二運算。
  14. 如申請專利範圍第12項所述的方法,其中所述緩衝記憶體包括卷積緩衝器,用於由卷積引擎訪問以獲取輸入,所述卷積緩衝器包括用於存儲輸入特徵圖的一或複數個輸入區塊的第一部分,以及用於存儲卷積運算的一組或多組濾波器權重的第二部分。
  15. 如申請專利範圍第14項所述的的方法,其中所述卷積引擎在生成所述中間區塊時,無需生成第一邊界資料;以及所述方法還包括:使用歷史引擎執行如下操作: 存儲所述第一邊界資料,當所述第二引擎對所述中間區塊執行運算時,加載第一邊界資料給所述第二引擎作為所述中間區塊的一部分重新使用,其中所述第一邊界資料為所述中間特徵圖中所述中間區塊與一或複數個第一相鄰區塊的重疊部分且所述一或複數個第一相鄰區塊已被所述卷積引擎生成和已被所述第二引擎處理;以及 當所述第二引擎對所述中間區塊執行運算後存儲第二邊界資料,以便作為一或複數個第二相鄰區塊的一部分重新使用, 其中所述第二邊界資料為所述中間特徵圖中所述一或複數個第二相鄰區塊與所述中間區塊的重疊部分,且所述一或複數個第二相鄰區塊尚未被所述卷積引擎生成和尚未被所述第二引擎處理。
  16. 如申請專利範圍第12-15中任一項所述的方法,其中中間區塊進一步為啟動引擎的輸出,並且所述第二引擎是池化引擎以在所述啟動引擎的輸出上執行池化運算。
  17. 如申請專利範圍第12項所述的方法,還包括: 監視和收集系統統計資訊,所述系統統計資訊包括加速器的計算負載和耦合到加速器的系統記憶體的資料訪問量;以及 選擇區塊方案,該方案指定用於基於收集的系統統計資訊在XY平面中平鋪輸入特徵圖的區塊大小,其中X與所述輸入特徵圖的寬度維度對齊,Y與所述輸入特徵圖的高度維度對齊。
  18. 如申請專利範圍第17項所述的方法,還包括: 選擇區塊遍歷方案,該方案基於收集的系統統計資訊指定在X,Y和Z維度中生成區塊的順序,其中Z與所述輸出特徵圖的深度維度對齊。
  19. 如申請專利範圍第18項所述的方法,其中在運行時為所述神經網絡的一或複數個層選擇所述區塊方案和所述區塊遍歷方案。
TW108101488A 2018-01-17 2019-01-15 神經網絡計算加速器及其執行的方法 TWI748151B (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201862618102P 2018-01-17 2018-01-17
US62/618,102 2018-01-17
US201862621614P 2018-01-25 2018-01-25
US62/621,614 2018-01-25
US16/246,884 US11436483B2 (en) 2018-01-17 2019-01-14 Neural network engine with tile-based execution
US16/246,884 2019-01-14

Publications (2)

Publication Number Publication Date
TW201933192A true TW201933192A (zh) 2019-08-16
TWI748151B TWI748151B (zh) 2021-12-01

Family

ID=67214041

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108101488A TWI748151B (zh) 2018-01-17 2019-01-15 神經網絡計算加速器及其執行的方法

Country Status (3)

Country Link
US (1) US11436483B2 (zh)
CN (1) CN110046702B (zh)
TW (1) TWI748151B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI797985B (zh) * 2021-02-10 2023-04-01 國立成功大學 卷積運算的執行方法

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11037330B2 (en) * 2017-04-08 2021-06-15 Intel Corporation Low rank matrix compression
WO2019100036A1 (en) * 2017-11-20 2019-05-23 The Regents Of The University Of California Memristive neural network computing engine using cmos-compatible charge-trap-transistor (ctt)
US11200490B2 (en) * 2018-05-04 2021-12-14 Apple Inc. Processing group convolution in neural network processor
US11244027B2 (en) * 2018-05-30 2022-02-08 Samsung Electronics Co., Ltd. Processor, electronics apparatus and control method thereof
US11676371B2 (en) * 2018-08-17 2023-06-13 Fotonation Limited Apparatus for processing a neural network
US11341373B1 (en) * 2019-03-11 2022-05-24 Apple Inc. End-to-end training of a machine learning node that interfaces with a fixed function node
US11797345B2 (en) * 2019-04-30 2023-10-24 Prakash C R J Naidu Hardware accelerator for efficient convolution processing
US11494608B2 (en) * 2019-08-14 2022-11-08 Intel Corporation Methods and apparatus to tile walk a tensor for convolution operations
US20210103803A1 (en) * 2019-10-08 2021-04-08 Apple Inc. Multi-Mode Planar Engine For Neural Processor
US11513799B2 (en) * 2019-11-04 2022-11-29 Apple Inc. Chained buffers in neural network processor
CN110929860B (zh) * 2019-11-07 2020-10-23 深圳云天励飞技术有限公司 一种卷积加速运算方法、装置、存储介质及终端设备
GB2589382B (en) * 2019-11-29 2023-02-22 Imagination Tech Ltd Hardware implementation of a neural network
GB2614621B (en) * 2019-11-29 2024-02-21 Imagination Tech Ltd Hardware implementation of a neural network
KR20220045026A (ko) * 2019-12-19 2022-04-12 구글 엘엘씨 신경망 계산 가속화를 위한 하드웨어 회로
US11599780B2 (en) * 2020-03-02 2023-03-07 Apple Inc. Asynchronous task execution for neural processor circuit
US11620503B2 (en) * 2020-03-18 2023-04-04 Arm Limited Neural network processing
CN111523642B (zh) * 2020-04-10 2023-03-28 星宸科技股份有限公司 用于卷积运算的数据重用方法、运算方法及装置、芯片
US11501151B2 (en) * 2020-05-28 2022-11-15 Arm Limited Pipelined accumulator
US11977969B2 (en) 2020-06-11 2024-05-07 Hangzhou Zhicun Intelligent Technology Co., Ltd. Data loading
CN113807506B (zh) * 2020-06-11 2023-03-24 杭州知存智能科技有限公司 数据加载电路和方法
US20220036158A1 (en) * 2020-07-29 2022-02-03 Apple Inc. Task skew management for neural processor circuit
CN112116071A (zh) * 2020-09-07 2020-12-22 地平线(上海)人工智能技术有限公司 神经网络计算方法、装置、可读存储介质以及电子设备
CN112257859A (zh) * 2020-10-30 2021-01-22 地平线(上海)人工智能技术有限公司 特征数据处理方法及装置、设备、存储介质
CN112491555B (zh) * 2020-11-20 2022-04-05 山西智杰软件工程有限公司 医疗电子签名的处理方法及电子设备
US11665363B2 (en) * 2020-11-26 2023-05-30 Electronics And Telecommunications Research Institute Method, apparatus, system and computer-readable recording medium for feature map information
US11558628B2 (en) * 2020-12-14 2023-01-17 Nokia Technologies Oy Caching and clearing mechanism for deep convolutional neural networks
US11195080B1 (en) * 2021-03-29 2021-12-07 SambaNova Systems, Inc. Lossless tiling in convolution networks—tiling configuration
US11232360B1 (en) 2021-03-29 2022-01-25 SambaNova Systems, Inc. Lossless tiling in convolution networks—weight gradient calculation
US11250061B1 (en) 2021-03-29 2022-02-15 SambaNova Systems, Inc. Lossless tiling in convolution networks—read-modify-write in backward pass
US11227207B1 (en) 2021-03-29 2022-01-18 SambaNova Systems, Inc. Lossless tiling in convolution networks—section boundaries
US11263170B1 (en) 2021-03-29 2022-03-01 SambaNova Systems, Inc. Lossless tiling in convolution networks—padding before tiling, location-based tiling, and zeroing-out
CN115867921A (zh) * 2021-06-25 2023-03-28 辉达公司 用于神经网络的块之间的重叠数据的存储器管理
EP4343633A1 (en) * 2021-06-25 2024-03-27 Nippon Telegraph And Telephone Corporation Convolutional neural network inference processing device and convolutional neural network inference processing method
CN114089911B (zh) * 2021-09-07 2024-01-05 上海新氦类脑智能科技有限公司 基于数据复用的块切分拼接处理方法、装置、设备及介质
CN115809092B (zh) * 2023-02-13 2023-04-28 湖南大学 基于mt3000异构处理器的深度学习计算库实现方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101536333B (zh) * 2006-09-29 2014-11-05 联发科技股份有限公司 联合检测方法及其系统
CA2677917C (en) * 2007-03-02 2013-09-24 Qualcomm Incorporated Superimposed composite channel filter
TW201135475A (en) * 2010-04-09 2011-10-16 Univ Nat Changhua Education Monitoring system and method for short-time discrete wavelet transform and neural network
US20120244949A1 (en) * 2011-03-24 2012-09-27 Peter Matthew Redling Interactivity Platform for Multimedia Transmission, Broadcast TV, Cable, Radio, and Live Events
EP3035204B1 (en) * 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
US9990367B2 (en) * 2015-07-27 2018-06-05 Sas Institute Inc. Distributed data set encryption and decryption
US10614354B2 (en) * 2015-10-07 2020-04-07 Altera Corporation Method and apparatus for implementing layers on a convolutional neural network accelerator
US10154244B2 (en) 2016-02-18 2018-12-11 Vefxi Corporation 3D system including a marker mode
CN105892989B (zh) * 2016-03-28 2017-04-12 中国科学院计算技术研究所 一种神经网络加速器及其运算方法
WO2017166089A1 (en) * 2016-03-30 2017-10-05 Intel Corporation Techniques for determining a current location of a mobile device
US11055063B2 (en) * 2016-05-02 2021-07-06 Marvell Asia Pte, Ltd. Systems and methods for deep learning processor
GB201607713D0 (en) * 2016-05-03 2016-06-15 Imagination Tech Ltd Convolutional neural network
CN106529670B (zh) * 2016-10-27 2019-01-25 中国科学院计算技术研究所 一种基于权重压缩的神经网络处理器、设计方法、芯片
CN106447034B (zh) * 2016-10-27 2019-07-30 中国科学院计算技术研究所 一种基于数据压缩的神经网络处理器、设计方法、芯片
CN107239824A (zh) * 2016-12-05 2017-10-10 北京深鉴智能科技有限公司 用于实现稀疏卷积神经网络加速器的装置和方法
US11010431B2 (en) * 2016-12-30 2021-05-18 Samsung Electronics Co., Ltd. Method and apparatus for supporting machine learning algorithms and data pattern matching in ethernet SSD
US11086967B2 (en) * 2017-03-01 2021-08-10 Texas Instruments Incorporated Implementing fundamental computational primitives using a matrix multiplication accelerator (MMA)
CN107341544B (zh) * 2017-06-30 2020-04-10 清华大学 一种基于可分割阵列的可重构加速器及其实现方法
CN107437110B (zh) * 2017-07-11 2021-04-02 中国科学院自动化研究所 卷积神经网络的分块卷积优化方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI797985B (zh) * 2021-02-10 2023-04-01 國立成功大學 卷積運算的執行方法

Also Published As

Publication number Publication date
CN110046702B (zh) 2023-05-26
CN110046702A (zh) 2019-07-23
US20190220742A1 (en) 2019-07-18
TWI748151B (zh) 2021-12-01
US11436483B2 (en) 2022-09-06

Similar Documents

Publication Publication Date Title
TWI748151B (zh) 神經網絡計算加速器及其執行的方法
US10140123B2 (en) SIMD processing lanes storing input pixel operand data in local register file for thread execution of image processing operations
US11100386B2 (en) Buffer addressing for a convolutional neural network
CN109919311B (zh) 生成指令序列的方法、执行神经网络运算的方法和装置
CN110334798B (zh) 特征数据提取方法及装置、指令生成方法及装置
JP6713036B2 (ja) 折り畳まれた特徴データに対して畳み込み演算を実行するための方法および装置
JP6200824B2 (ja) 演算制御装置及び演算制御方法並びにプログラム、OpenCLデバイス
CN111488205A (zh) 面向异构硬件架构的调度方法和调度系统
WO2019184888A1 (zh) 一种基于卷积神经网络的图像处理的方法和装置
US11164032B2 (en) Method of performing data processing operation
US20200320368A1 (en) Graph Conversion Method
EP3985570A1 (en) Implementation of a neural network in multicore hardware
JP2013225318A (ja) テクスチャ処理を行うピクセルを一群にまとめること
CN112884137A (zh) 神经网络的硬件实现方式
GB2599909A (en) Implementation of a neural network in multicore hardware
CN111523642A (zh) 用于卷积运算的数据重用方法、运算方法及装置、芯片
JP6374777B2 (ja) データ処理方法、プログラム及びデータ処理装置
CN117271136A (zh) 数据处理方法、装置、设备和存储介质
EP3832650A1 (en) Hardware implementation of a neural network
CN114662647A (zh) 处理用于神经网络的层的数据
GB2585810A (en) Buffer addressing for a convolutional neural network
GB2599911A (en) Implementation of a neural network in multicore hardware
CN112988367A (zh) 资源的分配方法、装置、计算机设备及可读存储介质
TWI788257B (zh) 記憶體內計算巨集排列的方法、電腦可讀介質及電子裝置
WO2023206074A1 (zh) 一种对称矩阵与向量相乘的并行计算方法及其系统