TWI775151B - 圖形處理器及其矩陣運算的加速方法 - Google Patents
圖形處理器及其矩陣運算的加速方法 Download PDFInfo
- Publication number
- TWI775151B TWI775151B TW109132269A TW109132269A TWI775151B TW I775151 B TWI775151 B TW I775151B TW 109132269 A TW109132269 A TW 109132269A TW 109132269 A TW109132269 A TW 109132269A TW I775151 B TWI775151 B TW I775151B
- Authority
- TW
- Taiwan
- Prior art keywords
- matrix
- matrices
- zero
- unit
- result
- Prior art date
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 308
- 238000012545 processing Methods 0.000 title claims abstract description 15
- 238000000034 method Methods 0.000 title claims description 23
- 230000001133 acceleration Effects 0.000 title claims description 17
- 238000004364 calculation method Methods 0.000 title abstract description 9
- 238000001514 detection method Methods 0.000 claims abstract description 34
- 238000009825 accumulation Methods 0.000 claims description 12
- 229940050561 matrix product Drugs 0.000 claims description 5
- 238000013527 convolutional neural network Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 238000002372 labelling Methods 0.000 description 2
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Advance Control (AREA)
- Image Generation (AREA)
- Complex Calculations (AREA)
Abstract
一種圖形處理器包括一稀疏矩陣檢測單元、一寄存器文件(register file)、一斷言寄存器,以及一矩陣運算單元。稀疏矩陣檢測單元讀取一儲存器中的複數矩陣,判斷該等矩陣的每一者是否為一零矩陣或一非零矩陣,並輸出一判斷結果。寄存器文件儲存來自稀疏矩陣檢測單元的該等矩陣。斷言寄存器依據判斷結果,對該等矩陣進行標記,並輸出一標記結果。矩陣運算單元接收一矩陣運算指令,以及依據標記結果,從寄存器文件中讀取該等矩陣中的該等非零矩陣,並且對該等非零矩陣執行矩陣運算。
Description
本發明係有關於圖形處理器,特別有關於具有更佳矩陣運算能力的圖形處理器。
隨著卷積神經網絡(CNN)的應用和流行,各種加速算法以及對應的硬體加速器的設計層出不窮。目前流行的硬體加速器設計方案包括:圖形處理器(GPU)、特殊應用積體電路(ASIC),及現場可程式化邏輯閘陣列(FPGA)。而GPU以其自身已經成熟的並行計算硬體架構和軟體應用取得了執行卷積神經網絡運算的先發優勢。
對於傳統的GPU來說,可直接使用其內的浮點運算單元或設計新的矩陣運算單元來進行加速。但由於傳統GPU的矩陣運算單元係直接對寄存器文件(register file)讀取資料,因此對寄存器文件的讀寫要求很高,因而有可能產生更多的讀寫衝突(conflict),使得其運算效能降低。再者,傳統GPU的矩陣運算單
元並未利用矩陣運算過程中存在許多稀疏矩陣的特性進行進一步的加速,因而增加了功耗,增加了矩陣運算時間。
依據本發明實施例之圖形處理器,包括一稀疏矩陣檢測單元、一寄存器文件(register file)、一斷言寄存器,以及一矩陣運算單元。稀疏矩陣檢測單元讀取一儲存器中的複數矩陣,判斷該等矩陣的每一者是否為一零矩陣或一非零矩陣,並輸出一判斷結果。寄存器文件儲存來自稀疏矩陣檢測單元的該等矩陣。斷言寄存器依據判斷結果,對該等矩陣進行標記,並輸出一標記結果。矩陣運算單元接收一矩陣運算指令,以及依據標記結果,從寄存器文件中讀取該等矩陣中的該等非零矩陣,並且對該等非零矩陣執行矩陣運算。
如上所述之圖形處理器,更包括一線程調度及指令分發單元及一整數運算單元。線程調度及指令分發單元發送一整數運算指令及該矩陣運算指令。整數運算單元接收整數運算指令及矩陣運算指令。整數運算單元依據該整數運算指令執行一整數運算,並且將矩陣運算指令轉傳送予矩陣運算單元。
如上所述之圖形處理器,其中,矩陣運算單元包括一控制單元、複數運算子單元,及一累加單元。控制單元從斷言寄存器讀取該等矩陣的標記結果,並且依據標記結果,從寄存器文件中讀取該等矩陣中的該等非零矩陣。該等運算子單元對該等非零矩
陣執行矩陣運算。累加單元儲存該等運算子單元在執行矩陣運算中的矩陣乘積值及一矩陣運算結果。矩陣乘積值係供該等運算子單元執行矩陣運算時使用。
如上所述之圖形處理器,其中,矩陣運算單元依據標記結果,從寄存器文件中忽略該等矩陣中的該等零矩陣。
如上所述之圖形處理器,其中,當完成矩陣運算時,控制單元從累加單元中讀取矩陣運算結果,並且將矩陣運算結果寫入該寄存器文件中。
如上所述之圖形處理器,其中,斷言寄存器係以一位元來標記該等矩陣中的該等零矩陣及該等非零矩陣。斷言寄存器將該等矩陣中的該等零矩陣標記為“0”,並且將該等矩陣中的該等非零矩陣標記為“1”。
依據本發明實施例之矩陣運算的加速方法,適用於一圖形處理器,包括:接收一矩陣運算指令;從一儲存器中讀取複數矩陣,並且判斷該等矩陣的每一者是否為一零矩陣或一非零矩陣,並輸出一判斷結果;依據判斷結果,對該等矩陣進行標記,並輸出一標記結果;依據標記結果,讀取該等矩陣中的該等非零矩陣,並且對該等非零矩陣執行矩陣運算。
如上所述之加速方法,更包括:依據該標記結果,忽略該等矩陣中的該等零矩陣。
如上所述之加速方法,其中,依據該判斷結果,對該等矩陣進行標記,包括:以一位元來標記該等矩陣中的該等零矩
陣及該等非零矩陣。
如上所述之加速方法,其中,以一位元來標記該等矩陣中的該等零矩陣及該等非零矩陣包括:將該等矩陣中的該等零矩陣標記為“0”,並且將該等矩陣中的該等非零矩陣標記為“1”。
100:圖形處理器
102:稀疏矩陣檢測單元
104:寄存器文件
106:斷言寄存器
108:矩陣運算單元
110:線程調度及指令分發單元
112:整數運算單元
114:浮點運算單元
116:儲存器讀寫控制單元
200:控制單元
202:複數運算子單元
MU:運算子單元
204:累加單元
S300,S302,S304:步驟
S306,S308,S310,S312:步驟
第1圖為本發明實施例之圖形處理器的示意圖。
第2圖為本發明實施例之矩陣運算單元的操作示意圖。
第3圖為本發明實施例之圖形處理器的加速方法的流程圖。
本發明係參照所附圖式進行描述,其中遍及圖式上的相同參考數字標示了相似或相同的元件。上述圖式並沒有依照實際比例大小描繪,其僅僅提供對本發明的說明。一些發明的型態描述於下方作為圖解示範應用的參考。這意味著許多特殊的細節,關係及方法被闡述來對這個發明提供完整的了解。無論如何,擁有相關領域通常知識的人將認識到若沒有一個或更多的特殊細節或用其他方法,此發明仍然可以被實現。以其他例子來說,眾所皆知的結構或操作並沒有詳細列出以避免對這發明的混淆。本發明並沒有被闡述的行為或事件順序所侷限,如有些行為可能發生在不同的順序亦或同時發生在其他行為或事件之下。此外,並非所有闡述的行為或事件都需要被執行在
與現有發明相同的方法之中。
第1圖為本發明實施例之圖形處理器的示意圖。如第1圖所示,圖形處理器(Graphics Processing Unit:GPU)100包括:一稀疏矩陣檢測單元102、一寄存器文件(register file)104、一斷言寄存器106、一矩陣運算單元108、一線程調度及指令分發單元110、一整數運算單元112、一浮點運算單元114,及一儲存器讀寫控制單元116。當圖形處理器100收到一矩陣運算指令時,稀疏矩陣檢測單元102可透過儲存器讀寫控制單元116從一儲存器(未圖示)中讀取複數矩陣。在一些實施例中,圖形處理器100可包含於一電子裝置中,例如一筆記型電腦、一桌上型電腦、一智慧型動裝置、一平板電腦,以及一工作站伺服器等。電子裝置可包括另一處理器(例如一中央處理器(CPU))(未圖示),用以依據使用者的操作對應地傳輸指令(例如矩陣運算指令)予圖形處理器100。在一些實施例中,儲存器係為一非揮發性記憶體,例如一快閃記憶體(flash memory)。
稀疏矩陣檢測單元102可判斷每一矩陣是否為一零矩陣或一非零矩陣,並輸出一判斷結果予斷言寄存器106。在一些實施例中,零矩陣係指矩陣中所有的元素皆為0的矩陣,非零矩陣係為矩陣中的元素皆不為0或部分為0的矩陣。在一些實施例中,稀疏矩陣檢測單元102、寄存器文件104、斷言寄存器106、矩陣運算單元108、線程調度及指令分發單元110、整數運算單元112、一浮點運算單元114,及一儲存器讀寫控制單元116係由圖形處理器100
分別執行對應功能的程式碼所產生。舉例來說,稀疏矩陣檢測單元102係由圖形處理器100執行可用以偵測零矩陣的一程式碼所產生。例如,其程式碼可具有數位邏輯中的一或閘的功能,當矩陣中具有至少一元素不為0時,亦即將矩陣中的所有元素與0輸入至或閘中,若矩陣中有至少一元素與0做或計算的結果不為0,則稀疏矩陣檢測單元102則判斷矩陣為非零矩陣。同理,若矩陣中所有元素與0做或計算的結果皆為0,則稀疏矩陣檢測單元102則判斷矩陣為零矩陣。
寄存器文件104直接儲存來自於稀疏矩陣檢測單元102的矩陣運算過程中所需的矩陣,或透過稀疏矩陣檢測單元102間接儲存來自於儲存器之矩陣運算過程中所需的矩陣。在一些實施例中,寄存器文件104可為一快取(cache)記憶體,用以預先儲存矩陣運算過程中所需使用到的矩陣。斷言寄存器106依據來自稀疏矩陣檢測單元102的判斷結果,對矩陣進行標記,並輸出一標記結果予矩陣運算單元108。在一些實施例中,斷言寄存器106以一位元來標記矩陣中的零矩陣及非零矩陣。例如,在一些實施例中,斷言寄存器106將矩陣中的零矩陣標記為“0”,並且將矩陣中的非零矩陣標記為“1”,但本發明不限於此。在一些實施例中,斷言寄存器106可例如由第1圖的圖形處理器100執行一if-else條件式所產生。舉例來說,當稀疏矩陣檢測單元102中的矩陣符合一第一條件(例如矩陣為零矩陣),則斷言寄存器106將矩陣標記為“0”。當稀疏矩陣檢測單元102中的矩陣符合一第二條件(例如矩陣為非零矩陣),則斷言
寄存器106將矩陣標記為“1”。矩陣運算單元108接收矩陣運算指令,並且依據來自斷言寄存器106的標記結果,從寄存器文件104中讀取矩陣中的非零矩陣,並且對非零矩陣執行矩陣運算。
表1為稀疏矩陣檢測單元102、斷言寄存器106、及矩陣運算單元108對矩陣1~5的處理結果。
在一些實施例中,矩陣1~5係儲存在儲存器中。在第1圖的圖形處理器100收到矩陣運算指令(例如對矩陣1~5的矩陣運算)後,儲存器讀寫控制單元116從儲存器中讀取矩陣1~5,並且由稀疏矩陣檢測單元102將矩陣1~5儲存至寄存器文件104中。如表1
所示,由於矩陣1及矩陣4內所有的元素皆為0,因此稀疏矩陣檢測單元102判斷矩陣1及矩陣4為零矩陣,並且斷言寄存器106將矩陣1及矩陣4標記為“0”。由於矩陣1及矩陣4被標記為“0”,矩陣運算單元108並不會選取矩陣1及矩陣4做矩陣運算,並且直接在矩陣運算中直接忽略矩陣1及矩陣4。矩陣2、矩陣3及矩陣5均具有至少一非0的元素,因此稀疏矩陣檢測單元102判斷矩陣2、矩陣3及矩陣5為非零矩陣,斷言寄存器106將矩陣2、矩陣3及矩陣5標記為“1”。由於矩陣2、矩陣3及矩陣5被標記為“1”,矩陣運算單元108會選取矩陣2、矩陣3及矩陣5做矩陣運算。上述表1的矩陣1~5僅為例示,不作為本發明的限制。本領域的通常知識者了解應用於卷積神經網絡(CNN)的矩陣運算中的矩陣皆為巨型矩陣(其包含幾千至數萬個元素),因此矩陣1~5的例示係為了方便說明本發明圖形處理器100的稀疏矩陣檢測單元102、斷言寄存器106及矩陣運算單元108的處理動作。由於卷積神經網絡(CNN)具有稀疏性的特性,換句話說,在卷積神經網絡的矩陣運算中的矩陣有許多零矩陣,因此本發明的圖形處理器100的可透過稀疏矩陣檢測單元102、斷言寄存器106及矩陣運算單元108將矩陣運算中的零矩陣濾除,用以提高矩陣運算的效率。
在第1圖中,線程調度及指令分發單元110從多個線程中選擇一個待處理線程並取出對應指令發往整數運算單元112及浮點運算單元114。舉例來說,線程調度及指令分發單元110將待處理線程中的一浮點運算指令發送至浮點運算單元114,並且將一整
數運算指令及一矩陣運算指令發送至整數運算單元112。整數運算單元112依據整數運算指令執行對應的整數運算。浮點運算單元114依據浮點運算指令執行對應的浮點運算。在一些實施例中,整數運算單元112及浮點運算單元114係用於執行矩陣運算(例如矩陣乘法)之外的運算,例如位址運算和普通(非矩陣)乘法加法運算。在一些實施例中,線程調度及指令分發單元110可將整數運算指令及矩陣運算指令合併為一指令集並傳送予整數運算單元112。整數運算單元112從指令集中讀取整數運算指令,並且將指令集中的矩陣運算指令轉傳送予矩陣運算單元108。在一些實施例中,指令集的一第一位址區段為整數運算指令,指令集的一第二位址區段為矩陣運算指令。整數運算單元112僅讀取指令集中的第一位址區段的整數運算指令,並且將指令集轉傳送予矩陣運算單元108。矩陣運算單元108則讀取指令集中的第二位址區段的矩陣運算指令。
第2圖為本發明實施例之矩陣運算單元108的操作示意圖。如第2圖所示,矩陣運算單元108包括一控制單元200、複數運算子單元202,以及一累加單元204。矩陣運算單元108從整數運算單元112收到矩陣運算指令後,矩陣運算單元108的控制單元200從斷言寄存器106讀取矩陣(例如表1中的矩陣1~5)的標記結果(例如表1中斷言寄存器106的標記結果,亦即“0”或“1”),並且依據標記結果,從寄存器文件104中讀取矩陣中的非零矩陣(例如表1中的矩陣2、3、5)。接著,矩陣運算單元108的運算子單元202對矩陣中非零矩陣執行矩陣運算,並且忽略矩陣中的零矩陣。矩陣運算單
元108的累加單元204儲存運算子單元202在執行矩陣運算中的矩陣乘積值及一矩陣運算結果。矩陣乘積值係提供運算子單元202執行矩陣運算時使用。
舉例來說,運算子單元202將表1中的矩陣2與矩陣3進行矩陣乘法時,運算子單元202會將矩陣2的第一列與矩陣3的第一行的相乘結果(亦即矩陣2與矩陣3相乘時的子乘積值)儲存在累加單元204中。並且,在完成矩陣2及矩陣3的每一列及每一行的矩陣乘法運算後,累加單元204將矩陣2與矩陣3相乘時的所有子乘積值進行相加,而對應地得到一矩陣運算結果(亦即最後得到矩陣2乘以矩陣3所得到的一4x4矩陣的所有元素值)。在一些實施例中,矩陣運算單元108的控制單元200從累加單元204中讀取矩陣運算結果,並且將矩陣運算結果寫入寄存器文件104中,而完成一次完整的矩陣運算。
在一些實施例中,矩陣運算單元108的控制單元200係由第1圖的圖形處理器100執行一存取程式碼所產生,用以從斷言寄存器106中讀取矩陣的標記結果,並且將累加單元204所儲存的矩陣運算結果寫入寄存器文件104中。在一些實施例中,控制單元200可包括一控制器(未圖示)及一寄存器(未圖示)。該控制器可執行獨立的一存取程式碼,用以從斷言寄存器106中讀取矩陣的標記結果,並且將標記結果儲存在控制單元200的寄存器中。之後,寄存器文件104所儲存的矩陣運算結果係提供浮點運算單元114做後續的處理。在一些實施例中,本發明的圖形處理器100增加了矩陣運
算單元108及浮點運算單元114的配對比例,例如在運算過程中,浮點運算單元114有較大機會讀取寄存器文件104中所儲存矩陣運算單元108的矩陣運算結果,並且對矩陣運算結果做更深入的非矩陣計算,讓本發明充分利用了浮點運算單元114強大的計算能力。在一些實施例中,矩陣運算單元108的運算子單元202及累加單元204為第1圖的圖形處理器100執行一矩陣乘法演算法所產生,用以得到矩陣相乘後的矩陣運算結果。在一些實施例中,運算子單元202係以8個運算子單元做為例示,但本發明不作為限制。
本發明亦揭露了適用於一圖形處理器(GPU)的一種矩陣運算的加速方法。第3圖為本發明實施例之圖形處理器的加速方法的流程圖。本發明的加速方法包括:接收一矩陣運算指令(步驟S300);依據矩陣運算指令,從一儲存器中讀取複數矩陣(步驟S302);判斷矩陣的每一者是否為一零矩陣或一非零矩陣(步驟S304)。在步驟S304中,當矩陣為非零矩陣,則繼續執行步驟S306。在步驟S306中,本發明係對非零矩陣進行標記。接著,在步驟S308中,本發明讀取矩陣中的非零矩陣,並且對非零矩陣執行矩陣運算。在步驟S304中,當矩陣為零矩陣,則繼續執行步驟S310。在步驟S310中,本發明係對零矩陣進行標記。接著,在步驟S312中,本發明直接忽略矩陣中的零矩陣,並且不對零矩陣執行矩陣運算。
在一些實施例中,步驟S300係由第1圖的圖形處理器100的線程調度及指令分發單元110所執行。更詳細來說,當線程調度及指令分發單元110接收來自另一處理器(例如中央處理器CPU)
的矩陣運算指令時,線程調度及指令分發單元110將矩陣運算指令與整數運算指令結合,並同時傳送予整數運算單元112。整數運算單元112將矩陣運算指令轉傳送予矩陣運算單元108。步驟S302係由第1圖的圖形處理器100的稀疏矩陣檢測單元102所執行。更詳細來說,在圖形處理器100接收到矩陣運算指令時,儲存器讀寫控制單元116從一儲存器中讀取矩陣運算指令中所需的複數矩陣,並且將矩陣傳送予稀疏矩陣檢測單元102。接著,步驟S304係由第1圖的圖形處理器100的稀疏矩陣檢測單元102所執行。當稀疏矩陣檢測單元102判斷矩陣為非零矩陣,則由第1圖的圖形處理器100的斷言寄存器106執行步驟S306,並且由矩陣運算單元108執行步驟S308。更詳細來說,矩陣運算單元108的控制單元200依據斷言寄存器106的標記結果,選取矩陣中的非零矩陣,並且將非零矩陣輸入至運算子單元202中,使得運算子單元202及累加單元204可針對非零矩陣做矩陣運算。當稀疏矩陣檢測單元102判斷矩陣為零矩陣,則由第1圖的圖形處理器100的斷言寄存器106執行步驟S310,並且由矩陣運算單元108執行步驟S312。更詳細地說,矩陣運算單元108的控制單元200依據斷言寄存器106的標記結果,忽略矩陣中的零矩陣,不將零矩陣輸入至運算子單元202做矩陣運算。
本發明所揭露的圖形處理器100及圖形處理器的加速方法係增加了圖形處理器100的矩陣運算單元108的計算能力,並且減少了矩陣運算單元108與寄存器文件104之間的資料存取次數,亦增加了矩陣處理單元108對稀疏矩陣的處理能力,用以提升
效能並降低了功耗。本發明的圖形處理器100及圖形處理器的加速方法充分考慮了卷積神經網絡(CNN)的矩陣運算過程中矩陣的稀疏性及非線性,增加了如第1圖的稀疏矩陣檢測單元102及第2圖矩陣運算單元108中的控制單元200,由於忽略了零矩陣的矩陣運算,使得圖形處理器100在矩陣算的過程中減少了20%的計算量,進而使得圖形處理器100的加速效率更高並且功耗更低。
總而言之,本發明的圖形處理器的優點在於:一、圖形處理器的單一核心(core)中加入了運算效率更高的矩陣運算單元(例如矩陣運算單元108);二、為了減少寄存器文件104的讀寫壓力,本發明在矩陣運算單元108中增加了累加單元用於儲存矩陣運算過程中的中間數據;三、為了充分利用卷積神經網絡(CNN)的稀疏性,本發明增加了稀疏矩陣檢測單元102,並利用已有的斷言寄存器106儲存相關訊息,而矩陣運算單元108中的控制單元200會根據斷言寄存器106所儲存的相關訊息直接跳過對零矩陣的矩陣計算。
雖然本發明的實施例如上述所描述,我們應該明白上述所呈現的只是範例,而不是限制。依據本實施例上述示範實施例的許多改變是可以在沒有違反發明精神及範圍下被執行。因此,本發明的廣度及範圍不該被上述所描述的實施例所限制。更確切地說,本發明的範圍應該要以以下的申請專利範圍及其相等物來定義。
儘管上述發明已被一或多個相關的執行來圖例說明及描繪,等效的變更及修改將被依據上述規格及附圖且熟悉這領域的其
他人所想到。此外,儘管本發明的一特別特徵已被相關的多個執行之一所示範,上述特徵可能由一或多個其他特徵所結合,以致於可能有需求及有助於任何已知或特別的應用。
本說明書所使用的專業術語只是為了描述特別實施例的目的,並不打算用來作為本發明的限制。除非上下文有明確指出不同,如本處所使用的單數型,一、該及上述的意思係也包含複數型。再者,用詞「包括」,「包含」,「(具、備)有」,「設有」,或其變化型不是被用來作為詳細敘述,就是作為申請專利範圍。而上述用詞意思是包含,且在某種程度上意思是等同於用詞「包括」。
除非有不同的定義,所有本文所使用的用詞(包含技術或科學用詞)是可以被屬於上述發明的技術中擁有一般技術的人士做一般地了解。我們應該更加了解到上述用詞,如被定義在眾所使用的字典內的用詞,在相關技術的上下文中應該被解釋為相同的意思。除非有明確地在本文中定義,上述用詞並不會被解釋成理想化或過度正式的意思。
100:圖形處理器
102:稀疏矩陣檢測單元
104:寄存器文件
106:斷言寄存器
108:矩陣運算單元
110:線程調度及指令分發單元
112:整數運算單元
114:浮點運算單元
116:儲存器讀寫控制單元
Claims (11)
- 一種圖形處理器(Graphics Processing Unit:GPU),包括: 一稀疏矩陣檢測單元,讀取一儲存器中的複數矩陣,判斷該等矩陣的每一者是否為一零矩陣或一非零矩陣,並輸出一判斷結果; 一寄存器文件(register file),儲存來自該稀疏矩陣檢測單元的該等矩陣; 一斷言寄存器,依據該判斷結果,對該等矩陣進行標記,並輸出一標記結果; 一矩陣運算單元,接收一矩陣運算指令,以及依據該標記結果,從該寄存器文件中讀取該等矩陣中的該等非零矩陣,並且對該等非零矩陣執行矩陣運算。
- 如請求項1所述之圖形處理器,更包括: 一線程調度及指令分發單元,發送一整數運算指令及該矩陣運算指令; 一整數運算單元,接收該整數運算指令及該矩陣運算指令;依據該整數運算指令執行一整數運算,並且將該矩陣運算指令轉傳送予該矩陣運算單元。
- 如請求項1所述之圖形處理器,其中,該矩陣運算單元包括: 一控制單元,從該斷言寄存器讀取該等矩陣的該標記結果,並且依據該標記結果,從該寄存器文件中讀取該等矩陣中的該等非零矩陣; 複數運算子單元,對該等非零矩陣執行矩陣運算; 一累加單元,儲存該等運算子單元在執行矩陣運算中的矩陣子乘積值及一矩陣運算結果;其中,該矩陣乘積值係供該等運算子單元執行矩陣運算時使用。
- 如請求項1所述之圖形處理器,其中,該矩陣運算單元依據該標記結果,從該寄存器文件中忽略該等矩陣中的該等零矩陣。
- 如請求項1所述之圖形處理器,其中,當完成矩陣運算時,該控制單元從該累加單元中讀取該矩陣運算結果,並且將該矩陣運算結果寫入該寄存器文件中。
- 如請求項1所述之圖形處理器,其中,該斷言寄存器係以一位元來標記該等矩陣中的該等零矩陣及該等非零矩陣。
- 如請求項6所述之圖形處理器,其中,該斷言寄存器將該等矩陣中的該等零矩陣標記為“0”,並且將該等矩陣中的該等非零矩陣標記為“1”。
- 一種矩陣運算的加速方法,適用於一圖形處理器,包括: 接收一矩陣運算指令; 從一儲存器中讀取複數矩陣,並且判斷該等矩陣的每一者是否為一零矩陣或一非零矩陣,並輸出一判斷結果; 依據該判斷結果,對該等矩陣進行標記,並輸出一標記結果; 依據該標記結果,讀取該等矩陣中的該等非零矩陣,並且對該等非零矩陣執行矩陣運算。
- 如請求項8所述之加速方法,更包括: 依據該標記結果,忽略該等矩陣中的該等零矩陣。
- 如請求項8所述之加速方法,其中,依據該判斷結果,對該等矩陣進行標記,包括: 以一位元來標記該等矩陣中的該等零矩陣及該等非零矩陣。
- 如請求項10所述之加速方法,其中,以一位元來標記該等矩陣中的該等零矩陣及該等非零矩陣包括: 將該等矩陣中的該等零矩陣標記為“0”,並且將該等矩陣中的該等非零矩陣標記為“1”。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010640113.3A CN111798363B (zh) | 2020-07-06 | 2020-07-06 | 图形处理器 |
CN202010640113.3 | 2020-07-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202203146A TW202203146A (zh) | 2022-01-16 |
TWI775151B true TWI775151B (zh) | 2022-08-21 |
Family
ID=72811287
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109132269A TWI775151B (zh) | 2020-07-06 | 2020-09-18 | 圖形處理器及其矩陣運算的加速方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11409523B2 (zh) |
CN (1) | CN111798363B (zh) |
TW (1) | TWI775151B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112732222B (zh) * | 2021-01-08 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 一种稀疏矩阵加速计算方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201235865A (en) * | 2010-12-06 | 2012-09-01 | Ibm | Data structure for tiling and packetizing a sparse matrix |
US20180004709A1 (en) * | 2016-07-01 | 2018-01-04 | Palo Alto Research Center Incorporated | System and method for gpu maximum register count optimization applied to general matrix-matrix multiplication |
CN107589957A (zh) * | 2016-07-08 | 2018-01-16 | 德克萨斯仪器股份有限公司 | 具有双矢量和成双的单矢量操作模式的流参考寄存器 |
CN109144568A (zh) * | 2017-06-28 | 2019-01-04 | 德克萨斯仪器股份有限公司 | 将有效位通道作为矢量断言暴露于cpu |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5267185A (en) * | 1989-04-14 | 1993-11-30 | Sharp Kabushiki Kaisha | Apparatus for calculating matrices |
US9317482B2 (en) * | 2012-10-14 | 2016-04-19 | Microsoft Technology Licensing, Llc | Universal FPGA/ASIC matrix-vector multiplication architecture |
CN103281271B (zh) * | 2013-05-29 | 2016-08-10 | 中国空间技术研究院 | 在中继系统中通过信道量化进行物理层网络编码的方法 |
US9396164B2 (en) * | 2013-10-21 | 2016-07-19 | International Business Machines Corporation | Sparsity-driven matrix representation to optimize operational and storage efficiency |
CN104951442B (zh) * | 2014-03-24 | 2018-09-07 | 华为技术有限公司 | 一种确定结果向量的方法和装置 |
CN104636273B (zh) * | 2015-02-28 | 2017-07-25 | 中国科学技术大学 | 一种带多级Cache的SIMD众核处理器上的稀疏矩阵存储方法 |
US10565207B2 (en) * | 2016-04-12 | 2020-02-18 | Hsilin Huang | Method, system and program product for mask-based compression of a sparse matrix |
US10146738B2 (en) * | 2016-12-31 | 2018-12-04 | Intel Corporation | Hardware accelerator architecture for processing very-sparse and hyper-sparse matrix data |
WO2018171043A1 (zh) * | 2017-03-24 | 2018-09-27 | 中兴通讯股份有限公司 | 一种准循环低密度奇偶校验编码处理方法及装置 |
CN108664447B (zh) * | 2017-03-31 | 2022-05-17 | 华为技术有限公司 | 一种矩阵与矢量的乘法运算方法及装置 |
US10482156B2 (en) * | 2017-12-29 | 2019-11-19 | Facebook, Inc. | Sparsity-aware hardware accelerators |
JP2019148969A (ja) * | 2018-02-27 | 2019-09-05 | 富士通株式会社 | 行列演算装置、行列演算方法および行列演算プログラム |
CN208386519U (zh) * | 2018-07-09 | 2019-01-15 | 建荣半导体(深圳)有限公司 | Qc-ldpc解码器、存储设备及通信模组 |
CN109740116A (zh) * | 2019-01-08 | 2019-05-10 | 郑州云海信息技术有限公司 | 一种实现稀疏矩阵乘法运算的电路及fpga板 |
US11188618B2 (en) * | 2019-09-05 | 2021-11-30 | Intel Corporation | Sparse matrix multiplication acceleration mechanism |
US11586601B2 (en) * | 2020-02-05 | 2023-02-21 | Alibaba Group Holding Limited | Apparatus and method for representation of a sparse matrix in a neural network |
US11429394B2 (en) * | 2020-08-19 | 2022-08-30 | Meta Platforms Technologies, Llc | Efficient multiply-accumulation based on sparse matrix |
-
2020
- 2020-07-06 CN CN202010640113.3A patent/CN111798363B/zh active Active
- 2020-09-18 TW TW109132269A patent/TWI775151B/zh active
-
2021
- 2021-01-04 US US17/140,849 patent/US11409523B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201235865A (en) * | 2010-12-06 | 2012-09-01 | Ibm | Data structure for tiling and packetizing a sparse matrix |
US20180004709A1 (en) * | 2016-07-01 | 2018-01-04 | Palo Alto Research Center Incorporated | System and method for gpu maximum register count optimization applied to general matrix-matrix multiplication |
CN107589957A (zh) * | 2016-07-08 | 2018-01-16 | 德克萨斯仪器股份有限公司 | 具有双矢量和成双的单矢量操作模式的流参考寄存器 |
CN109144568A (zh) * | 2017-06-28 | 2019-01-04 | 德克萨斯仪器股份有限公司 | 将有效位通道作为矢量断言暴露于cpu |
Also Published As
Publication number | Publication date |
---|---|
TW202203146A (zh) | 2022-01-16 |
US20220004385A1 (en) | 2022-01-06 |
CN111798363B (zh) | 2024-06-04 |
CN111798363A (zh) | 2020-10-20 |
US11409523B2 (en) | 2022-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10402468B2 (en) | Processing device for performing convolution operations | |
US11775313B2 (en) | Hardware accelerator for convolutional neural networks and method of operation thereof | |
US11989640B2 (en) | Scalable neural network processing engine | |
WO2019218896A1 (zh) | 计算方法以及相关产品 | |
CN109543832B (zh) | 一种计算装置及板卡 | |
US11442734B2 (en) | Packed data element predication processors, methods, systems, and instructions | |
US10153012B2 (en) | Multiple register memory access instructions, processors, methods, and systems | |
Yang et al. | An efficient parallel algorithm for longest common subsequence problem on gpus | |
WO2017185393A1 (zh) | 一种用于执行向量内积运算的装置和方法 | |
US11934824B2 (en) | Methods for performing processing-in-memory operations, and related memory devices and systems | |
US20210166156A1 (en) | Data processing system and data processing method | |
US20230081023A1 (en) | Asynchronous task execution for neural processor circuit | |
US9032099B1 (en) | Writeback mechanisms for improving far memory utilization in multi-level memory architectures | |
TWI775151B (zh) | 圖形處理器及其矩陣運算的加速方法 | |
WO2017185419A1 (zh) | 一种用于执行向量最大值最小值运算的装置和方法 | |
Jiang et al. | GLARE: Accelerating Sparse DNN Inference Kernels with Global Memory Access Reduction | |
US20220036163A1 (en) | Chained neural engine write-back architecture | |
US20230394276A1 (en) | Subtask storage for streaming convolutions in neural network processor | |
US20230169316A1 (en) | Indexing Operations In Neural Network Processor | |
CN114661350A (zh) | 用于并发地将多个pmon计数存储在单个寄存器中的设备、系统和方法 | |
CN111367567B (zh) | 一种神经网络计算装置和方法 | |
Sun et al. | Unicnn: A pipelined accelerator towards uniformed computing for cnns | |
US20240045829A1 (en) | Multi-dimensional network sorted array merging | |
US11669473B2 (en) | Allreduce enhanced direct memory access functionality | |
US12001262B2 (en) | Systems and methods for performing in-flight computations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent |