TWI770261B - 矩陣處理器為基礎之裝置及在其中提供疏矩陣之有效乘法之方法 - Google Patents
矩陣處理器為基礎之裝置及在其中提供疏矩陣之有效乘法之方法 Download PDFInfo
- Publication number
- TWI770261B TWI770261B TW107130715A TW107130715A TWI770261B TW I770261 B TWI770261 B TW I770261B TW 107130715 A TW107130715 A TW 107130715A TW 107130715 A TW107130715 A TW 107130715A TW I770261 B TWI770261 B TW I770261B
- Authority
- TW
- Taiwan
- Prior art keywords
- matrix
- input matrix
- input
- processor
- sequencers
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
- G06F15/8015—One dimensional arrays, e.g. rings, linear arrays, buses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
-
- 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/044—Recurrent networks, e.g. Hopfield 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/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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Computer Hardware Design (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本文中揭示一種在矩陣處理器為基礎之裝置中提供疏矩陣之有效乘法。
在一個態樣中,一矩陣處理器為基礎之裝置之一矩陣處理器包括複數個定序器,其經耦接至用於執行乘法及累加運算之複數個乘法/累加(MAC)單元。每個定序器判定將與一第二輸入矩陣之一元素相乘之一第一輸入矩陣之一元素之一乘積是否具有一零值(例如,藉由判定該第一輸入矩陣之該元素是否具有一零值,或藉由判定該第一輸入矩陣之該元素或該第二輸入矩陣之該元素是否具有一零值)。若該第一輸入矩陣及該第二輸入矩陣之該等元素之該乘積不具有一零值,則該定序器將該等元素提供至一MAC單元以執行一乘法及累加運算。
Description
本發明之技術大體上係關於在矩陣處理器為基礎之裝置中之矩陣處置,且具體而言係關於有效矩陣乘法之技術。
機器學習領域係針對研發及研究可藉由自樣本輸入構造模型來製作經資料驅動之預測或決策之演算法。在以可接受效能設計及程式化明確演算法係困難或不可行的時,可應用機器學習來計算任務。稱為「深度學習」之一種類別的機器學習技術採用含有多個隱藏層之人工類神經網路(ANN)以執行諸如圖案分析及分類之任務。ANN首先藉由基於典型輸入及對應所要輸出之實例而判定操作參數來「訓練」。ANN接著可執行「推斷」,其中所判定之操作參數用以對新輸入進行分類、識別及/或處理。
在用於深度學習之ANN中,ANN內的每一隱藏層使用來自先前層之輸出作為輸入。由於每一層表示為二維矩陣,因此涉及深度學習之絕大部分計算運算由矩陣乘法運算組成。此類矩陣乘法運算可使用諸如批次處理之習知技術及表示ANN中之權重及激活之矩陣的填充/重新定序來更有效地執行。然而,矩陣乘法運算之進一步優化具有大大改良深度學習應用之效能的潛能。
實施方式中所揭示之態樣包括在矩陣處理器為基礎之裝置中提供疏矩陣之有效乘法。就此而言,在一個態樣中,提供一種矩陣處理器為基礎之裝置的矩陣處理器。矩陣處理器包括複數個定序器,該複數個定序器經耦接至用於執行乘法及累加運算之複數個乘法/累加(MAC)單元。定序器中之每一者經組態以判定將與第二輸入矩陣之元素相乘之第一輸入矩陣之元素的乘積是否具有零(0)值。作為非限制性實例,定序器可判定第一輸入矩陣之元素是否具有零(0)值,或可判定第一輸入矩陣之元素或第二輸入矩陣之元素是否具有零(0)值。定序器進一步經組態以回應於判定第一輸入矩陣之元素與第二輸入矩陣之元素之乘積不具有零(0)值而將該等元素提供至MAC單元以執行乘法及累加運算。若第一輸入矩陣之元素與第二輸入矩陣之元素的乘積經判定具有零(0)值,則根據一些態樣,定序器經組態以自MAC單元保留第一輸入矩陣之元素及第二輸入矩陣之元素。以此方式,MAC單元僅須對先前經判定為導致非零乘積之運算元執行乘法及累加運算,從而使得能夠使用較少處理器週期對疏矩陣執行乘法及累加運算。
在另一態樣中,提供一種包含矩陣處理器之矩陣處理器為基礎之裝置。矩陣處理器包含通信耦接至複數個MAC單元中之一或多個MAC單元的複數個定序器。矩陣處理器經組態以接收第一輸入矩陣及第二輸入矩陣,且由複數個定序器中之每個定序器選擇待相乘之第一輸入矩陣之元素及第二輸入矩陣之元素。矩陣處理器經進一步組態以由定序器判定第一輸入矩陣之元素與第二輸入矩陣之元素之乘積是否將等於零(0)。矩陣處理器亦經組態以回應於判定第一輸入矩陣之元素與第二輸入矩陣之元素之乘積將不等於零(0)而由定序器將第一輸入矩陣之元素及第二輸入矩陣之元素提供至複數個MAC單元中之對應的MAC
單元。矩陣處理器另外經組態以藉由對應的MAC單元使用第一輸入矩陣之元素及第二輸入矩陣之元素執行乘法及累加運算。
在另一態樣中,提供一種矩陣處理器為基礎之裝置。矩陣處理器為基礎之裝置包含用於接收第一輸入矩陣及第二輸入矩陣的構件。矩陣處理器為基礎之裝置進一步包含用於選擇待相乘之第一輸入矩陣之元素及第二輸入矩陣之元素的構件。矩陣處理器為基礎之裝置亦包含用於判定第一輸入矩陣之元素與第二輸入矩陣之元素之乘積是否將等於零(0)的構件。矩陣處理器為基礎之裝置另外包含用於回應於判定第一輸入矩陣之元素與第二輸入矩陣之元素之乘積將不等於零(0)而使用第一輸入矩陣之元素及第二輸入矩陣之元素執行乘法及累加運算的構件。
在另一態樣中,提供一種用於執行疏矩陣之有效乘法之方法。該方法包含由矩陣處理器為基礎之裝置的矩陣處理器接收第一輸入矩陣及第二輸入矩陣。該方法進一步包含由矩陣處理器之複數個定序器中之每個定序器選擇待相乘之第一輸入矩陣之元素及第二輸入矩陣之元素。該方法亦包含由定序器判定第一輸入矩陣之元素與第二輸入矩陣之元素之乘積是否將等於零(0)。該方法另外包含回應於判定第一輸入矩陣之元素與第二輸入矩陣之元素之乘積將不等於零(0)而由定序器將第一輸入矩陣之元素及第二輸入矩陣之元素提供至矩陣處理器之複數個MAC單元中之對應的MAC單元。該方法進一步包含由對應的MAC單元使用第一輸入矩陣之元素及第二輸入矩陣之元素執行乘法及累加運算。
100:矩陣處理器為基礎之裝置
102:主系統
104:處理器
106:記憶體
108:快捷外設互聯標準卡
110:系統單晶片
112:主系統之PCIe介面
114:SoC之PCIe介面
116:DDR記憶體
118:高頻寬記憶體
120:記憶體控制器
122:記憶體控制器
124:命令處理器
126:直接記憶體存取單元
128(0)-128(7):處理器片
130:晶片上網絡
132(0)-132(p):微處理器
134:局域高速暫存器
136:全域高速暫存器
138:DMA單元
140:標量處理器
142:矢量處理器
144(0)-144(M):矩陣處理器
146:CPU
148:定序器
150:乘法/累加(MAC)單元
200:輸入矩陣
202:輸入矩陣
204(0)-204(15):元素
206(0)-206(15):元素
208(0)-208(15):MAC單元
210:輸出矩陣
212(0)-212(15):元素
300(0)-300(3):多工器
302(0)-302(3):定序器
304(0)-304(3):多工器
306(0)-306(3):多工器
308(0)-308(3):多工器
310(0)-310(3):多工器
400(0)-400(3):多工器
402(0)-402(3):定序器
404(0)-404(3):多工器
406(0)-406(3):多工器
408(0)-408(3):多工器
410(0)-410(3):多工器
500:多工器
502:定序器
504:多工器
506:多工器
508:多工器
510:多工器
512:多工器
600(0)-600(1):多工器
602(0)-602(1):多工器
604(0):第一定序器
604(1):第二定序器
606:相加單元
700:區塊
702:區塊
704:區塊
706:區塊
708:區塊
710:區塊
800:處理器為基礎之系統
802:CPU
804:處理器
806:快取記憶體
808:系統匯流排
810:記憶體控制器
812:記憶體系統
814:輸入裝置
816:輸出裝置
818:網路介面裝置
820:顯示控制器
822:網路
824(0)-824(N):記憶體單元
826:顯示器
828:視訊處理器
圖1A及圖1B為包括經組態以提供疏矩陣之有效乘法之矩陣處理器的例示性矩陣處理器為基礎之裝置的方塊圖;
圖2為說明待相乘之例示性四乘四(4×4)矩陣及用於計算所得輸出矩陣之每個元素的例示性運算之方塊圖;圖3為說明用於在執行矩陣乘法運算時利用第一輸入矩陣中之稀疏性之例示性態樣的方塊圖;圖4為說明用於在執行矩陣乘法運算時利用第一輸入矩陣及第二輸入矩陣兩者中之稀疏性之例示性態樣的方塊圖;圖5為說明用於在使用較少乘法/累加(MAC)單元執行矩陣乘法時利用矩陣稀疏性之例示性態樣的方塊圖;圖6為說明用於在使用較多MAC單元執行矩陣乘法時利用矩陣稀疏性之例示性態樣的方塊圖;圖7為說明用於執行疏矩陣之有效乘法的圖1之矩陣處理器為基礎之裝置之例示性操作的流程圖;及圖8為可包含在矩陣處理器為基礎之裝置中提供疏矩陣之有效乘法的圖1A及圖1B之矩陣處理器的例示性處理器為基礎之裝置之方塊圖。
優先權申請案
本申請案根據35 U.S.C.§ 119(e)主張名稱為「在處理器為基礎之系統中提供疏矩陣之有效乘法(PROVIDING EFFICIENT MULTIPLICATION OF SPARSE MATRICES IN PROCESSOR-BASED SYSTEMS)」且在2017年8月31日申請之美國臨時專利申請案第62/552,913號之優先權,該專利申請案之內容以其全文引用之方式併入本文中。
現參考附圖,描述本發明之若干例示性態樣。本文中所使用之字語「例示性」意謂「充當實例、例項或說明。」本文中被描述為「例示性」之任何態樣未必應被認作比其他態樣較佳或有利。
實施方式中所揭示之態樣包括在矩陣處理器為基礎之裝置中提供疏矩陣之有效乘法。就此而言,圖1A及圖1B說明經組態以提供疏矩陣之有效乘法的例示性矩陣處理器為基礎之裝置100。現參考圖1A,矩陣處理器為基礎之裝置100提供主系統102,該主系統在一些態樣中可包含ARM®或INTEL® ×86為基礎之伺服器電腦。主系統102包括處理器104(例如,一或多個中央處理單元(CPU)、處理器及/或處理器核心)及記憶體106(例如,雙資料速率(DDR)同步動態隨機存取記憶體(SDRAM)(DDR SDRAM))。矩陣處理器為基礎之裝置100進一步提供快捷外設互聯標準(PCIe)卡108,在該快捷外設互聯標準卡上,系統單晶片(SoC)110經組態以經由主系統102之PCIe介面112及SoC 110之PCIe介面114與主系統102連通。PCIe卡108亦包括DDR記憶體116及高頻寬記憶體118(在附圖中被稱作「HBM」),其分別經由記憶體控制器120及記憶體控制器122(該兩者在附圖中被稱作「MC/PHY」)與SoC 110介接。
SoC 110提供命令處理器124,該命令處理器在一些態樣中可包含諸如ARM®或INTEL® ×86為基礎之處理器的習知處理器。SoC 110亦包括經組態以將資料移動至DDR記憶體116及PCIe介面114且自DDR記憶體116及PCIe介面114移動資料且因此移動至主系統102且自主系統102移動之直接記憶體存取(DMA)單元126。圖1A之SoC 110提供八(8)個處理器片(「片」)128(0)至128(7),該等處理器片藉由晶片上網絡(NoC)130互連。應理解,在一些態樣中,SoC 110可包括比圖1A中所說明更多或更少的片128(0)至128(7)。
為說明片128(0)至128(7)之組成元件,圖1A展示片128(7)之展開圖。片128(7)包含複數個微處理器132(0)至132(P)以及局域高速暫存器(scratchpad)134及全域高速暫存器136。局域高速暫存器134為僅可由片128(7)之微處理器132(0)至132(P)可存取之較高頻寬記憶體。對比而言,全域高速暫存器136為可由片128(0)至128(7)中之任一者存取之較低頻寬記憶體。為將資料移動至局域高速暫存器134
及全域高速暫存器136中及外,片128(7)提供通信耦接至NoC 130之DMA單元138。應理解,在此實例中,片128(0)至128(6)中之每一者包括對應於上文所描述的片128(7)之元件。
圖1B使用微處理器132(P)作為一實例提供圖1A之片128(7)的微處理器132(0)至132(P)之組成元件的更詳細視圖。如圖1B中所見,微處理器132(P)提供標量處理器140及向量處理器142。微處理器132(P)進一步提供複數個矩陣處理器144(0)至144(M)。在圖1B之實例中,矩陣處理器144(0)至144(M)經組態以使用16位浮點精度,此係由於較高精度既非機器學習應用必要的且亦導致減小之效能。標量處理器140、向量處理器142及矩陣處理器144(0)至144(M)受CPU 146控制,該CPU 146在一些態樣中提供用於矩陣處理之專用指令集。應理解,在圖1B之實例中,微處理器132(0)至132(P)中之每一者包括對應於上文所描述的微處理器132(P)之元件的元件。
如圖1A及圖1B中所說明之矩陣處理器為基礎之裝置100及其組成元件可涵蓋其他元件中之任何已知數位邏輯元件、半導體電路、處理核心及/或記憶體結構或其組合。本文中所描述之態樣並不限於任何特定的元件之配置,且所揭示之技術可容易地延伸至半導體插座或封裝上之各種結構及佈局。應理解,矩陣處理器為基礎之裝置100之一些態樣可包括除圖1A及圖1B中所說明之彼等元件之外的元件,且/或可省略圖1A及圖1B中所說明之一些元件。
圖1B之矩陣處理器144(0)至144(M)各自經組態以執行諸如矩陣乘法之運算。如上文所提及,絕大部分計算運算涉及諸如由矩陣乘法運算組成之深度學習之應用。因此,就處理器效能及功率消耗而言,矩陣乘法運算之最佳化可提供最大改良。用於最佳化矩陣乘法運算之一種可能途徑涉及疏矩陣之處置。對於深度學習應用,用於儲存權重的矩陣通常在訓練期間經修剪。此導致具有相對較高稀疏程度之矩陣(例如,具有儲存之零(0)值的矩陣元素)。舉例而言,完全連
接層及循環神經網路(recurrent neural network,RNN)層可具有高至90%至95%之稀疏程度。迴旋層之權重矩陣之稀疏性通常較低,但仍可在30%至60%之範圍內。因此,在矩陣乘法運算期間利用權重及激活矩陣兩者之稀疏性可導致較快的處理器速度及較大的功率節省。
就此而言,矩陣處理器144(0)至144(M)經組態以藉由經組態以偵測儲存零(0)值之矩陣元素來執行疏矩陣之有效矩陣乘法,且接著藉由使用處理器週期跳躍涉及彼等矩陣元素之運算,該等處理器週期將用於乘以及加上彼等矩陣元素,而非執行後續乘法及加法運算。矩陣處理器144(0)至144(M)由此可利用用於深度學習應用中使用之激活矩陣及權重矩陣兩者的稀疏性。如下文參照圖2至圖6更詳細地論述,矩陣處理器144(0)至144(M)包含定序器148及乘法/累加(MAC)單元150,該定序器148及乘法/累加(MAC)單元150以此方式配置,亦即藉由僅對非零輸入執行運算且藉由僅對彼等非零輸入激活相關聯的邏輯及暫存器,以便在執行矩陣乘法時節省處理器週期及功率。以此方式,矩陣處理器144(0)至144(M)可加速矩陣乘法以適應廣泛範圍的稀疏程度,同時最佳化所有層類型之功率消耗(例如,作為非限制性實例為迴旋層、完全連接層及循環神經網路(RNN)層)。在一些態樣中,可實施矩陣處理器144(0)至144(M)以達成絕對輸送量(例如,藉由對每一矩陣處理器144(0)至144(M)使用較多定序器148及/或較多MAC單元150)與可達成的最大稀疏性加速(例如,藉由對每一矩陣處理器144(0)至144(M)使用較少定序器148及/或較少MAC單元150)之間的平衡。應注意,整個矩陣乘法運算之持續時間受「最慢的」MAC單元150限制(亦即,必須執行大部分運算的MAC單元150)。
提供圖2至圖6以說明使用矩陣處理器144(0)至144(M)之疏矩陣之乘法。圖2說明待相乘之二(2)個例示性四乘四(4×4)矩陣及為產生所得輸出矩陣之
每個元素而執行之運算,而圖3至圖6說明可實現圖2中所展示之矩陣之有效乘法的不同機制。
現參考圖2,說明一對例示性輸入矩陣200、202,其可由圖1B之矩陣處理器144(0)至144(M)中之一者接收且相乘。在圖2之實例中,輸入矩陣200、202中之每一者分別包含16個元素204(0)至204(15)及206(0)至206(15)。輸入矩陣200、202中之每一者之元素204(0)至204(15)及206(0)至206(15)以四列及四行配置,且因此輸入矩陣200、202可被稱作「4×4」矩陣。在輸入矩陣200(在本文中亦被稱作「第一輸入矩陣200」)中,每個元素204(0)至204(15)之下標的第一數位表示元素204(0)至204(15)之行,而第二數位表示元素204(0)至204(15)之列。類似地,輸入矩陣202(亦被稱作「第二輸入矩陣202」)具有其元素206(0)至206(15),該等元素經配置成使得每個元素206(0)至206(15)之下標的第一數位表示元素206(0)至206(15)之行,而第二數位表示元素206(0)至206(15)之列。為清楚起見,元素204(0)至204(15)及元素206(0)至206(15)在本文中可藉由圖2中所展示之簡寫標示(例如,A00、B23等)提及。應理解,在實際實施中,輸入矩陣200、202可包括比圖2中所說明之彼等更多或更少的列及/或行。舉例而言,輸入矩陣200、202各自可包含32列及32行,且因此可被視為32×32矩陣。
圖2進一步說明16個MAC單元208(0)至208(15),其可由矩陣處理器144(0)至144(M)中之每一者提供。MAC單元208(0)至208(15)中之每一者經組態以計算兩數目之乘積且接著將結果相加至累加器,由此生成包含元素212(0)至212(15)之輸出矩陣210。由MAC單元208(0)至208(15)中之每一者執行以執行輸入矩陣200、202之矩陣乘法的特定運算在元素212(0)至212(15)內、在對應的MAC單元208(0)至208(15)下方展示。舉例而言,MAC單元208(0)藉由對元素A00及B00、元素A10及B01、元素A20及B02以及元素A30及B03之乘積求和生成輸出值。使用16個MAC單元208(0)至208(15)乘以4×4輸入矩陣200、202需要消耗四(4)個
處理器週期的64個單獨的乘法運算。較大矩陣相應地需要較多單獨運算及處理器週期。舉例而言,使用1,024個MAC單元乘以32×32矩陣將需要消耗32個處理器週期的32,768個單獨的乘法運算。
在圖3中,說明在執行矩陣乘法時利用圖2之輸入矩陣200之稀疏性的例示性態樣。如在圖3中所見,輸入矩陣200之各列與多工器300(0)至300(3)相關聯,該等多工器繼而耦接至定序器302(0)至302(3)(在功能上對應於圖1B之定序器148)。應注意,在此實例中,定序器302(0)至302(3)之數目等於圖2之輸出矩陣210的列之數目(其亦等於輸入矩陣200中的列之數目)。輸入矩陣202之元素與多工器304(0)至304(3)、306(0)至306(3)、308(0)至308(3)及310(0)至310(3)相關聯。多工器304(0)至304(3)、306(0)至306(3)、308(0)至308(3)及310(0)至310(3)中之每一組耦接至MAC單元208(0)至208(15)(其在此實例中在數目上對應於圖2之輸出矩陣210之元素212(0)至212(15)之數目)。舉例而言,多工器304(0)至304(3)分別耦接至MAC單元208(0)、208(4)、208(8)及208(12)。定序器302(0)至302(3)中之每一者的輸出經扇出至對應的多工器304(0)至304(3)、306(0)至306(3)、308(0)至308(3)及310(0)至310(3)之群作為選擇器值。
在圖3之實例中,定序器302(0)耦接至與輸入矩陣200之第一列相關聯的多工器300(0),且亦耦接至與輸入矩陣202之第一列相關聯的多工器304(0)至304(3)。定序器302(0)進一步耦接至MAC單元208(0)至208(3),該等MAC單元中之每一者在執行矩陣乘法時將輸入矩陣200之第一列的元素(亦即,元素A00、A10、A20及A30)作為運算元。儘管為清楚起見自圖3省略,但應理解,定序器302(1)至302(3)類似地耦接至多工器300(1)至300(3)及多工器306(0)至306(3)、308(0)至308(3)及310(0)至310(3)。
當執行矩陣乘法運算時,定序器302(0)經組態以向MAC單元208(0)至208(3)供應計算對應輸出值所需之運算元。定序器302(0)選擇待相乘之輸入矩
陣200之元素及輸入矩陣202之元素。為最佳化矩陣乘法運算,定序器302(0)判定輸入矩陣200之元素與輸入矩陣202之元素的乘積是否將等於零(0)。在圖3之實例中,定序器302(0)藉由判定輸入矩陣200之第一列中的哪些元素等於零(0)(若存在)來作出此判定。對於具有零(0)值之各元素,定序器302(0)保留將彼等運算元提供至MAC單元208(0)至208(3),同時將具有非零乘積之運算元提供至對應的MAC單元208(0)至208(3)。當輸入矩陣200含有零(0)值時,此具有減少必須由MAC單元208(0)至208(3)執行之計算次數的效果。舉例而言,若元素A00及A10各自具有零(0)值,則定序器302(0)在一個處理器週期中將僅將運算元A20及B02提供至MAC單元208(0),隨後在下一處理器週期中提供運算元A30及B03。此將MAC單元208(0)必須執行的單獨計算之數目減少一半以乘以輸入矩陣200、202。
提供圖4以說明其中輸入矩陣200、202兩者之稀疏性可用以最佳化矩陣乘法的例示性態樣。在圖4中,展示圖2之輸入矩陣200、202及MAC單元208(0)至208(15)。輸入矩陣200之第一列的元素與對應的多工器400(0)至400(3)相關聯,該等多工器分別耦接至定序器402(0)至402(3)。定序器402(0)至402(3)繼而耦接至與輸入矩陣202之對應行相關聯的多工器404(0)至404(3)、406(0)至406(3)、408(0)至408(3)及410(0)至410(3)。應理解,輸入矩陣200之其他列中之每一者(為清楚起見,其在圖4中未展示)類似地與多工器及定序器相關聯,導致定序器之數目等於圖2之輸出矩陣210的元素212(0)至212(15)之數目。多工器400(0)至400(3)進一步耦接至MAC單元208(0)至208(3),該等MAC單元中之每一者在執行矩陣乘法時將輸入矩陣200之第一列的元素(亦即,元素A00、A10、A20及A30)作為運算元。輸入矩陣202之元素與多工器404(0)至404(3)、406(0)至406(3)、408(0)至408(3)及410(0)至410(3)相關聯,其中多工器404(0)至404(3)、406(0)至406(3)、408(0)至408(3)及410(0)至410(3)中之每一者耦接至對應於輸入矩陣202之相關聯行的MAC單元208(0)至208(15)中之一者。
如同圖3之定序器302(0),定序器402(0)至402(3)經組態以向MAC單元208(0)至208(3)供應計算對應輸出值所需之運算元。然而,與圖3之定序器302(0)至302(3)相反,定序器402(0)至402(3)判定輸入矩陣200之第一列或輸入矩陣202之第一行的元素是否等於零(0)(若存在)。若來自輸入矩陣200之第一列的運算元或來自輸入矩陣202之第一行的對應運算元具有零(0)值,則在將運算元提供至MAC單元208(0)至208(3)時,彼等運算元隨後由定序器402(0)至402(3)撤回。因此,必須由MAC單元208(0)至208(3)執行之計算的次數可消耗少至零(0)個處理器週期或多達四(4)個處理器週期。
當使用圖2至圖4之較多或較少的MAC單元208(0)至208(15)執行矩陣乘法時,圖1B之矩陣處理器144(0)至144(M)之其他態樣可經組態以利用矩陣稀疏性。就此而言,圖5說明其中採用較少MAC單元208(0)至208(15)之一個態樣。如在圖5中所見,圖2之輸入矩陣200之第一列與耦接至定序器502及MAC單元208(0)的多工器500相關聯。輸入矩陣202之各行亦與多工器504至510相關聯,該等多工器中之每一者耦接至多工器512。多工器512接著耦接至MAC單元208(0)。在此實例中,MAC單元208(0)執行四(4)個輸出元素所要的運算。應理解,輸入矩陣200之其他列(為清楚起見,其在圖5中省略)類似地各自與耦接至定序器及MAC單元之多工器相關聯。因此,總計四(4)個MAC單元208(0)至208(3)將用於所描繪態樣中。應注意,在此實例中,MAC單元208(0)至208(3)及相關聯定序器之數目等於圖2之輸出矩陣210中的列之數目。
圖6說明其中兩個MAC單元208(0)至208(1)用於處理輸入矩陣200之第一列及輸入矩陣202之第一行的內容物之態樣。輸入矩陣200之第一列與兩個多工器600(0)至600(1)相關聯,該兩個多工器分別耦接至MAC單元208(0)至208(1)。類似地,輸入矩陣202之第一行與兩個多工器602(0)至602(1)相關聯,該兩個多工器繼而耦接至對應的MAC單元208(0)至208(1)。第一定序器604(0)耦接至多工器
600(0)及602(1),而第二定序器604(1)耦接至多工器600(1)及602(1)。在圖6之實例中,亦提供相加單元606以對MAC單元208(0)至208(1)之輸出求和。輸入矩陣200之其他列及輸入矩陣202之行(為清楚起見,自圖6省略)類似地與成對的多工器、定序器及MAC單元相關聯。因此,在此實例中,MAC單元之總數目等於圖2之輸出矩陣210中的元素之數目的兩倍,且相關聯定序器之總數目等於圖2之輸入矩陣200中的行之數目的兩倍。
提供圖7以說明用於執行疏矩陣之有效乘法之圖1A及圖1B的矩陣處理器為基礎之裝置100之例示性操作。為清楚起見,在描述圖7時參考圖1B及圖2之元件。圖7中之操作以矩陣處理器(諸如矩陣處理器144(0)至144(M)中之一者)接收第一輸入矩陣200及第二輸入矩陣202開始(區塊700)。就此而言,矩陣處理器144(0)至144(M)在本文中可被稱作「用於接收第一輸入矩陣及第二輸入矩陣的構件」。矩陣處理器144(0)至144(M)之複數個定序器148中之每個定序器選擇待相乘之第一輸入矩陣200之元素(諸如元素204(0))及第二輸入矩陣202之元素(諸如元素206(0))(區塊702)。因此,定序器148在本文中可被稱作「用於選擇待相乘之第一輸入矩陣之元素及第二輸入矩陣之元素的構件」。
定序器148接著判定第一輸入矩陣200之元素204(0)與第二輸入矩陣202之元素206(0)之乘積是否將等於零(0)(區塊704)。定序器148由此在本文中可被稱作「用於判定第一輸入矩陣之元素與第二輸入矩陣之元素的乘積是否將等於零(0)的構件」。在一些態樣中,決策區塊704之操作可包括定序器148判定第一輸入矩陣200之元素204(0)是否具有零(0)值(例如,在主要與第一輸入矩陣200之稀疏性有關的態樣中)。一些態樣可提供:決策區塊704之操作可包括定序器148判定第一輸入矩陣200之元素204(0)及第二輸入矩陣202之元素206(0)中之任一者是否具有零(0)值(例如,在針對處置第一輸入矩陣200及第二輸入矩陣202兩者之稀疏性的態樣中)。
若定序器148在決策區塊704處判定第一輸入矩陣200之元素204(0)與第二輸入矩陣202之元素206(0)的乘積將不等於零(0),則定序器148將第一輸入矩陣200之元素204(0)及第二輸入矩陣202之元素206(0)提供至矩陣處理器144(0)至144(M)之複數個MAC單元150中之對應的MAC單元(區塊706)。對應的MAC單元150接著使用第一輸入矩陣200之元素204(0)及第二輸入矩陣202之元素206(0)執行乘法及累加運算(區塊708)。因此,MAC單元150在本文中可被稱作「用於回應於判定第一輸入矩陣之元素與第二輸入矩陣之元素的乘積將不等於零(0)而使用第一輸入矩陣之元素及第二輸入矩陣之元素執行乘法及累加運算的構件」。
然而,若在決策區塊704處判定第一輸入矩陣200之元素204(0)與第二輸入矩陣202之元素206(0)的乘積將等於零(0),則定序器148自對應的MAC單元150保留第一輸入矩陣200之元素204(0)及第二輸入矩陣202之元素206(0)(區塊710)。定序器148由此在本文中可被稱作「用於回應於判定第一輸入矩陣之元素與第二輸入矩陣之元素的乘積將等於零(0)而保留第一輸入矩陣之元素及第二輸入矩陣之元素的構件」。藉由自對應的MAC單元150保留第一輸入矩陣200之元素204(0)及第二輸入矩陣202之元素206(0),定序器148使得MAC單元150能夠藉由繞過已知乘積為零(0)之矩陣元素的乘法,在較少處理器週期內完成一系列乘法及累加運算。
根據本文中所揭示之態樣在矩陣處理器為基礎之裝置中提供疏矩陣之有效乘法可提供於或整合至任何處理器為基礎之裝置中。實例(非限制性地)包括機上盒、娛樂單元、導航裝置、通信裝置、固定位置資料單元、行動位置資料單元、全球定位系統(GPS)裝置、行動電話、蜂巢式電話、智慧型手機、會話起始協定(SIP)電話、平板電腦、平板手機、伺服器、電腦、攜帶型電腦、行動計算裝置、可穿戴式計算裝置(例如,智慧型手錶、保健或健康跟蹤器、護目鏡等)、桌上型電腦、個人數位助理(PDA)、監控器、電腦監控器、電視、調諧器、無線
電、衛星無線電、音樂播放機、數位音樂播放機、攜帶型音樂播放機、數位視訊播放機、視訊播放機、數位視訊光碟(DVD)播放機、攜帶型數位視訊播放機、汽車、車輛組件、航空電子系統、無人飛機及多旋翼飛行器。
就此而言,圖8說明可包含圖1A之矩陣處理器為基礎之裝置100的處理器為基礎之系統800之實例。處理器為基礎之系統800包括一或多個CPU 802,各自包括一或多個處理器804。在一些態樣中,處理器804可包含圖1B之矩陣處理器144(0)至144(M)。CPU 802可具有耦接至處理器804以用於快速存取臨時儲存之資料的快取記憶體806。CPU 802耦接至系統匯流排808,且可相互耦接包括於處理器為基礎之系統800中的主控裝置及從屬裝置。如所熟知,CPU 802藉由在系統匯流排808上交換位址、控制及資料資訊而與此等其他裝置通信。舉例而言,CPU 802可將匯流排異動請求傳達至作為從屬裝置之實例的記憶體控制器810。
其他主控裝置及從屬裝置可連接至系統匯流排808。作為實例,如圖8中所說明,此等裝置可包括記憶體系統812、一或多個輸入裝置814、一或多個輸出裝置816、一或多個網路介面裝置818及一或多個顯示控制器820。輸入裝置814可包括任何類型之輸入裝置,包括(但不限於)輸入鍵、開關、語音處理器等。裝置816可包括任何類型的輸出裝置,包括(但不限於)音訊、視訊、其他視覺指示器等。網路介面裝置818可為經組態以允許至網路822及來自網路822之資料交換的任何裝置。網路822可為任何類型之網路,包括(但不限於)有線或無線網路、私用或公用網路、區域網路(LAN)、無線區域網路(WLAN)、廣域網路(WAN)、BLUETOOTHTM網路及網際網路。網路介面裝置818可經組態以支援任何類型的所要通信協定。記憶體系統812可包括一或多個記憶體單元824(0)至824(N)。
CPU 802亦可經組態以經由系統匯流排808存取顯示控制器820以控制傳送至一或多個顯示器826的資訊。顯示控制器820經由一或多個視訊處理器828將資訊傳送至顯示器826以待顯示,該一或多個視訊處理器將待顯示之資訊處
理為適合於顯示器826之格式。顯示器826可包括任何類型的顯示器,包括(但不限於)陰極光線套管(CRT)、液晶顯示器(LCD)、電漿顯示器等。
熟習此項技術者將進一步理解,結合本文中所揭示之態樣描述的各種說明性邏輯區塊、模組、電路及演算法可實施為電子硬體、儲存於記憶體或另一電腦可讀媒體中且由處理器或其他處理裝置執行之指令,或此兩者之組合。作為實例,本文中所描述之主控裝置及從屬裝置可用於任何電路、硬體組件、積體電路(IC)或IC晶片中。本文中所揭示之記憶體可為任何類型及大小之記憶體,且可經組態以儲存所要的任何類型之資訊。為清楚地說明此互換性,上文已大體上就其功能性而言描述各種說明性組件、區塊、模組、電路及步驟。如何實施此類功能性取決於特定應用、設計選項及/或強加於整個系統之設計約束。熟習此項技術者可針對每一特定應用而以變化之方式實施所描述之功能性,但不應將此類實施決策解釋為致使脫離本發明之範疇。
可藉由處理器、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、場可程式化閘陣列(FPGA)或其他可程式化邏輯裝置、離散閘或電晶體邏輯、離散硬體組件或其經設計以執行本文中所描述之功能的任何組合來實施或執行結合本文中所揭示之態樣描述的各種說明性邏輯區塊、模組及電路。處理器可為微處理器,但在替代例中,處理器可為任何習知處理器、控制器、微控制器或狀態機。處理器亦可實施為計算裝置之組合(例如,DSP與微處理器之組合、複數個微處理器、結合DSP核心之一或多個微處理器,或任何其他此類組態)。
本文中所揭示之態樣可體現於硬體及儲存於硬體中之指令中,且可駐存於(例如)隨機存取記憶體(RAM)、快閃記憶體、唯讀記憶體(ROM)、電可程式化ROM(EPROM)、電可抹除可程式化ROM(EEPROM)、暫存器、硬碟、可移除式磁碟、CD-ROM或此項技術中已知的任何其他形式之電腦可讀媒體中。例示性儲存媒體耦接至處理器,使得處理器可自儲存媒體讀取資訊且將資訊寫入至儲
存媒體。在替代例中,儲存媒體可整合至處理器中。處理器及儲存媒體可駐存於ASIC中。ASIC可駐存於遠端台中。在替代例中,處理器及儲存媒體可作為離散組件而駐存於遠端台、基地台或伺服器中。
亦應注意,描述本文中在任何例示性態樣中所描述之操作步驟以提供實例及論述。可以不同於所說明之序列的眾多不同序列執行所描述之操作。另外,實際上可以數個不同步驟來執行單一操作步驟中所描述之操作。另外,可組合例示性態樣中所論述之一或多個操作步驟。應理解,對於熟習此項技術者而言將容易地顯而易見,流程圖中所說明之操作步驟可經受大量不同修改。熟習此項技術者亦應理解,可使用多種不同技藝及技術中之任一者表示資訊及信號。舉例而言,可由電壓、電流、電磁波、磁場或磁性粒子、光場或光粒子或其任何組合表示可貫穿以上描述所提及之資料、指令、命令、資訊、信號、位元、符號及碼片。
提供本發明之先前描述以使任何熟習此項技術者能夠製造或使用本發明。熟習此項技術者將易於理解對本發明之各種修改,且本文中所定義之一般原理可在不脫離本發明之精神或範疇的情況下應用於其他變體。因此,本發明並不意欲限於本文中所描述之實例及設計,而應符合與本文中所揭示之原理及新穎特徵相一致的最廣泛範疇。
200:輸入矩陣
202:輸入矩陣
208(0)至208(15):MAC單元
300(0)-300(3):多工器
302(0)-302(3):定序器
304(0)-304(3):多工器
306(0)-306(3):多工器
308(0)-308(3):多工器
310(0)-310(3):多工器
Claims (12)
- 一種包含一矩陣處理器的矩陣處理器為基礎之裝置,其中:該矩陣處理器包含通信耦接至複數個乘法/累加(MAC)單元中之一或多個MAC單元之複數個定序器;及該矩陣處理器經組態以:接收一第一輸入矩陣及一第二輸入矩陣;由該複數個定序器中之每個定序器選擇待相乘之該第一輸入矩陣之一元素及該第二輸入矩陣之一元素;由該定序器判定該第一輸入矩陣之該元素與該第二輸入矩陣之該元素之一乘積是否將等於零(0);及回應於判定該第一輸入矩陣之該元素與該第二輸入矩陣之該元素之該乘積將不等於零(0):由該定序器將該第一輸入矩陣之該元素及該第二輸入矩陣之該元素提供至該複數個MAC單元中之一對應的MAC單元;及由該對應的MAC單元使用該第一輸入矩陣之該元素及該第二輸入矩陣之該元素執行一乘法及累加運算;其中:該複數個MAC單元包含MAC單元之一數目,該數目至少等於由該第一輸入矩陣與該第二輸入矩陣相乘產生之一輸出矩陣中之列之一數目; 該複數個定序器包含定序器之一數目,該數目至少等於該輸出矩陣中之列之該數目。
- 如請求項1之矩陣處理器為基礎之裝置,其中該矩陣處理器經進一步組態以回應於判定該第一輸入矩陣之該元素與該第二輸入矩陣之該元素之該乘積將等於零(0)而由該定序器自該對應的MAC單元保留該第一輸入矩陣之該元素及該第二輸入矩陣之該元素。
- 如請求項1之矩陣處理器為基礎之裝置,其中該複數個MAC單元包含MAC單元之一數目,該數目等於由該第一輸入矩陣與該第二輸入矩陣相乘產生之該輸出矩陣中之元素之一數目。
- 如請求項3之矩陣處理器為基礎之裝置,其中:該複數個定序器包含定序器之一數目,該數目等於該輸出矩陣中之列之該數目;及該矩陣處理器經組態以藉由經組態為由該複數個定序器中之該定序器判定該第一輸入矩陣之該元素是否具有一零(0)值來判定該第一輸入矩陣之該元素與該第二輸入矩陣之該元素之該乘積是否將等於零(0)。
- 如請求項3之矩陣處理器為基礎之裝置,其中:該複數個定序器包含定序器之一數目,該數目等於該輸出矩陣中之元素之一數目;及 該矩陣處理器經組態以藉由經組態為由該複數個定序器中之該定序器判定該第一輸入矩陣之該元素及該第二輸入矩陣之該元素中之任一者是否具有一零(0)值來判定該第一輸入矩陣之該元素與該第二輸入矩陣之該元素之該乘積是否將等於零(0)。
- 如請求項1之矩陣處理器為基礎之裝置,其中:該複數個MAC單元包含MAC單元之一數目,該數目等於該輸出矩陣中之元素之一數目之兩倍;該複數個定序器包含定序器之一數目,該數目等於該第一輸入矩陣中之列之該數目之兩倍。
- 如請求項1之矩陣處理器為基礎之裝置,其經整合於一積體電路(IC)中。
- 一種用於執行疏矩陣之有效乘法之方法,其包含:由一矩陣處理器為基礎之裝置之一矩陣處理器接收一第一輸入矩陣及一第二輸入矩陣;由該矩陣處理器之複數個定序器中之每個定序器選擇待相乘之該第一輸入矩陣之一元素及該第二輸入矩陣之一元素;由該定序器判定該第一輸入矩陣之該元素與該第二輸入矩陣之該元素之一乘積是否將等於零(0);及 回應於判定該第一輸入矩陣之該元素與該第二輸入矩陣之該元素之該乘積將不等於零(0):由該定序器將該第一輸入矩陣之該元素及該第二輸入矩陣之該元素提供至該矩陣處理器之複數個MAC單元中之一對應的乘法/累加(MAC)單元;及由該對應的MAC單元使用該第一輸入矩陣之該元素及該第二輸入矩陣之該元素執行一乘法及累加運算;其中:該複數個MAC單元包含MAC單元之一數目,該數目至少等於由該第一輸入矩陣與該第二輸入矩陣相乘產生之一輸出矩陣中之列之一數目;該複數個定序器包含定序器之一數目,該數目至少等於該輸出矩陣中之列之該數目。
- 如請求項8之方法,其進一步包含回應於判定該第一輸入矩陣之該元素與該第二輸入矩陣之該元素之該乘積將等於零(0)而由該定序器自該對應的MAC單元保留該第一輸入矩陣之該元素及該第二輸入矩陣之該元素。
- 如請求項8之方法,其中該複數個MAC單元包含MAC單元之一數目,該數目等於由該第一輸入矩陣及該第二輸入矩陣相乘產生之該輸出矩陣中之元素之一數目。
- 如請求項10之方法,其中:該複數個定序器包含定序器之一數目,該數目等於該輸出矩陣中之列之該數目;及判定該第一輸入矩陣之該元素與該第二輸入矩陣之該元素之該乘積是否將等於零(0)包含由該複數個定序器中之該定序器判定該第一輸入矩陣之該元素是否具有一零(0)值。
- 如請求項10之方法,其中:該複數個定序器包含定序器之一數目,該數目等於該輸出矩陣中之元素之一數目;及判定該第一輸入矩陣之該元素與該第二輸入矩陣之該元素之該乘積是否將等於零(0)包含由該複數個定序器中之該定序器判定該第一輸入矩陣之該元素及該第二輸入矩陣之該元素中之任一者是否具有一零(0)值。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762552913P | 2017-08-31 | 2017-08-31 | |
US62/552,913 | 2017-08-31 | ||
US16/118,162 US10725740B2 (en) | 2017-08-31 | 2018-08-30 | Providing efficient multiplication of sparse matrices in matrix-processor-based devices |
US16/118,162 | 2018-08-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201921265A TW201921265A (zh) | 2019-06-01 |
TWI770261B true TWI770261B (zh) | 2022-07-11 |
Family
ID=65435104
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107130715A TWI770261B (zh) | 2017-08-31 | 2018-08-31 | 矩陣處理器為基礎之裝置及在其中提供疏矩陣之有效乘法之方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10725740B2 (zh) |
TW (1) | TWI770261B (zh) |
WO (1) | WO2019046730A1 (zh) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10474458B2 (en) | 2017-04-28 | 2019-11-12 | Intel Corporation | Instructions and logic to perform floating-point and integer operations for machine learning |
US10346163B2 (en) | 2017-11-01 | 2019-07-09 | Apple Inc. | Matrix computation engine |
US10970078B2 (en) | 2018-04-05 | 2021-04-06 | Apple Inc. | Computation engine with upsize/interleave and downsize/deinterleave options |
US10642620B2 (en) | 2018-04-05 | 2020-05-05 | Apple Inc. | Computation engine with strided dot product |
US10754649B2 (en) | 2018-07-24 | 2020-08-25 | Apple Inc. | Computation engine that operates in matrix and vector modes |
US10831488B1 (en) | 2018-08-20 | 2020-11-10 | Apple Inc. | Computation engine with extract instructions to minimize memory access |
US11295205B2 (en) * | 2018-09-28 | 2022-04-05 | Qualcomm Incorporated | Neural processing unit (NPU) direct memory access (NDMA) memory bandwidth optimization |
US20200210517A1 (en) * | 2018-12-27 | 2020-07-02 | Intel Corporation | Systems and methods to accelerate multiplication of sparse matrices |
CN113396401A (zh) | 2019-03-15 | 2021-09-14 | 英特尔公司 | 多贴片存储器管理 |
US11934342B2 (en) | 2019-03-15 | 2024-03-19 | Intel Corporation | Assistance for hardware prefetch in cache access |
CN113383310A (zh) * | 2019-03-15 | 2021-09-10 | 英特尔公司 | 矩阵加速器架构内的脉动分解 |
US11392376B2 (en) * | 2019-04-11 | 2022-07-19 | Arm Limited | Processor for sparse matrix computation |
US11379556B2 (en) * | 2019-05-21 | 2022-07-05 | Arm Limited | Apparatus and method for matrix operations |
US11847450B2 (en) | 2019-12-13 | 2023-12-19 | Intel Corporation | Apparatuses, methods, and systems for instructions to multiply values of zero |
US11875154B2 (en) * | 2019-12-13 | 2024-01-16 | Intel Corporation | Apparatuses, methods, and systems for instructions to multiply floating-point values of about zero |
US20210182056A1 (en) * | 2019-12-13 | 2021-06-17 | Intel Corporation | Apparatuses, methods, and systems for instructions to multiply values of one |
US11650819B2 (en) | 2019-12-13 | 2023-05-16 | Intel Corporation | Apparatuses, methods, and systems for instructions to multiply floating-point values of about one |
FR3105659B1 (fr) * | 2019-12-18 | 2022-06-24 | Commissariat Energie Atomique | Procédé et dispositif de codage binaire de signaux pour implémenter des opérations MAC numériques à précision dynamique |
CN111414196B (zh) * | 2020-04-03 | 2022-07-19 | 中国人民解放军国防科技大学 | 一种零值寄存器的实现方法及装置 |
US11614920B2 (en) * | 2020-05-07 | 2023-03-28 | Meta Platforms, Inc. | Bypassing zero-value multiplications in a hardware multiplier |
US11500644B2 (en) | 2020-05-15 | 2022-11-15 | Alibaba Group Holding Limited | Custom instruction implemented finite state machine engines for extensible processors |
US11481214B2 (en) | 2020-07-14 | 2022-10-25 | Alibaba Group Holding Limited | Sparse matrix calculations untilizing ightly tightly coupled memory and gather/scatter engine |
US11928176B2 (en) * | 2020-07-30 | 2024-03-12 | Arm Limited | Time domain unrolling sparse matrix multiplication system and method |
US11861328B2 (en) | 2020-11-11 | 2024-01-02 | Samsung Electronics Co., Ltd. | Processor for fine-grain sparse integer and floating-point operations |
US11861327B2 (en) * | 2020-11-11 | 2024-01-02 | Samsung Electronics Co., Ltd. | Processor for fine-grain sparse integer and floating-point operations |
EP4012618A1 (en) | 2020-12-08 | 2022-06-15 | Electronics and Telecommunications Research Institute | Artificial intelligence processor and method of processing deep-learning operation using the same |
FR3117645B1 (fr) * | 2020-12-16 | 2023-08-25 | Commissariat Energie Atomique | Mise à profit de la faible densité de données ou de poids non-nuls dans un calculateur de somme pondérée |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW452710B (en) * | 1998-10-30 | 2001-09-01 | Intel Corp | A computer product and a method for sparse matrices |
US20160283240A1 (en) * | 2015-03-28 | 2016-09-29 | Intel Corporation | Apparatuses and methods to accelerate vector multiplication |
CN106547723A (zh) * | 2015-09-23 | 2017-03-29 | 浪潮电子信息产业股份有限公司 | 一种预测稀疏矩阵运算能耗的方法 |
US9697176B2 (en) * | 2014-11-14 | 2017-07-04 | Advanced Micro Devices, Inc. | Efficient sparse matrix-vector multiplication on parallel processors |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160358069A1 (en) * | 2015-06-03 | 2016-12-08 | Samsung Electronics Co., Ltd. | Neural network suppression |
US10360163B2 (en) * | 2016-10-27 | 2019-07-23 | Google Llc | Exploiting input data sparsity in neural network compute units |
US10482156B2 (en) * | 2017-12-29 | 2019-11-19 | Facebook, Inc. | Sparsity-aware hardware accelerators |
-
2018
- 2018-08-30 US US16/118,162 patent/US10725740B2/en active Active
- 2018-08-31 TW TW107130715A patent/TWI770261B/zh active
- 2018-08-31 WO PCT/US2018/049112 patent/WO2019046730A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW452710B (en) * | 1998-10-30 | 2001-09-01 | Intel Corp | A computer product and a method for sparse matrices |
US9697176B2 (en) * | 2014-11-14 | 2017-07-04 | Advanced Micro Devices, Inc. | Efficient sparse matrix-vector multiplication on parallel processors |
US20160283240A1 (en) * | 2015-03-28 | 2016-09-29 | Intel Corporation | Apparatuses and methods to accelerate vector multiplication |
CN106547723A (zh) * | 2015-09-23 | 2017-03-29 | 浪潮电子信息产业股份有限公司 | 一种预测稀疏矩阵运算能耗的方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2019046730A1 (en) | 2019-03-07 |
TW201921265A (zh) | 2019-06-01 |
US20190065150A1 (en) | 2019-02-28 |
US10725740B2 (en) | 2020-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI770261B (zh) | 矩陣處理器為基礎之裝置及在其中提供疏矩陣之有效乘法之方法 | |
US11476869B2 (en) | Dynamically partitioning workload in a deep neural network module to reduce power consumption | |
US20190079903A1 (en) | Providing matrix multiplication using vector registers in processor-based devices | |
CN108229654B (zh) | 神经网络卷积运算装置及方法 | |
US10074051B2 (en) | Vector computation unit in a neural network processor | |
US10936943B2 (en) | Providing flexible matrix processors for performing neural network convolution in matrix-processor-based devices | |
JP2022008571A (ja) | 畳み込みニューラルネットワークのためのスーパーピクセル法 | |
US20170060811A1 (en) | Matrix operands for linear algebra operations | |
CN114402338A (zh) | 用于在节能输入操作数固定加速器中执行小通道计数卷积的系统和方法 | |
CN112926022A (zh) | 用于在存储器阵列内执行分集矩阵运算的方法及设备 | |
EP3676698B1 (en) | Providing efficient floating-point operations using matrix processors in processor-based systems | |
JP2022539660A (ja) | 畳み込みからの早期抜け出しのためのシステム、方法、およびデバイス | |
JP2022541721A (ja) | 効率的な乗算のための代替数字形式をサポートするシステムおよび方法 | |
WO2021036362A1 (zh) | 用于处理数据的方法、装置以及相关产品 | |
CN113994347A (zh) | 用于负值和正值的非对称缩放因子支持的系统和方法 | |
WO2021083101A1 (zh) | 数据处理方法、装置及相关产品 | |
WO2021082725A1 (zh) | Winograd卷积运算方法及相关产品 | |
EP4024281A1 (en) | Method and apparatus for processing data, and related product | |
CN104011651A (zh) | 用于执行向量计算指令的方法、装置和系统 | |
Zhou et al. | Hygraph: Accelerating graph processing with hybrid memory-centric computing | |
CN112655005B (zh) | 动态小批量大小 | |
EP3971787A1 (en) | Spatial tiling of compute arrays with shared control | |
CN113112009B (zh) | 用于神经网络数据量化的方法、装置和计算机可读存储介质 | |
US20230071688A1 (en) | System and method of controlling neural processing | |
CN117908831A (zh) | 数据处理方法、处理阵列及处理装置 |