TWI749249B - 芯片裝置、芯片、智能設備以及神經網絡的運算方法 - Google Patents
芯片裝置、芯片、智能設備以及神經網絡的運算方法 Download PDFInfo
- Publication number
- TWI749249B TWI749249B TW107125681A TW107125681A TWI749249B TW I749249 B TWI749249 B TW I749249B TW 107125681 A TW107125681 A TW 107125681A TW 107125681 A TW107125681 A TW 107125681A TW I749249 B TWI749249 B TW I749249B
- Authority
- TW
- Taiwan
- Prior art keywords
- processing circuit
- basic
- data block
- main processing
- result
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 238000013528 artificial neural network Methods 0.000 title claims description 35
- 238000012545 processing Methods 0.000 claims abstract description 458
- 230000008569 process Effects 0.000 claims abstract description 13
- 239000011159 matrix material Substances 0.000 claims description 138
- 239000013598 vector Substances 0.000 claims description 41
- 238000009825 accumulation Methods 0.000 claims description 19
- 230000005540 biological transmission Effects 0.000 claims description 8
- 230000017105 transposition Effects 0.000 claims description 5
- 230000008707 rearrangement Effects 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 abstract description 85
- 230000006870 function Effects 0.000 abstract description 26
- 238000004891 communication Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 22
- 230000004913 activation Effects 0.000 description 13
- 238000011176 pooling Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 6
- 238000010606 normalization Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005265 energy consumption Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000011773 genetically engineered mouse model Methods 0.000 description 3
- 238000012805 post-processing Methods 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2218/00—Aspects of pattern recognition specially adapted for signal processing
- G06F2218/02—Preprocessing
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Multi Processors (AREA)
- Complex Calculations (AREA)
- Image Processing (AREA)
- Advance Control (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Mobile Radio Communication Systems (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
一種芯片裝置以及相關產品,芯片裝置包括:主處理電路以及多個與其通信的基本處理電路,主處理電路的功能包括:獲取待計算的數據塊以及運算指令,依據所述運算指令對待計算的數據塊劃分成分發數據塊以及廣播數據塊;對分發數據塊進行拆分處理得到多個基本數據塊,將多個基本數據塊分發至多個基本處理電路,並將廣播數據塊廣播至多個基本處理電路。基本處理電路的功能包括:對基本數據塊與廣播數據塊執行內積運算得到運算結果,將運算結果發送至主處理電路。主處理電路對運算結果處理得到待計算的數據塊以及運算指令的指令結果。
Description
本申請涉及通信及芯片技術領域,具體涉及一種芯片裝置以及相關產品。
人工神經網絡(Artificial Neural Network,ANN),是20世紀80年代以來人工智能領域興起的研究熱點。它從信息處理角度對人腦神經元網絡進行抽象,建立某種簡單模型,按不同的連接方式組成不同的網絡。在工程與學術界也常直接簡稱為神經網絡或類神經網絡。神經網絡是一種運算模型,由大量的節點(或稱神經元)之間相互聯接構成。現有的神經網絡的運算基於中央處理器(Central Processing Unit,CPU)或圖形處理器(Graphics Processing Unit,GPU)來實現運算,此種運算的功耗高、計算時間長。
本申請實施例提供了一種神經網絡的運算方法及相關產品,可减少運算計算時間,降低模塊的功耗優點。
第一方面,本申請實施例提供一種神經網絡的運算方法,所述方法應用在芯片裝置內,所述芯片裝置包括:主處理電路以及多個基本處理電路,
所述方法包括如下步驟:主處理電路獲取待計算的數據塊以及運算指令,依據該運算指令對所述待計算的數據塊劃分成分發數據塊以及廣播數據塊;主處理電路對所述分發數據塊進行拆分處理得到多個基本數據塊,將所述多個基本數據塊分發至所述多個基本處理電路,主處理電路將所述廣播數據塊廣播至所述多個基本處理電路;基本處理電路對所述基本數據塊與所述廣播數據塊執行內積運算得到運算結果,將所述運算結果發送至主處理電路;主處理電路對所述運算結果處理得到所述待計算的數據塊以及運算指令的指令結果。
可選的,所述主處理電路將所述廣播數據塊廣播至所述多個基本處理電路,包括:所述主處理電路將所述廣播數據塊通過一次廣播至所述多個基本處理電路。
可選的,所述基本處理電路對所述基本數據塊與所述廣播數據塊執行內積運算得到運算結果,將所述運算結果發送至主處理電路,包括:所述基本處理電路將所述基本數據塊與所述廣播數據塊執行內積處理得到內積處理結果,將所述內積處理結果累加得到運算結果,將所述運算結果發送至主處理電路。
可選的,所述運算結果為內積處理的結果,所述主處理電路對所述運算結果處理得到所述待計算的數據塊以及運算指令的指令結果,包括:所述主處理電路對所述運算結果累加後得到累加結果,將該累加結果排列得到所述待計算的數據塊以及運算指令的指令結果。
可選的,所述主處理電路將所述廣播數據塊廣播至所述多個基本處理電路,包括:
將所述廣播數據塊分成多個部分廣播數據塊,將所述多個部分廣播數據塊通過多次廣播至所述多個基本處理電路。
可選的,所述基本處理電路對所述基本數據塊與所述廣播數據塊執行內積運算得到運算結果,將所述運算結果發送至主處理電路,包括:所述基本處理電路將所述部分廣播數據塊與所述基本數據塊執行一次內積處理後得到內積處理結果,將所述內積處理結果累加得到部分運算結果,將所述部分運算結果發送至所述主處理電路。
可選的,所述基本處理電路對所述基本數據塊與所述廣播數據塊執行內積運算得到運算結果,將所述運算結果發送至主處理電路,包括:所述基本處理電路複用n次該部分廣播數據塊執行該部分廣播數據塊與該n個基本數據塊內積運算得到n個部分處理結果,將n個部分處理結果分別累加後得到n個部分運算結果,將所述n個部分運算結果發送至主處理電路,所述n為大於等於2的整數。
第二方面,提供一種芯片裝置,所述芯片裝置包括:主處理電路以及多個基本處理電路,所述主處理電路,用於獲取待計算的數據塊以及運算指令,依據該運算指令對所述待計算的數據塊劃分成分發數據塊以及廣播數據塊;對所述分發數據塊進行拆分處理得到多個基本數據塊,將所述多個基本數據塊分發至所述多個基本處理電路,將所述廣播數據塊廣播至所述多個基本處理電路;所述基本處理電路,用於對所述基本數據塊與所述廣播數據塊執行內積運算得到運算結果,將所述運算結果發送至所述主處理電路;所述主處理電路,用於對所述運算結果處理得到所述待計算的數據塊以及運算指令的指令結果。
可選的,所述芯片裝置還包括:分支處理電路,所述分支處理電路設置在主處理電路與基本處理電路之間;所述分支處理電路,用於轉發數據。
可選的,所述主處理電路,具體用於將所述廣播數據塊通過一次廣播至所述多個基本處理電路。
可選的,所述基本處理電路,具體用於將所述基本數據塊與所述廣播數據塊執行內積處理得到內積處理結果,將所述內積處理結果累加得到運算結果,將所述運算結果發送至所述主處理電路。
可選的,所述主處理電路,用於在如所述運算結果為內積處理的結果時,對所述運算結果累加後得到累加結果,將該累加結果排列得到所述待計算的數據塊以及運算指令的指令結果。
可選的,所述主處理電路,具體用於將所述廣播數據塊分成多個部分廣播數據塊,將所述多個部分廣播數據塊通過多次廣播至所述多個基本處理電路。
可選的,所述基本處理電路,具體用於將所述部分廣播數據塊與所述基本數據塊執行一次內積處理後得到內積處理結果,將所述內積處理結果累加得到部分運算結果,將所述部分運算結果發送至所述主處理電路。
可選的,所述基本處理電路,具體用於複用n次該部分廣播數據塊執行該部分廣播數據塊與該n個基本數據塊內積運算得到n個部分處理結果,將n個部分處理結果分別累加後得到n個部分運算結果,將所述n個部分運算結果發送至主處理電路,所述n為大於等於2的整數。
可選的,所述主處理電路包括:主寄存器或主片上緩存電路的一種或任意組合;
所述基本處理電路包括:基本寄存器或基本片上緩存電路的一種或任意組合。
可選的,所述主處理電路包括:向量運算器電路、算數邏輯單元電路、累加器電路、矩陣轉置電路、直接內存存取電路或數據重排電路中的一種或任意組合。
可選的,所述基本處理電路包括:內積運算器電路或累加器電路等中一個或任意組合。
可選的,所述分支處理電路為多個分支處理電路,所述主處理電路與所述多個分支處理電路分別連接,每個分支處理電路與至少一個基本處理電路連接。
可選的,所述分支處理電路為多個分支處理電路,所述多個分支處理電路串聯連接後與所述主處理電路連接,每個分支處理電路分別連接至少一個基本處理電路。
可選的,所述分支處理電路具體用於轉發所述主處理電路與所述基本處理電路之間的數據。
可選的,所述分支處理電路具體用於轉發所述主處理電路與所述基本處理電路或其他分支處理電路之間的數據。
可選的,所述數據為:向量、矩陣、三維數據塊、四維數據塊以及n維數據塊中一種或任意組合。
可選的,如所述運算指令為乘法指令,確定乘數數據塊為廣播數據塊,被乘數數據塊為分發數據塊;
如所述運算指令為卷積指令,確定輸入數據塊為廣播數據塊,卷積核為分發數據塊。
第三方面,提供一種第二方面提供的芯片裝置的應用方法,所述芯片裝置用於執行矩陣乘矩陣運算、矩陣乘向量運算、卷積運算或全連接運算中的一種或任意組合。
第四方面,提供一種芯片,所述芯片集成第二方面提供的芯片裝置。
第五方面,提供一種智能設備,所述智能設備包括第六方面提供的芯片。
實施本申請實施例,具有如下有益效果:可以看出,通過本申請實施例,在接收到數據以及運算指令以後,將數據劃分為分發數據以及廣播數據,將分發數據進行拆分成基本數據塊以後分發至多個基本處理電路執行內積運算,這樣將運算量最大的內積運算分發給多個基本處理電路同時執行,所以其具有减少計算時間,節省功耗的優點。
S201、S202、S203、S204、S205、S301、S302、S303、S304、S305、S306、S307、S308、S309、S310:步驟
A、B、C:矩陣
圖1a是本申請提供的一種芯片裝置的結構示意圖。
圖1b是本申請提供的另一種芯片裝置的結構示意圖。
圖1c是本申請提供的芯片裝置的數據分發示意圖。
圖1d為一種芯片裝置的數據回傳示意圖。
圖2是本申請實施例提供的一種神經網絡的運算方法的流程示意圖。
圖2a是本申請實施例提供的矩陣A乘以矩陣B的示意圖。
圖3是本申請實施例提供的神經網絡的運算方法的流程示意圖。
圖3a為全連接1的單樣本數據示意圖。
圖3b為全連接2的多樣本數據示意圖。
圖3c為卷積1的M個卷積核數據示意圖。
圖3d為卷積2輸入數據示意圖。
圖3e為輸入數據的一個三維數據塊的運算窗口示意圖。
圖3f為輸入數據的一個三維數據塊的另一運算窗口示意圖。
圖3g為輸入數據的一個三維數據塊的又一運算窗口示意圖。
下面將結合本申請實施例中的圖式,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本申請一部分實施例,而不是全部的實施例。基於本申請中的實施例,所屬技術領域中具有通常知識者在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本申請保護的範圍。
本申請的說明書和申請專利範圍及所述圖式中的術語“第一”、“第二”、“第三”和“第四”等是用於區別不同對象,而不是用於描述特定順序。此外,術語“包括”和“具有”以及它們任何變形,意圖在於覆蓋不排他的包含。例如包含了一系列步驟或單元的過程、方法、系統、產品或設備沒有限定於已列出的步驟或單元,而是可選地還包括沒有列出的步驟或單元,或可選地還包括對於這些過程、方法、產品或設備固有的其它步驟或單元。
在本文中提及“實施例”意味著,結合實施例描述的特定特徵、結構或特性可以包含在本申請的至少一個實施例中。在說明書中的各個位置出現該
短語並不一定均是指相同的實施例,也不是與其它實施例互斥的獨立的或備選的實施例。,所屬技術領域中具有通常知識者顯式地和隱式地理解的是,本文所描述的實施例可以與其它實施例相結合。
下面以CPU為例來說明神經網絡的運算方法,在神經網絡中,矩陣與矩陣的乘法在神經網絡中大量的使用,這裏以矩陣A與矩陣B的乘法為例來說明CPU的“與”運算方式。假設矩陣A與矩陣B的結果為C,即C=A*B;下述所示:
對於CPU來說,其在計算得到C採用的步驟可以為首先對第一行的完成計算,然後對第二行完成計算,最後對第三行完成運算,即對於CPU來說其運算時一行數據計算完畢以後再執行第二行數據的計算。以上述公式為例,具體的,首先,CPU對第一行完成計算,即需要完成,a 11 * b 11+a 12 * b 21+a 13 * b 31,a 11 * b 12+a 12 * b 22+a 13 * b 32,和a 11 * b 13+a 12 * b 23+a 13 * b 33;
計算完上述以後,再計算a 21 * b 11+a 22 * b 21+a 23 * b 31,a 21 * b 12+a 22 * b 22+a 23 * b 32,a 21 * b 13+a 22 * b 23+a 23 * b 33;最後再計算a 31 * b 11+a 32 * b 21+a 33 * b 31,a 31 * b 12+a 32 * b 22+a 33 * b 32,和a 31 * b 13+a 32 * b 23+a 33 * b 33。
所以對於CPU或GPU來說,其需要一行一行的計算,即對第一行計算完畢以後再進行第二行的計算,然後再執行第三行的計算直至所有行計算完畢,對於神經網絡來說,其行數可能有上千行的數據,所以其計算的時間很長,並且在計算時,CPU長期處於工作狀態,能耗也高。
對於主處理電路,由於其屬於一個硬件單元,所以其可以稱為主處理電路,對於基本處理電路(也可以稱為基本單元或基礎單元),由於其也屬於一個硬件單元,所以可以稱為基礎處理電路,類似分支單元也可以稱為分支處理電路。
參閱圖1b,圖1b為一種芯片裝置的結構示意圖,如圖1b所示,該芯片裝置包括:主處理電路、基本處理電路和分支處理電路。其中,主處理電路可以包括寄存器和/或片上緩存電路,該主處理電路還可以包括:向量運算器電路、算數邏輯單元(arithmetic and logic unit,ALU)電路、累加器電路、直接內存存取(Direct Memory Access,DMA)電路;當然在實際應用中,上述主處理電
路還可以添加,轉換電路(例如矩陣轉置電路)、數據重排電路或激活電路等等其他的電路。
每個基本處理電路可以包括基礎寄存器和/或基礎片上緩存電路;每個基本處理電路還可以包括:內積運算器電路、向量運算器電路、累加器電路等中一個或任意組合。所述電路都可以是集成電路。如具有分支處理電路時,其中主處理電路與分支處理電路連接,該分支處理電路與基本處理電路連接,該基本處理電路用於執行數據塊之間的內積運算,該主處理電路,用於收發外部數據,以及將外部數據分發至分支處理電路,該分支處理電路用於收發主處理電路或基本處理電路的數據。如圖1b所示的結構適合複雜數據的計算,因為對於主處理電路來說,其連接的單元的數量有限,所以需要在主處理電路與基本處理電路之間添加分支處理電路以實現更多的基本處理電路的接入,從而實現對複雜數據塊的計算。
分支處理電路和基本處理電路的連接結構可以是任意的,不局限在圖1b的H型結構。可選的,主處理電路到基本處理電路是廣播或分發的結構,基本處理電路到主處理電路是收集(gather)的結構。廣播,分發和收集的定義如下:所述主處理電路到基本處理電路的數據傳遞方式可以包括:主處理電路與多個分支處理電路分別相連,每個分支處理電路再與多個基本處理電路分別相連。
主處理電路與一個分支處理電路相連,該分支處理電路再連接一個分支處理電路,依次類推,串聯多個分支處理電路,然後,每個分支處理電路再與多個基本處理電路分別相連。
主處理電路與多個分支處理電路分別相連,每個分支處理電路再串聯多個基本處理電路。
主處理電路與一個分支處理電路相連,該分支處理電路再連接一個分支處理電路,依次類推,串聯多個分支處理電路,然後,每個分支處理電路再串聯多個基本處理電路。
分發數據時,主處理電路向部分或者全部基本處理電路傳輸數據,各個接收數據的基本處理電路收到的數據可以不同;廣播數據時,主處理電路向部分或者全部基本處理電路傳輸數據,各個接收數據的基本處理電路收到相同的數據。
收集數據時,部分或全部基本處理電路向主處理電路傳輸數據。需要說明的,如圖1a或如圖1b所示的芯片裝置可以是一個單獨的物理芯片,當然在實際應用中,該芯片裝置也可以集成在其他的芯片內(例如CPU,GPU),本申請具體實施方式並不限制上述芯片裝置的物理表現形式。
參閱圖1c,圖1c為一種芯片裝置的數據分發示意圖,如圖1c的箭頭所示,該箭頭為數據的分發方向,如圖1c所示,主處理電路接收到外部數據以後,將外部數據拆分以後,分發至多個分支處理電路,分支處理電路將拆分數據發送至基本處理電路。
參閱圖1d,圖1d為一種芯片裝置的數據回傳示意圖,如圖1d的箭頭所示,該箭頭為數據的回傳方向,如圖1d所示,基本處理電路將數據(例如內積計算結果)回傳給分支處理電路,分支處理電路在回傳至主處理電路。
參閱圖1a,圖1a為另一種芯片裝置的結構示意圖,該芯片裝置包括:主處理電路以及基本處理電路,該主處理電路與基本處理電路連接。如圖
1a所示的結構由於基本處理電路與主處理電路直接物理連接,所以該結構連接的基本處理電路的數量有限,其適合簡單的數據的計算。
參閱圖2,圖2提供了一種使用上述芯片裝置進行神經網絡的運算方法,該方法採用如圖1a或如圖1b所示的芯片裝置來執行,該方法如圖2所示,包括如下步驟:
步驟S201、芯片裝置的主處理電路獲取待計算的數據塊以及運算指令。
上述步驟S201中的待計算的數據塊具體可以為,矩陣、向量、三維數據、四維數據、多維數據等等,本申請具體實施方式並不限制上述數據塊的具體表現形式,該運算指令具體可以為,乘法指令、卷積指令、加法指令、减法指令、基礎線性代數子程式(Basic Linear Algebra Subprograms,BLAS)函數或激活函數等等。
步驟S202、主處理電路依據該運算指令把該待計算的數據塊劃分成分發數據塊以及廣播數據塊。
上述步驟S202的實現方法具體可以為:如該運算指令為乘法指令,確定乘數數據塊為廣播數據塊,被乘數數據塊為分發數據塊。
如該運算指令為卷積指令,確定輸入數據塊為廣播數據塊,卷積核為分發數據塊。
步驟S203、主處理電路對該分發數據塊進行拆分處理得到多個基本數據塊,將該多個基本數據塊分發至多個基本處理電路,主處理電路將該廣播數據塊廣播至多個基本處理電路。
可選的,上述步驟S203也可以採用循環執行,對數據量比較大的情况下,主處理電路對該分發數據塊進行拆分處理得到多個基本數據塊,將每個基本數據塊拆分成m個基本數據子塊,對廣播數據塊也拆分成m個廣播數據子塊,主處理電路每次分發每個基本數據塊的一個基本數據子塊以及廣播一個廣播數據子塊,該基本數據子塊與廣播數據子塊均為能夠執行並行神經網絡計算的數據塊。例如,以一個1000*1000的矩陣A*1000*1000的矩陣B為例,該基本數據塊可以為矩陣A的第z行數據,該基本數據子塊可以為矩陣A第z行數據中的前20列數據,該廣播數據子塊可以為矩陣B第z列中的前20行數據。
上述步驟S203中的基本數據塊具體可以為,能夠執行內積運算的最小數據塊,以矩陣乘法為例,該基本數據塊可以為矩陣的一行數據,以卷積為例,該基本數據塊可以為一個卷積核的權值。
上述步驟S203中的分發的方式可以參見下述實施例的描述,這裏不再贅述,廣播該廣播數據塊的方法也可以參見下述實施例的描述,這裏不再贅述。
步驟S204、芯片裝置的基本處理電路對該基本數據塊與廣播數據塊執行內積運算得到運算結果,(可能是中間結果)。如果運算結果不是中間結果,將運算結果回傳至主處理電路。
上述步驟S204中的回轉方式可以參見下述實施例的描述,這裏不再贅述。
步驟S205、主處理電路對該運算結果處理得到該待計算的數據塊以及運算指令的指令結果。
上述步驟S205中的處理方式可以為累加、排序等等方式,本申請並不限於上述處理的具體方式,該具體的方式需要依據不同的運算指令來配置,例如還可以包括執行非線性變換等。
本申請提供的技術方案在執行運算時,由主處理電路接收外部數據,該外部數據包括待計算的數據塊以及運算指令,獲取到待計算的數據塊以及運算指令,依據該運算指令確定該待計算的數據塊的分發數據塊以及廣播數據塊,將分發數據塊拆分成多個基本數據塊,將廣播數據塊廣播給多個基本處理電路,將多個基本數據塊分發至多個基本處理電路,多個基本處理電路分別對該基本數據塊以及廣播數據塊執行內積運算得到運算結果,多個基本處理電路將該運算結果返回給主處理電路,主處理電路根據返回的運算結果得到該運算指令的指令結果。此技術方案的技術點在於,針對神經網絡,其很大的運算量在於數據塊與數據塊之間的內積運算,內積運算的開銷大,計算時間長,所以本申請實施例通過該運算指令以及待運算的數據首先區分該待計算的數據塊中的分發數據塊以及廣播數據塊,對於廣播數據塊來說,即實現內積運算時必須使用的數據塊,對於分發數據塊,其屬於在內積運算中可以拆分的數據塊,以矩陣乘法為例,如待計算的數據塊為矩陣A和矩陣B,其運算指令為乘法指令(A*B),依據矩陣乘法的規則,確定矩陣A為可以拆分的分發數據塊,確定矩陣B為廣播的數據塊,因為對於矩陣乘法來說,被乘數矩陣A可以被拆分成多個基本數據塊,乘數矩陣B可以為廣播數據塊。依據矩陣乘法的定義,被乘數矩陣A需要每行數據分別與乘數矩陣B執行內積運算,所以本申請的技術方案將矩陣A分成M個基本數據塊,M個基本數據塊中,每個基本數據塊可以為矩陣A的一行數據。所以對於矩陣乘法來說,其耗時比較大的運算時間被多個基本處理電路分別執行,
所以在內積運算中,多個基本處理電路可以快速的並行運算出結果,從而减少計算時間,較少的計算時間也能夠减少芯片裝置的工作時間,從而降低功耗。
下面通過實際的例子來說明本申請提供的技術方案的效果。如圖2a所示,為一種矩陣A乘以向量B的示意圖,如圖2a所示,矩陣A具有M行,L列,向量B具有L行,假設運算器運算矩陣A的一行與向量B的內積所需時間為t1,如採用CPU或GPU計算,其需要計算完一行以後在進行下一行,那麽對於GPU或CPU計算的方法計算的時間T0=M*t1。而採用本申請具體實施例提供的技術方案,這裏假設基本處理電路具有M個,則矩陣A會被拆分成M個基本數據塊,每個基本數據塊為矩陣A的一行數據,M個基本處理電路同時執行內積運算,那麽其計算時間為t1,對於採用本申請具體實施例提供的技術方案所需要的時間T1=t1+t2+t3,其中t2可以為主處理電路拆分數據的時間,t3可以為處理內積運算的運算結果得到指令結果所需的時間,由於拆分數據以及處理運算結果的計算量非常小,所以花費的時間非常少,所以T0>>T1,所以採用本申請具體實施方式的技術方案能夠非常明顯的减少計算的時間,同時對於待運算的數據所產生的功耗來說,由於T0>>T1,所以對於本申請提供的芯片裝置由於其工作時間特別短,通過實驗證明,當芯片裝置的工作時間非常短時,其能耗會遠低於工作時間長的能耗,所以其具有節省能耗的優點。
上述步驟S203中主處理電路將該廣播數據塊廣播至多個基本處理電路的實現方式有多種,具體可以為:方式甲、將廣播數據塊通過一次廣播至該多個基本處理電路。(所述廣播是指進行“一對多”的數據傳輸,即由主處理電路同時向多個(全部或者一部分)基本處理電路發送相同的數據塊)例如,矩陣A*矩陣B,其中矩陣
B為廣播數據塊,將矩陣B通過一次廣播至該多個基本處理電路,又如,在卷積中,該輸入數據為廣播數據塊,將該輸入數據塊一次廣播至該多個基本處理電路。此方式的優點在於能夠節省主處理電路與基本處理電路的數據傳輸量,即只經過一次廣播即能夠將所有的廣播數據傳輸至多個基本處理電路。
方式乙、將廣播數據塊分成多個部分廣播數據塊,將多個部分廣播數據塊通過多次廣播至該多個基本處理電路,例如,矩陣B通過多次廣播至該多個基本處理電路,具體的,每次廣播矩陣B的N列數據。此方式的優點在於可以降低基本處理電路的配置,因為對於基本處理電路其配置的寄存器的存儲空間不可能很大,如果對於數據量比較大的矩陣B,一次將矩陣B下發給基本處理電路,那麽基本處理電路存儲這些數據就需要比較大的寄存器空間,因為基本處理電路的數量衆多,提高寄存器空間必然對成本的增加產生很大影響,所以此時採用多次廣播該廣播數據塊的方案,即對於基本處理電路來說,其只需要存儲每次廣播的廣播數據塊的部分數據即可,從而降低成本。
需要說明的是,上述步驟S203中的將多個基本數據塊分發至多個基本處理電路也可以採用上述方式甲或方式乙,不同點僅僅在於,其傳輸的方式為單播方式並且傳輸的數據為基本數據塊。
上述步驟S204的實現方法具體可以為:如採用方式甲廣播該廣播數據塊以及方式甲的方式分發基本數據塊(如圖3a所示),基本處理電路對該基本數據塊與廣播數據塊執行內積處理得到內積處理結果,即一次執行一行的內積運算,將該內積處理結果(運算結果中一種)發送至主處理電路,主處理電路將內積處理結果累加,當然在實際應用中,該基本處理電路可以將該內積處理結果累加後,將累加後的結果(運算結果
中的另一種)發送至主處理電路。上述方式可以减少主處理電路與基本處理電路之間的數據傳輸量,進而提高計算的速度。
如採用方式乙廣播數據塊,在一種可選的技術方案中,基本處理電路每接收到部分廣播數據塊,執行一次基本數據塊與部分廣播數據塊的部分內積運算得到部分處理結果,基本處理電路將該處理結果發送至主處理電路,主處理電路將處理結果累加。在另一種可選方案中,如基本處理電路接收的基本數據塊為n個,複用該廣播數據塊執行該廣播數據塊與該n個基本數據塊內積運算得到n個部分處理結果,基本處理電路將該n個處理結果發送至主處理電路,主處理電路將n個處理結果分別累加。當然上述累加也可以在基本處理電路內執行。
對於上述情况一般為廣播數據塊的數據量非常大且分發數據塊也較大,因為對於芯片裝置來說,由於其屬於硬件的配置,所以其配置的基本處理電路雖然在理論上可以無數個,但是在實際中其數量有限,一般為幾十個基本處理電路,該數量隨著技術發展,可能會不斷變化,比如增加。但是對於神經網絡的矩陣乘矩陣的運算中,該矩陣A的行數可能有數千行,矩陣B的列數也有數千列,那麽一次廣播數據將矩陣B下發給基本處理電路就無法實現,那麽其實現的方式可以為,一次廣播矩陣B的部分數據,例如前5列數據,對於矩陣A來說也可以採用類似的方式,對於基本處理電路來說,其就可以每次進行部分內積計算,然後將部分內積計算的結果存儲在寄存器內,等該行所有的內積運算執行完畢後,將該行所有的部分內積計算的結果累加即可以得到一種運算結果,將該運算結果發送至主處理電路。此種方式具有提高計算速度的優點。
參閱圖3,圖3提供了一種神經網絡的計算方法,本實施例中的計算以矩陣A*矩陣B的計算方式來說明,該矩陣A*矩陣B可以為圖2a所示的
矩陣示意圖,為了方便說明,如圖3所示的神經網絡的計算方法在如圖1b所示的芯片裝置內執行,如圖1b所示,該芯片裝置具有16個基本處理電路,為了方便描述以及分配,這裏設置如圖3a所示的M的取值可以為32,該N的取值可以為15,L的取值可以為20。當然可以理解計算裝置可以有任意多個基本處理電路。該方法如圖3所示,包括如下步驟:
步驟S301、主處理電路接收矩陣A、矩陣B以及乘法運算指令A*B。
步驟S302、主處理電路依據乘法運算指令A*B確定矩陣B為廣播數據塊,矩陣A為分發數據塊,將矩陣A拆分成32個基本數據塊,每個基本數據塊為矩陣A的一行數據。
步驟S303、主處理電路將32個基本數據塊均勻分配給16個基本處理電路,將32個基本數據塊均勻分配給16個基本處理電路,即每個基本處理電路接收2個基本數據塊,這兩個數據塊的分配方式可以是任意不重複的分配順序。
上述步驟S303的分配方式可以採用一些其他分配方式,例如當數據塊數量無法恰好均分給每個基本處理電路的時候,可以不平均分配數據庫給每個基本處理電路;也可以對其中的一些無法均分的數據塊進行分割然後平均分配等方式,本申請具體實施方式並不限制上述基本數據塊如何分配給多個基本處理電路的方式。
步驟S304、主處理電路提取矩陣B的前幾列(比如前5列,為了描述方便,以下均以提取矩陣B的5列為例)的部分數據,矩陣B將前5列的部分數據廣播至16個基本處理電路。
步驟S305、16個基本處理電路二次複用該前5列的部分數據與2個基本數據塊執行內積運算以及累加運算得到32*5個前處理結果,將32*5個前處理結果發送至主處理電路。
步驟S306、主處理電路提取矩陣B的中5列的部分數據,矩陣B將中5列的部分數據廣播至16個基本處理電路。
步驟S307、16個基本處理電路二次複用該中5列的部分數據與2個基本數據塊執行內積運算以及累加運算得到32*5個中處理結果,將32*5個中處理結果發送至主處理電路。
步驟S308、主處理電路提取矩陣B的後5列的部分數據,矩陣B將後5列的部分數據廣播至16個基本處理電路。
步驟S309、16個基本處理電路二次複用該後5列的部分數據與2個基本數據塊執行內積運算以及累加運算得到32*5個後處理結果,將32*5個後處理結果發送至主處理電路。
步驟S310、主處理電路將32*5個前處理結果、32*5個中處理結果以及32*5個後處理結果按前、中、後組合在一起得到一個32*15的矩陣C,該矩陣C即為矩陣A*矩陣B的指令結果。
需要說明的是,本實施例示例性的將矩陣B的15列分為前5列、中5列以及後5列。在其他實施例中,也可以根據具體情况對矩陣B進行靈活切分。
如圖3所示的技術方案將矩陣A拆分成32個基本數據塊,然後分批次廣播矩陣B,使得基本處理電路能夠分批次的得到指令結果,由於該內積
拆分成16個基本處理電路來計算,所以能夠極大的降低計算的時間,所以其具有計算時間短,能耗低的優點。
參閱圖1a,圖1a為本申請提供的一種芯片裝置,所述芯片裝置包括:主處理電路以及基本處理電路,所述主處理電路為硬件芯片單元,所述基本處理電路也為硬件芯片單元;所述主處理電路,用於執行神經網絡運算中的各個連續的運算以及與所述基本處理電路傳輸數據;所述基本處理電路,用於依據所述主處理電路傳輸的數據執行神經網絡中並行加速的運算,並將運算結果傳輸給所述主處理電路。
上述並行加速的運算包括但不限於:數據塊與數據塊之間的乘法運算、卷積運算等等大規模並且可以並行的運算。
上述各個連續的運算包括但不限於:累加運算、矩陣轉置運算、數據排序運算等等連續的運算。
主處理電路以及多個基本處理電路,所述主處理電路,用於獲取待計算的數據塊以及運算指令,依據該運算指令對所述待計算的數據塊劃分成分發數據塊以及廣播數據塊;對所述分發數據塊進行拆分處理得到多個基本數據塊,將所述多個基本數據塊分發至所述多個基本處理電路,將所述廣播數據塊廣播至所述多個基本處理電路;所述基本處理電路,用於對所述基本數據塊與所述廣播數據塊執行內積運算得到運算結果,將所述運算結果發送至所述主處理電路;所述主處理電路,用於對所述運算結果處理得到所述待計算的數據塊以及運算指令的指令結果。
可選的,所述芯片裝置還包括:分支處理電路,所述分支處理電路設置在主處理電路與基本處理電路之間;所述分支處理電路,用於轉發數據。
可選的,所述主處理電路,具體用於將所述廣播數據塊通過一次廣播至所述多個基本處理電路。
可選的,所述基本處理電路,具體用於將所述基本數據塊與所述廣播數據塊執行內積處理得到內積處理結果,將所述內積處理結果累加得到運算結果,將所述運算結果發送至所述主處理電路。
可選的,所述主處理電路,用於在如所述運算結果為內積處理的結果時,對所述運算結果累加後得到累加結果,將該累加結果排列得到所述待計算的數據塊以及運算指令的指令結果。
可選的,所述主處理電路,具體用於將所述廣播數據塊分成多個部分廣播數據塊,將所述多個部分廣播數據塊通過多次廣播至所述多個基本處理電路。
可選的,所述基本處理電路,具體用於將所述部分廣播數據塊與所述基本數據塊執行一次內積處理後得到內積處理結果,將所述內積處理結果累加得到部分運算結果,將所述部分運算結果發送至所述主處理電路。
可選的,所述基本處理電路,具體用於複用n次該部分廣播數據塊執行該部分廣播數據塊與該n個基本數據塊內積運算得到n個部分處理結果,將n個部分處理結果分別累加後得到n個部分運算結果,將所述n個部分運算結果發送至主處理電路,所述n為大於等於2的整數。
本申請具體實施方式還提供一種如圖1a所示的芯片裝置的應用方法,該應用方法具體可以用於執行矩陣乘矩陣運算、矩陣乘向量運算、卷積運算或全連接運算中的一種或任意組合。
具體地,所述主處理電路還可以執行pooling(池化)運算,規則化(歸一化)運算,如batch normalization,LRN等神經網絡運算步驟。
本申請具體實施方式還提供一種芯片,該芯片包括如圖1a或如1b所示的芯片裝置。
本申請具體實施方式還提供一種智能設備,該智能設備包括上述芯片,該芯片集成有如圖1a或如圖1b所示的芯片裝置。該智能設備包括但不限於:智能手機、平板電腦、個人數字助理、智能手錶、智能攝像頭、智能電視、智能冰箱等等智能設備,上述設備僅僅為了舉例說明,本申請具體實施方式並不局限上述設備的具體表現形式。
上述矩陣乘矩陣運算可以參見如圖3所示實施例的描述。這裏不再贅述。
使用芯片裝置進行全連接運算;如果全連接層的輸入數據是一個長度為L的向量(如“圖3a所示全連接1-單樣本”中向量B)(即神經網絡的輸入是單個樣本的情况),全連接層的輸出是一個長度為M的向量,全連接層的權值是一個M*L的矩陣(如“圖3b全連接1-單樣本”中矩陣A),則以全連接層的權值矩陣作為矩陣A(即拆分數據塊),輸入數據作為向量B(即廣播數據塊),按照上述如圖2所示的方法一執行運算。具體的運算方法可以為:
如果全連接層的輸入數據是一個矩陣(即神經網絡的輸入是多個樣本作為batch一起進行運算的情况)(全連接層的輸入數據表示N個輸入樣本,每個樣本是一個長度為L的向量,則輸入數據用一個L*N的矩陣表示,如“圖3b全連接1-多樣本”中矩陣B表示),全連接層對每一個樣本的輸出是一個長度為M的向量,則全連接層的輸出數據是一個M*N的矩陣,如“圖3a全連接1-多樣本”中的結果矩陣,全連接層的權值是一個M*L的矩陣(如“圖3a全連接1-多樣本”中矩陣A),則以全連接層的權值矩陣作為矩陣A(即拆分數據塊),輸入數據矩陣作為矩陣B(即廣播數據塊),或者以全連接層的權值矩陣作為矩陣B(即廣播數據塊),輸入向量作為矩陣A(即拆分數據塊),按照上述如圖2所示的方法一執行運算。
芯片裝置
使用所述芯片裝置進行人工神經網絡運算時候,神經網絡中的卷積層,池化層,規則化層(也叫歸一化層,如BN(Batch normalization)或者LRN(Local Response Normalization))等的輸入數據如“圖3d卷積2-輸入數據”(為了表示清楚,這裏對表示每個樣本的三維數據塊使用C=5,H=10,W=12作為示例進行說明,實際使用中N,C,H,W的大小不局限在圖3d中所示的數值)所示,圖3d中的每一個三維數據塊表示一個樣本對應與這一層的輸入數據,每個三維數據塊的三個維度分別是C、H和W,共有N個這樣的三維數據塊。
在進行上述這些神經網絡層的計算時,主處理電路接收到輸入數據後,對每一個輸入數據的樣本,使用主處理電路的數據重排電路,將輸入數據按照一定的順序擺放,該順序可以是任意的順序;
可選的,該順序將按上述示意圖代表的C維度坐標變化最快的方式擺放輸入數據,例如NHWC和NWHC等。其中,C表示數據塊最內層的維度,該N表示數據塊最外層的維度,H和W是中間層的維度。這樣的效果是C的數據是挨在一起的,由此易於提高運算的並行度,更易於多個特徵圖(Feature map)進行並行運算。
以下解釋對於不同的神經網絡運算,C、H和W如何理解。對於卷積和池化來說,H和W是進行卷積和池化運算時的相關運算窗口滑動維度(運算窗口在W維度上滑動的示例圖如圖3e卷積3-滑動a”和“圖3f卷積3-滑動b”這兩個圖表示,運算窗口在H維度上滑動的示意圖如圖3g所示,其中運算窗口的大小與M個卷積核中的一個卷積核中的大小一致,如圖3c所示的M個卷積核,每個卷積核為5*3*3的三維數據塊,那麽其運算窗口也為5*3*3的三維數據塊,對於如圖3c所示的M個卷積核中的KH以及KW表示其KH對應的維度為輸入數據的H維度,該KW表示的對應的維度為輸入數據的W維度。圖3e、3f、3g中灰色部分方塊是每一次滑動運算窗口進行運算使用的數據,其滑動的方向可以是以H為滑動方向以後在以W為滑動方向或以W為滑動方向完成以後在以H為滑動方向。具體地,對於卷積來說是,每一個滑動窗口處的運算是圖中灰色部分方塊表示的數據塊與“圖3c卷積1-卷積核”表示的M個卷積核數據塊分別進行內積運算,卷積將對每一個滑動窗口位置對應每一個卷積核輸出一個數值,即對於每個滑動窗口具有M個輸出數值;對於池化來說,每一個滑動窗口處的運算是圖中灰色方塊表示的數據塊在H和W維度(在圖中的例子裏是該灰色數據塊中處於同一個平面上的9個數中)進行選取最大值,或者計算平均值等運算,池化將對每一個滑動窗口位置輸出C個數值。C是單個樣本的三維數據塊
中,除了H和W之外另一個維度,N代表一共有N個樣本同時進行這一層的運算。對於規則化算法中的LRN來說,C維度的定義是:每一次基本的LRN運算沿著C維度選取一個連續的數據塊(即Y*1*1的數據塊),其中Y*1*1的數據塊中的Y為C維度上的取值,Y的取值小於等於C維度的最大值,第一個1表示H維度,第二個1表示W維度;剩下的兩個維度定義成H和W維度,即,對每一個樣本的三維數據塊中,每一次進行LRN規則化的運算時,要對相同的W坐標和相同的H坐標中不同C坐標中連續的一部分數據進行。對於規則化算法BN來說,將N個樣本的三維數據塊中所有的具有相同的C維度上的坐標的數值求平均值和方差(或者標準差)。
所述“圖3c-圖3g”中均使用一個方塊表示一個數值,也可以稱為一個權值;示意圖中所使用的數字均僅限舉例說明,實際情况中維度數據可能是任意數值(包括某個維度為1的情况,這種情况下,所述四維數據塊自動成為三維數據塊,例如,當同時計算的樣本數量為1的情况下,輸入數據就是一個三維數據塊;在例如,當卷積核數量為1的情况下,卷積和數據為一個三維數據塊)。使用所述芯片裝置進行輸入數據B和卷積核A之間的卷積運算;對於一個卷積層,其權值(所有的卷積核)如“圖3c卷積1-卷積核”所示,記其卷積核的數量為M,每個卷積核由C個KH行KW列的矩陣組成,所以卷積層的權值可以表示為一個四個維度分別是M,C,KH,KW的四維數據塊;卷積層的輸入數據為四維數據塊,由N個三維數據塊組成,每個所述三維數據塊由C個H行W列的特徵矩陣組成(即四個維度分別是N,C,H,W的數據塊);如“圖3d卷積2-輸入數據”所示。將M個卷積核中的每一個卷積核的權值從主處理電路分發到K個基本處理電路中的某一個上,保存在基本處理電路
的片上緩存和/或寄存器中(此時的M個卷積核為分發數據塊,每個卷積核可以是一個基本數據塊,當然在實際應用中,也可以將該基本數據塊變更成更小的溫度,例如一個卷積核的一個平面的矩陣);具體的分發方法可以為:如果卷積核的個數M<=K則,給M個基本處理電路分別分發一個卷積核的權值;如果卷積核的個數M>K,則給每個基本處理電路分別分發一個或多個卷積核的權值。(分發到第i個基本處理電路的卷積核權值集合為Ai,共有Mi個卷積核。)在每個基本處理電路中,例如第i個基本處理電路中:將收到的由主處理電路分發的卷積核權值Ai保存在其寄存器和/或片上緩存中;將輸入數據中各部分(即如圖3e、圖3f或如3g所示的滑動窗口)以廣播的方式傳輸給各個基本處理電路(上述廣播的方式可以採用上述方式甲或方式乙),在廣播時,可以通過多次廣播的方式將運算窗口的權值廣播至所有的基本處理電路,具體的,可以每次廣播部分運算窗口的權值,例如每次廣播一個平面的矩陣,以圖3e為例,每次可以廣播一個C平面的KH*KW矩陣,當然在實際應用中,還可以一次廣播一個C平面的KH*HW矩陣中的前n行或前n列的數據,本申請並不限制上述部分數據的發送方式以及部分數據的排列方式;將輸入數據的擺放方式變換為任意維度順序的擺放方式,然後按順序依次廣播各部分輸入數據給基本處理電路。可選的,上述分發數據即卷積核的發送方式也可以採用與輸入數據的運算窗口類似的方法送方式,這裏不再贅述。可選的,將輸入數據的擺放方式變換為C為最內層的循環。這樣的效果是C的數據是挨在一起的,由此提高卷積運算的並行度,更易於多個特徵圖(Feature map)進行並行運算。可選的,將輸入數據的擺放方式變換為維度順序是NHWC或者NWHC的擺放方式每個基本處理電路,例如第i個基本處理電路,計算權值Ai中的卷積核和接收到的廣播的數據對應部分(即運算
窗口)的內積;權值Ai中對應部分的數據可以直接從片上緩存中讀出來使用,也可以先讀到寄存器中以便進行複用。每個基本處理電路內積運算的結果進行累加並傳輸回主處理電路。可以將每次基本處理電路執行內積運算得到的部分和傳輸回主處理電路進行累加;可以將每次基本處理電路執行的內積運算得到的部分和保存在基本處理電路的寄存器和/或片上緩存中,累加結束之後傳輸回主處理電路;也可以將每次基本處理電路執行的內積運算得到的部分和在部分情况下保存在基本處理電路的寄存器和/或片上緩存中進行累加,部分情况下傳輸到主處理電路進行累加,累加結束之後傳輸回主處理電路。
採用芯片裝置實現基礎線性代數子程式(Basic Linear Algebra Subprograms,BLAS)函數的方法
GEMM,GEMM計算是指:BLAS庫中的矩陣-矩陣乘法的運算。該運算的通常表示形式為:C=alpha*op(A)*op(B)+beta*C,其中,A和B為輸入的兩個矩陣,C為輸出矩陣,alpha和beta為標量,op代表對矩陣A或B的某種操作,此外,還會有一些輔助的整數作為參數來說明矩陣的A和B的寬高;使用所述裝置實現GEMM計算的步驟為:芯片的主處理電路對輸入矩陣A和矩陣B進行各自相應的op操作;該op操作可以為矩陣的轉置操作,當然還可以是其他的操作,例如,非線性函數運算,池化等。利用主處理電路的向量運算功能,實現矩陣op操作;如某個矩陣的op可以為空,則主處理電路對該矩陣不執行任何操作;採用如圖2所示的方法完成op(A)與op(B)之間的矩陣乘法計算;
利用主處理電路的向量運算功能,對op(A)*op(B)的結果中的每一個值進行乘以alpha的操作;利用主處理電路的向量運算功能,實現矩陣alpha*op(A)*op(B)和beta*C之間對應位置相加的步驟;GEMV
GEMV計算是指:BLAS庫中的矩陣-向量乘法的運算。該運算的通常表示形式為:C=alpha*op(A)*B+beta*C,其中,A為輸入矩陣,B為輸入的向量,C為輸出向量,alpha和beta為標量,op代表對矩陣A的某種操作;使用所述裝置實現GEMV計算的步驟為:芯片的主處理電路對輸入矩陣A進行相應的op操作;芯片裝置的使用如圖2所示的方法完成矩陣op(A)與向量B之間的矩陣-向量乘法計算;利用主處理電路的向量運算功能,對op(A)*B的結果中的每一個值進行乘以alpha的操作;利用主處理電路的向量運算功能,實現矩陣alpha*op(A)* B和beta*C之間對應位置相加的步驟。
採用芯片裝置實現激活函數的方法
激活函數通常是指對一個數據塊(可以是向量或者多維矩陣)中的每個數執行非線性運算。比如,激活函數可以是:y=max(m,x),其中x是輸入數值,y是輸出數值,m是一個常數;激活函數還可以是:y=tanh(x),其中x是輸入數值,y是輸出數值;激活函數也可以是:y=sigmoid(x),其中x是輸入數值,y是輸出數值;激活函數也可以是一個分段線性函數;激活函數可以是任意輸入一個數,輸出一個數的函數。
實現激活函數時,芯片裝置利用主處理電路的向量計算功能,輸入一向量,計算出該向量的激活向量;主處理電路將輸入向量中的每一個值通過一個激活函數(激活函數的輸入時一個數值,輸出也是一個數值),計算出一個數值輸出到輸出向量的對應位置;上述輸入向量的來源包括但不限於:芯片裝置的外部數據、芯片裝置的分支處理電路轉發的基本處理電路的計算結果數據。
上述計算結果數據具體可以為進行矩陣乘向量的運算結果;上述計算結果數據具體還可以進行矩陣乘矩陣的運算結果;上述輸入數據可以為主處理電路實現加偏置之後的計算結果。
採用芯片裝置實現加偏置操作
利用主處理電路可以實現兩個向量或者兩個矩陣相加的功能;利用主處理電路可以實現把一個向量加到一個矩陣的每一行上,或者每一個列上的功能。
可選的,上述矩陣可以來自所述設備執行矩陣乘矩陣運算的結果;所述矩陣可以來自所述裝置執行矩陣乘向量運算的結果;所述矩陣可以來自所述裝置的主處理電路從外部接受的數據。所述向量可以來自所述裝置的主處理電路從外部接受的數據。
上述輸入數據以及計算結果數據僅僅是舉例說明,在實際應用中,還可以是其他類型或來源的數據,本申請具體實施方式對上述數據的來源方式以及表達方式並不限定。
需要說明的是,對於前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是,所屬技術領域中具有通常知識者應該知
悉,本申請並不受所描述的動作順序的限制,因為依據本申請,某些步驟可以採用其他順序或者同時進行。其次,,所屬技術領域中具有通常知識者也應該知悉,說明書中所描述的實施例均屬於可選實施例,所涉及的動作和模塊並不一定是本申請所必須的。
在上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
在本申請所提供的幾個實施例中,應該理解到,所揭露的裝置,可通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如所述基本處理電路的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性或其它的形式。
另外,在本申請各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元/模塊都是以硬件的形式實現。比如該硬件可以是電路,包括數字電路,模擬電路等等。硬件結構的物理實現包括但不局限於物理器件,物理器件包括但不局限於晶體管,憶阻器等等。所述計算裝置中的計算模塊可以是任何適當的硬件處理器,比如CPU、GPU、FPGA、DSP和ASIC等等。所述存儲單元可以是任何適當的磁存儲介質或者磁光存儲介質,比如RRAM,DRAM,SRAM,EDRAM,HBM,HMC等等。
所述作為說明的單元可以是或者也可以不是物理上分開的,即可以位於一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
以上對本申請實施例進行了詳細介紹,本文中應用了具體個例對本申請的原理及實施方式進行了闡述,以上實施例的說明只是用於幫助理解本申請的方法及其核心思想;同時,對於所屬技術領域中具有通常知識者,依據本申請的思想,在具體實施方式及應用範圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本申請的限制。
Claims (20)
- 一種芯片裝置,其中,所述芯片裝置包括:主處理電路以及多個基本處理電路,所述主處理電路為硬件芯片單元,所述基本處理電路也為硬件芯片單元;所述主處理電路,用於執行神經網絡運算中的各個連續的運算以及與所述基本處理電路傳輸數據;所述基本處理電路,用於依據所述主處理電路傳輸的數據執行神經網絡中並行加速的運算,並將運算結果傳輸給所述主處理電路;所述主處理電路,用於獲取待計算的數據塊以及運算指令,依據所述運算指令將所述待計算的數據塊劃分成分發數據塊以及廣播數據塊;對所述分發數據塊進行拆分處理得到多個基本數據塊,將所述多個基本數據塊分發至所述多個基本處理電路,將所述廣播數據塊廣播至所述多個基本處理電路;所述基本處理電路,用於對所述基本數據塊與所述廣播數據塊執行內積運算得到運算結果,將所述運算結果發送至所述主處理電路;以及所述主處理電路,用於對所述運算結果處理得到所述待計算的數據塊以及運算指令的指令結果。
- 根據申請專利範圍第1項所述的芯片裝置,其中,所述芯片裝置還包括:分支處理電路,所述分支處理電路設置在所述主處理電路與至少一個基本處理電路之間;所述分支處理電路,用於在主處理電路和所述至少一個基本處理電路之間轉發數據。
- 根據申請專利範圍第1或2項所述的芯片裝置,其中, 所述主處理電路,具體用於將所述廣播數據塊通過一次廣播至所述多個基本處理電路。
- 根據申請專利範圍第3項所述的芯片裝置,其中,所述基本處理電路,具體用於將所述基本數據塊與所述廣播數據塊執行內積處理得到內積處理結果,將所述內積處理結果累加得到運算結果,將所述運算結果發送至所述主處理電路。
- 根據申請專利範圍第3項所述的芯片裝置,其中,所述主處理電路,用於在如所述運算結果為內積處理的結果時,對所述運算結果累加後得到累加結果,將所述累加結果排列得到所述待計算的數據塊以及運算指令的指令結果。
- 根據申請專利範圍第1或2項所述的芯片裝置,其中,所述主處理電路,具體用於將所述廣播數據塊分成多個部分廣播數據塊,將所述多個部分廣播數據塊通過多次廣播至所述多個基本處理電路。
- 根據申請專利範圍第6項所述的芯片裝置,其中,所述基本處理電路,具體用於將所述部分廣播數據塊與所述基本數據塊執行一次內積處理後得到內積處理結果,將所述內積處理結果累加得到部分運算結果,將所述部分運算結果發送至所述主處理電路。
- 根據申請專利範圍第7項所述的芯片裝置,其中,所述基本處理電路,具體用於複用n次所述部分廣播數據塊執行所述部分廣播數據塊與所述n個基本數據塊內積運算得到n個部分處理結果,將n個部分處理結果分別累加後得到n個部分運算結果,將所述n個部分運算結果發送至主處理電路,所述n為大於等於2的整數。
- 根據申請專利範圍第1項所述的芯片裝置,其中,所述主處理電路包括:主寄存器或主片上緩存電路的一種或任意組合;所述基本處理電路包括:基本寄存器或基本片上緩存電路的一種或任意組合。
- 根據申請專利範圍第9項所述的芯片裝置,其中,所述主處理電路包括:向量運算器電路、算數邏輯單元電路、累加器電路、矩陣轉置電路、直接內存存取電路或數據重排電路中的一種或任意組合。
- 根據申請專利範圍第9或10項所述的芯片裝置,其中,所述基本處理電路包括:內積運算器電路或累加器電路等中一個或任意組合。
- 根據申請專利範圍第2項所述的芯片裝置,所述分支處理電路為多個分支處理電路,所述主處理電路與所述多個分支處理電路分別連接,每個分支處理電路與至少一個基本處理電路連接。
- 根據申請專利範圍第2項所述的芯片裝置,所述分支處理電路為多個分支處理電路,所述多個分支處理電路串聯連接後與所述主處理電路連接,每個分支處理電路分別連接至少一個基本處理電路。
- 根據申請專利範圍第12項所述的芯片裝置,其中,所述分支處理電路具體用於轉發所述主處理電路與所述基本處理電路之間的數據。
- 根據申請專利範圍第12項所述的芯片裝置,其中,所述分支處理電路具體用於轉發所述主處理電路與所述基本處理電路或其他分支處理電路之間的數據。
- 根據申請專利範圍第1項所述的芯片裝置,其中,所述數據為:向量、矩陣、三維數據塊、四維數據塊以及n維數據塊中一種或任意組合。
- 根據申請專利範圍第1項所述的芯片裝置,其中,如所述運算指令為乘法指令,確定乘數數據塊為廣播數據塊,被乘數數據塊為分發數據塊;如所述運算指令為卷積指令,確定輸入數據塊為廣播數據塊,卷積核為分發數據塊。
- 一種芯片,其中,所述芯片集成如申請專利範圍第1至17項中任意一項所述的芯片裝置。
- 一種智能設備,其中,所述智能設備包括如申請專利範圍第18項所述的芯片。
- 一種神經網絡的運算方法,其中,所述方法應用在芯片裝置內,所述芯片裝置包括:主處理電路以及至少一個基本處理電路,所述方法包括如下步驟:所述主處理電路執行神經網絡運算中的各個連續的運算以及與所述基本處理電路傳輸數據;所述基本處理電路依據所述主處理電路傳輸的數據執行神經網絡中並行加速的運算,並將運算結果傳輸給所述主處理電路;所述主處理電路獲取待計算的數據塊以及運算指令,依據所述運算指令對所述待計算的數據塊劃分成分發數據塊以及廣播數據塊;主處理電路對所述分發數據塊進行拆分處理得到多個基本數據塊,將所述多個基本數據塊分發至所 述至少一個基本處理電路,所述主處理電路將所述廣播數據塊廣播至所述至少一個基本處理電路;以及所述基本處理電路對所述基本數據塊與所述廣播數據塊執行內積運算得到運算結果,將所述運算結果發送至主處理電路;主處理電路對所述運算結果處理得到所述待計算的數據塊以及運算指令的指令結果。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNPCT/CN2017/099991 | 2017-08-31 | ||
PCT/CN2017/099991 WO2019041251A1 (zh) | 2017-08-31 | 2017-08-31 | 芯片装置及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201913460A TW201913460A (zh) | 2019-04-01 |
TWI749249B true TWI749249B (zh) | 2021-12-11 |
Family
ID=65436282
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107125681A TWI749249B (zh) | 2017-08-31 | 2018-07-25 | 芯片裝置、芯片、智能設備以及神經網絡的運算方法 |
Country Status (7)
Country | Link |
---|---|
US (7) | US11409535B2 (zh) |
EP (6) | EP3651031A1 (zh) |
JP (1) | JP7065877B2 (zh) |
KR (3) | KR102477404B1 (zh) |
CN (8) | CN110222308B (zh) |
TW (1) | TWI749249B (zh) |
WO (1) | WO2019041251A1 (zh) |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109992743B (zh) * | 2017-12-29 | 2020-06-16 | 华为技术有限公司 | 矩阵乘法器 |
CN116991226A (zh) * | 2018-02-14 | 2023-11-03 | 上海寒武纪信息科技有限公司 | 处理器的控制装置、方法及设备 |
CN110210610B (zh) * | 2018-03-27 | 2023-06-20 | 腾讯科技(深圳)有限公司 | 卷积计算加速器、卷积计算方法及卷积计算设备 |
US11277455B2 (en) | 2018-06-07 | 2022-03-15 | Mellanox Technologies, Ltd. | Streaming system |
US20200106828A1 (en) * | 2018-10-02 | 2020-04-02 | Mellanox Technologies, Ltd. | Parallel Computation Network Device |
CN110162799B (zh) * | 2018-11-28 | 2023-08-04 | 腾讯科技(深圳)有限公司 | 模型训练方法、机器翻译方法以及相关装置和设备 |
US11175946B2 (en) * | 2018-12-06 | 2021-11-16 | Advanced Micro Devices, Inc. | Pipelined matrix multiplication at a graphics processing unit |
US11657119B2 (en) * | 2018-12-10 | 2023-05-23 | Advanced Micro Devices, Inc. | Hardware accelerated convolution |
US11625393B2 (en) | 2019-02-19 | 2023-04-11 | Mellanox Technologies, Ltd. | High performance computing system |
EP3699770A1 (en) | 2019-02-25 | 2020-08-26 | Mellanox Technologies TLV Ltd. | Collective communication system and methods |
WO2021009901A1 (ja) * | 2019-07-18 | 2021-01-21 | 技術研究組合光電子融合基盤技術研究所 | 並列計算方法およびシステム |
US11481471B2 (en) * | 2019-08-16 | 2022-10-25 | Meta Platforms, Inc. | Mapping convolution to a matrix processor unit |
CN110516793B (zh) * | 2019-08-27 | 2022-06-17 | Oppo广东移动通信有限公司 | 一种池化处理方法及装置、存储介质 |
CN110826687B (zh) * | 2019-08-30 | 2023-11-21 | 安谋科技(中国)有限公司 | 数据处理方法及其装置、介质和系统 |
US12039430B2 (en) * | 2019-11-15 | 2024-07-16 | Samsung Electronics Co., Ltd. | Electronic device and method for inference binary and ternary neural networks |
KR20210071471A (ko) * | 2019-12-06 | 2021-06-16 | 삼성전자주식회사 | 뉴럴 네트워크의 행렬 곱셈 연산을 수행하는 장치 및 방법 |
CN111161705B (zh) * | 2019-12-19 | 2022-11-18 | 寒武纪(西安)集成电路有限公司 | 语音转换方法及装置 |
CN111126582B (zh) * | 2019-12-20 | 2024-04-05 | 上海寒武纪信息科技有限公司 | 数据处理方法和相关产品 |
US11750699B2 (en) | 2020-01-15 | 2023-09-05 | Mellanox Technologies, Ltd. | Small message aggregation |
US11252027B2 (en) | 2020-01-23 | 2022-02-15 | Mellanox Technologies, Ltd. | Network element supporting flexible data reduction operations |
US10713493B1 (en) * | 2020-02-06 | 2020-07-14 | Shenzhen Malong Technologies Co., Ltd. | 4D convolutional neural networks for video recognition |
CN113743598B (zh) * | 2020-05-27 | 2023-08-04 | 杭州海康威视数字技术股份有限公司 | 一种ai芯片的运行方式的确定方法和装置 |
US11876885B2 (en) | 2020-07-02 | 2024-01-16 | Mellanox Technologies, Ltd. | Clock queue with arming and/or self-arming features |
CN114115995A (zh) * | 2020-08-27 | 2022-03-01 | 华为技术有限公司 | 人工智能芯片及运算板卡、数据处理方法及电子设备 |
CN112491555B (zh) * | 2020-11-20 | 2022-04-05 | 山西智杰软件工程有限公司 | 医疗电子签名的处理方法及电子设备 |
CN112416433B (zh) * | 2020-11-24 | 2023-01-17 | 中科寒武纪科技股份有限公司 | 一种数据处理装置、数据处理方法及相关产品 |
US11556378B2 (en) | 2020-12-14 | 2023-01-17 | Mellanox Technologies, Ltd. | Offloading execution of a multi-task parameter-dependent operation to a network device |
CN112953701B (zh) * | 2021-02-04 | 2023-10-31 | 沈阳建筑大学 | 一种四维混沌电路装置 |
CN112799598B (zh) * | 2021-02-08 | 2022-07-15 | 清华大学 | 一种数据处理方法、处理器及电子设备 |
CN113240570B (zh) * | 2021-04-13 | 2023-01-06 | 华南理工大学 | 一种GEMM运算加速器及基于GoogLeNet的图像处理加速方法 |
CN112990370B (zh) * | 2021-04-26 | 2021-09-10 | 腾讯科技(深圳)有限公司 | 图像数据的处理方法和装置、存储介质及电子设备 |
CN115481713A (zh) * | 2021-06-15 | 2022-12-16 | 瑞昱半导体股份有限公司 | 改进卷积神经网络进行计算的方法 |
KR20230068572A (ko) * | 2021-11-11 | 2023-05-18 | 삼성전자주식회사 | 메모리 어레이 내의 연결 회로 |
CN116150555A (zh) * | 2021-11-19 | 2023-05-23 | 中科寒武纪科技股份有限公司 | 计算装置、利用计算装置实施卷积运算的方法及相关产品 |
CN114936633B (zh) * | 2022-06-15 | 2023-06-30 | 北京爱芯科技有限公司 | 用于转置运算的数据处理单元及图像转置运算方法 |
US11922237B1 (en) | 2022-09-12 | 2024-03-05 | Mellanox Technologies, Ltd. | Single-step collective operations |
CN117974417B (zh) * | 2024-03-28 | 2024-07-02 | 腾讯科技(深圳)有限公司 | Ai芯片、电子设备及图像处理方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103295065A (zh) * | 2008-03-08 | 2013-09-11 | 东京毅力科创株式会社 | 自主的基于生物学的学习工具 |
CN103403724A (zh) * | 2011-03-04 | 2013-11-20 | 东京毅力科创株式会社 | 用于基于库的临界尺寸(cd)计量的精确和快速的神经网络训练 |
CN105956659A (zh) * | 2016-05-11 | 2016-09-21 | 北京比特大陆科技有限公司 | 数据处理装置和系统、服务器 |
EP3144860A2 (en) * | 2015-09-17 | 2017-03-22 | Panasonic Intellectual Property Management Co., Ltd. | Subject estimation system for estimating subject of dialog |
EP3154001A2 (en) * | 2015-10-08 | 2017-04-12 | VIA Alliance Semiconductor Co., Ltd. | Neural network unit with neural memory and array of neural processing units that collectively shift row of data received from neural memory |
Family Cites Families (86)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5023833A (en) * | 1987-12-08 | 1991-06-11 | California Institute Of Technology | Feed forward neural network for unary associative memory |
US5956703A (en) * | 1995-07-28 | 1999-09-21 | Delco Electronics Corporation | Configurable neural network integrated circuit |
JPH117438A (ja) * | 1997-06-18 | 1999-01-12 | Fuji Xerox Co Ltd | 積和演算処理方法、装置及び記録媒体 |
JP2001188767A (ja) * | 1999-12-28 | 2001-07-10 | Fuji Xerox Co Ltd | ニューラルネットワーク演算装置及びニューラルネットワークの演算方法 |
US7672952B2 (en) * | 2000-07-13 | 2010-03-02 | Novell, Inc. | System and method of semantic correlation of rich content |
US6925479B2 (en) * | 2001-04-30 | 2005-08-02 | Industrial Technology Research Institute | General finite-field multiplier and method of the same |
US7065544B2 (en) * | 2001-11-29 | 2006-06-20 | Hewlett-Packard Development Company, L.P. | System and method for detecting repetitions in a multimedia stream |
US7737994B1 (en) * | 2003-09-26 | 2010-06-15 | Oracle America, Inc. | Large-kernel convolution using multiple industry-standard graphics accelerators |
US20050125477A1 (en) * | 2003-12-04 | 2005-06-09 | Genov Roman A. | High-precision matrix-vector multiplication on a charge-mode array with embedded dynamic memory and stochastic method thereof |
US7634137B2 (en) * | 2005-10-14 | 2009-12-15 | Microsoft Corporation | Unfolded convolution for fast feature extraction |
GB2453263A (en) * | 2006-05-16 | 2009-04-01 | Douglas S Greer | System and method for modeling the neocortex and uses therefor |
US8644643B2 (en) * | 2006-06-14 | 2014-02-04 | Qualcomm Incorporated | Convolution filtering in a graphics processor |
JP4942095B2 (ja) * | 2007-01-25 | 2012-05-30 | インターナショナル・ビジネス・マシーンズ・コーポレーション | マルチコア・プロセッサにより演算を行う技術 |
US20080288756A1 (en) * | 2007-05-18 | 2008-11-20 | Johnson Timothy J | "or" bit matrix multiply vector instruction |
EP2996035A1 (en) * | 2008-10-15 | 2016-03-16 | Hyperion Core, Inc. | Data processing device |
US20100122070A1 (en) * | 2008-11-07 | 2010-05-13 | Nokia Corporation | Combined associative and distributed arithmetics for multiple inner products |
US20110025816A1 (en) * | 2009-07-31 | 2011-02-03 | Microsoft Corporation | Advertising as a real-time video call |
US8577950B2 (en) * | 2009-08-17 | 2013-11-05 | International Business Machines Corporation | Matrix multiplication operations with data pre-conditioning in a high performance computing architecture |
US8583896B2 (en) * | 2009-11-13 | 2013-11-12 | Nec Laboratories America, Inc. | Massively parallel processing core with plural chains of processing elements and respective smart memory storing select data received from each chain |
US20110314256A1 (en) * | 2010-06-18 | 2011-12-22 | Microsoft Corporation | Data Parallel Programming Model |
US10078620B2 (en) * | 2011-05-27 | 2018-09-18 | New York University | Runtime reconfigurable dataflow processor with multi-port memory access module |
CN102214160B (zh) * | 2011-07-08 | 2013-04-17 | 中国科学技术大学 | 一种基于龙芯3a的单精度矩阵乘法优化方法 |
CN103631761B (zh) * | 2012-08-29 | 2018-02-27 | 睿励科学仪器(上海)有限公司 | 并行处理架构进行矩阵运算并用于严格波耦合分析的方法 |
DE102013104567A1 (de) * | 2013-05-03 | 2014-11-06 | Infineon Technologies Ag | Chipanordnung, Chipkartenanordnung und Verfahren zum Herstellen einer Chipanordnung |
CN103440121B (zh) * | 2013-08-20 | 2016-06-29 | 中国人民解放军国防科学技术大学 | 一种面向向量处理器的三角矩阵乘法向量化方法 |
DE102013109200A1 (de) * | 2013-08-26 | 2015-02-26 | Infineon Technologies Austria Ag | Chip, Chip-Anordnung und Verfahren zum Herstellen eines Chips |
CN104425299B (zh) * | 2013-08-27 | 2017-08-11 | 珠海艾派克微电子有限公司 | 芯片加工装置以及应用芯片加工装置进行芯片加工的方法 |
US20150324686A1 (en) * | 2014-05-12 | 2015-11-12 | Qualcomm Incorporated | Distributed model learning |
CN104036451B (zh) * | 2014-06-20 | 2018-12-11 | 深圳市腾讯计算机系统有限公司 | 基于多图形处理器的模型并行处理方法及装置 |
CN104317352B (zh) * | 2014-10-13 | 2017-10-24 | 中国科学院光电技术研究所 | 一种自适应光学控制系统快速去倾斜分量处理方法 |
CN104346318B (zh) * | 2014-10-15 | 2017-03-15 | 中国人民解放军国防科学技术大学 | 面向通用多核dsp的矩阵乘加速方法 |
CN104463324A (zh) * | 2014-11-21 | 2015-03-25 | 长沙马沙电子科技有限公司 | 一种基于大规模高性能集群的卷积神经网络并行处理方法 |
CN105701120B (zh) * | 2014-11-28 | 2019-05-03 | 华为技术有限公司 | 确定语义匹配度的方法和装置 |
CN104992430B (zh) * | 2015-04-14 | 2017-12-22 | 杭州奥视图像技术有限公司 | 基于卷积神经网络的全自动的三维肝脏分割方法 |
CN104866855A (zh) * | 2015-05-07 | 2015-08-26 | 华为技术有限公司 | 一种图像特征提取方法及装置 |
US10489703B2 (en) | 2015-05-20 | 2019-11-26 | Nec Corporation | Memory efficiency for convolutional neural networks operating on graphics processing units |
US10417555B2 (en) * | 2015-05-29 | 2019-09-17 | Samsung Electronics Co., Ltd. | Data-optimized neural network traversal |
CN104866904B (zh) * | 2015-06-16 | 2019-01-01 | 中电科软件信息服务有限公司 | 一种基于spark的遗传算法优化的BP神经网络并行化方法 |
CN105005911B (zh) * | 2015-06-26 | 2017-09-19 | 深圳市腾讯计算机系统有限公司 | 深度神经网络的运算系统及运算方法 |
CN106293893B (zh) * | 2015-06-26 | 2019-12-06 | 阿里巴巴集团控股有限公司 | 作业调度方法、装置及分布式系统 |
CN105608490B (zh) * | 2015-07-29 | 2018-10-26 | 上海磁宇信息科技有限公司 | 细胞阵列计算系统以及其中的通信方法 |
WO2017031630A1 (zh) * | 2015-08-21 | 2017-03-02 | 中国科学院自动化研究所 | 基于参数量化的深度卷积神经网络的加速与压缩方法 |
CN105260776B (zh) * | 2015-09-10 | 2018-03-27 | 华为技术有限公司 | 神经网络处理器和卷积神经网络处理器 |
CN106447035B (zh) * | 2015-10-08 | 2019-02-26 | 上海兆芯集成电路有限公司 | 具有可变率执行单元的处理器 |
CN105373517A (zh) * | 2015-11-09 | 2016-03-02 | 南京大学 | 基于Spark的分布式稠密矩阵求逆并行化运算方法 |
CN105426344A (zh) * | 2015-11-09 | 2016-03-23 | 南京大学 | 基于Spark的分布式大规模矩阵乘法的矩阵计算方法 |
CN105608056A (zh) * | 2015-11-09 | 2016-05-25 | 南京大学 | 一种基于Flink的大规模矩阵并行化的计算方法 |
CN105488565A (zh) * | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
US11024024B2 (en) * | 2015-12-15 | 2021-06-01 | The Regents Of The University Of California | Systems and methods for analyzing perfusion-weighted medical imaging using deep neural networks |
US10482380B2 (en) * | 2015-12-30 | 2019-11-19 | Amazon Technologies, Inc. | Conditional parallel processing in fully-connected neural networks |
CN105512723B (zh) * | 2016-01-20 | 2018-02-16 | 南京艾溪信息科技有限公司 | 一种用于稀疏连接的人工神经网络计算装置和方法 |
CN109242094B (zh) * | 2016-01-20 | 2020-05-08 | 中科寒武纪科技股份有限公司 | 用于执行人工神经网络正向运算的装置和方法 |
CN110135581B (zh) * | 2016-01-20 | 2020-11-06 | 中科寒武纪科技股份有限公司 | 用于执行人工神经网络反向运算的装置和方法 |
CN108416436B (zh) * | 2016-04-18 | 2021-06-01 | 中国科学院计算技术研究所 | 使用多核心处理模块进行神经网络划分的方法及其系统 |
US11055063B2 (en) * | 2016-05-02 | 2021-07-06 | Marvell Asia Pte, Ltd. | Systems and methods for deep learning processor |
US10796220B2 (en) * | 2016-05-24 | 2020-10-06 | Marvell Asia Pte, Ltd. | Systems and methods for vectorized FFT for multi-dimensional convolution operations |
KR102120396B1 (ko) * | 2016-05-26 | 2020-06-08 | 더 가버닝 카운슬 오브 더 유니버시티 오브 토론토 | 심층 신경망용 가속기 |
CN106126481B (zh) * | 2016-06-29 | 2019-04-12 | 华为技术有限公司 | 一种计算系统和电子设备 |
CN106203621B (zh) * | 2016-07-11 | 2019-04-30 | 北京深鉴智能科技有限公司 | 用于卷积神经网络计算的处理器 |
CN106228240B (zh) * | 2016-07-30 | 2020-09-01 | 复旦大学 | 基于fpga的深度卷积神经网络实现方法 |
US10891538B2 (en) * | 2016-08-11 | 2021-01-12 | Nvidia Corporation | Sparse convolutional neural network accelerator |
US20180046903A1 (en) * | 2016-08-12 | 2018-02-15 | DeePhi Technology Co., Ltd. | Deep processing unit (dpu) for implementing an artificial neural network (ann) |
CN106407561B (zh) * | 2016-09-19 | 2020-07-03 | 复旦大学 | 一种并行gpdt算法在多核soc上的划分方法 |
CN106446546B (zh) * | 2016-09-23 | 2019-02-22 | 西安电子科技大学 | 基于卷积自动编解码算法的气象数据填补方法 |
CN106650922B (zh) * | 2016-09-29 | 2019-05-03 | 清华大学 | 硬件神经网络转换方法、计算装置、软硬件协作系统 |
CN106504232B (zh) * | 2016-10-14 | 2019-06-14 | 北京网医智捷科技有限公司 | 一种基于3d卷积神经网络的肺部结节自动检测系统 |
US9779786B1 (en) * | 2016-10-26 | 2017-10-03 | Xilinx, Inc. | Tensor operations and acceleration |
CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
WO2018103736A1 (en) * | 2016-12-09 | 2018-06-14 | Beijing Horizon Information Technology Co., Ltd. | Systems and methods for data management |
CN106844294B (zh) * | 2016-12-29 | 2019-05-03 | 华为机器有限公司 | 卷积运算芯片和通信设备 |
US10402527B2 (en) * | 2017-01-04 | 2019-09-03 | Stmicroelectronics S.R.L. | Reconfigurable interconnect |
IT201700008949A1 (it) * | 2017-01-27 | 2018-07-27 | St Microelectronics Srl | Procedimento di funzionamento di reti neurali, rete, apparecchiatura e prodotto informatico corrispondenti |
CN106940815B (zh) * | 2017-02-13 | 2020-07-28 | 西安交通大学 | 一种可编程卷积神经网络协处理器ip核 |
CN106951395B (zh) * | 2017-02-13 | 2018-08-17 | 上海客鹭信息技术有限公司 | 面向压缩卷积神经网络的并行卷积运算方法及装置 |
US11132599B2 (en) * | 2017-02-28 | 2021-09-28 | Microsoft Technology Licensing, Llc | Multi-function unit for programmable hardware nodes for neural network processing |
CN107066239A (zh) * | 2017-03-01 | 2017-08-18 | 智擎信息系统(上海)有限公司 | 一种实现卷积神经网络前向计算的硬件结构 |
US10528147B2 (en) * | 2017-03-06 | 2020-01-07 | Microsoft Technology Licensing, Llc | Ultrasonic based gesture recognition |
US11360770B2 (en) * | 2017-03-20 | 2022-06-14 | Intel Corporation | Systems, methods, and apparatuses for zeroing a matrix |
CN106970896B (zh) * | 2017-03-30 | 2020-05-12 | 中国人民解放军国防科学技术大学 | 面向向量处理器的二维矩阵卷积的向量化实现方法 |
US10186011B2 (en) * | 2017-04-28 | 2019-01-22 | Intel Corporation | Programmable coarse grained and sparse matrix compute hardware with advanced scheduling |
US10169298B1 (en) * | 2017-05-11 | 2019-01-01 | NovuMind Limited | Native tensor processor, using outer product unit |
WO2018222900A1 (en) * | 2017-05-31 | 2018-12-06 | Intel Corporation | Computationally-efficient quaternion-based machine-learning system |
US10167800B1 (en) * | 2017-08-18 | 2019-01-01 | Microsoft Technology Licensing, Llc | Hardware node having a matrix vector unit with block-floating point processing |
US10963780B2 (en) * | 2017-08-24 | 2021-03-30 | Google Llc | Yield improvements for three-dimensionally stacked neural network accelerators |
US20190102671A1 (en) * | 2017-09-29 | 2019-04-04 | Intel Corporation | Inner product convolutional neural network accelerator |
US11222256B2 (en) * | 2017-10-17 | 2022-01-11 | Xilinx, Inc. | Neural network processing system having multiple processors and a neural network accelerator |
-
2017
- 2017-08-31 EP EP19212002.0A patent/EP3651031A1/en active Pending
- 2017-08-31 EP EP19212010.3A patent/EP3654208A1/en active Pending
- 2017-08-31 KR KR1020197037903A patent/KR102477404B1/ko active IP Right Grant
- 2017-08-31 CN CN201910531031.2A patent/CN110222308B/zh active Active
- 2017-08-31 EP EP19212365.1A patent/EP3654209A1/en active Pending
- 2017-08-31 CN CN201910530860.9A patent/CN110245751B/zh active Active
- 2017-08-31 CN CN201910534528.XA patent/CN110245752B/zh active Active
- 2017-08-31 EP EP17923228.5A patent/EP3605402B1/en active Active
- 2017-08-31 EP EP19212368.5A patent/EP3654210A1/en active Pending
- 2017-08-31 CN CN201780002287.3A patent/CN109729734B8/zh active Active
- 2017-08-31 WO PCT/CN2017/099991 patent/WO2019041251A1/zh unknown
- 2017-08-31 KR KR1020197029020A patent/KR102467688B1/ko active IP Right Grant
- 2017-08-31 EP EP19211995.6A patent/EP3651030A1/en active Pending
- 2017-08-31 JP JP2019553977A patent/JP7065877B2/ja active Active
- 2017-08-31 CN CN201910534527.5A patent/CN110083390B/zh active Active
- 2017-08-31 CN CN202010628834.2A patent/CN111860815A/zh active Pending
- 2017-08-31 CN CN201910534118.5A patent/CN110231958B/zh active Active
- 2017-08-31 CN CN201910102972.4A patent/CN109902804B/zh active Active
- 2017-08-31 KR KR1020197037895A patent/KR102481256B1/ko active IP Right Grant
-
2018
- 2018-07-25 TW TW107125681A patent/TWI749249B/zh active
- 2018-10-23 US US16/168,778 patent/US11409535B2/en active Active
-
2019
- 2019-10-24 US US16/663,206 patent/US11334363B2/en active Active
- 2019-10-24 US US16/663,205 patent/US11347516B2/en active Active
- 2019-10-24 US US16/663,174 patent/US11775311B2/en active Active
- 2019-10-24 US US16/663,181 patent/US11561800B2/en active Active
- 2019-10-24 US US16/663,210 patent/US11354133B2/en active Active
- 2019-10-24 US US16/663,164 patent/US11531553B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103295065A (zh) * | 2008-03-08 | 2013-09-11 | 东京毅力科创株式会社 | 自主的基于生物学的学习工具 |
CN103403724A (zh) * | 2011-03-04 | 2013-11-20 | 东京毅力科创株式会社 | 用于基于库的临界尺寸(cd)计量的精确和快速的神经网络训练 |
EP3144860A2 (en) * | 2015-09-17 | 2017-03-22 | Panasonic Intellectual Property Management Co., Ltd. | Subject estimation system for estimating subject of dialog |
EP3154001A2 (en) * | 2015-10-08 | 2017-04-12 | VIA Alliance Semiconductor Co., Ltd. | Neural network unit with neural memory and array of neural processing units that collectively shift row of data received from neural memory |
CN105956659A (zh) * | 2016-05-11 | 2016-09-21 | 北京比特大陆科技有限公司 | 数据处理装置和系统、服务器 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI749249B (zh) | 芯片裝置、芯片、智能設備以及神經網絡的運算方法 | |
CN109615061B (zh) | 一种卷积运算方法及装置 | |
JP6888073B2 (ja) | チップ装置および関連製品 | |
JP6888074B2 (ja) | チップ装置および関連製品 | |
CN109615062B (zh) | 一种卷积运算方法及装置 |