TWI779475B - 圖形處理器及其加速方法 - Google Patents

圖形處理器及其加速方法 Download PDF

Info

Publication number
TWI779475B
TWI779475B TW110103971A TW110103971A TWI779475B TW I779475 B TWI779475 B TW I779475B TW 110103971 A TW110103971 A TW 110103971A TW 110103971 A TW110103971 A TW 110103971A TW I779475 B TWI779475 B TW I779475B
Authority
TW
Taiwan
Prior art keywords
matrix
original
data
im2col
module
Prior art date
Application number
TW110103971A
Other languages
English (en)
Other versions
TW202213127A (zh
Inventor
張煒
顧德明
Original Assignee
中國商格蘭菲智能科技有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 中國商格蘭菲智能科技有限公司 filed Critical 中國商格蘭菲智能科技有限公司
Publication of TW202213127A publication Critical patent/TW202213127A/zh
Application granted granted Critical
Publication of TWI779475B publication Critical patent/TWI779475B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/454Vector or matrix data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data

Landscapes

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

Abstract

一種圖形處理器,包括一紋素單元、一執行單元。紋素單元包括一讀取模塊。執行單元包括一im2col模塊,用以執行一im2col演算法,依據一卷積核的大小,將一原始矩陣進行擴展,而得到一擴展矩陣。執行單元將擴展矩陣與卷積核相乘,而到一特徵矩陣。讀取模塊依據擴展矩陣的座標,計算出該特徵矩陣的每一元素的一特徵座標,及依據特徵座標、卷積核、步伐值及填充值,得到原始矩陣的每一元素的一原始座標。讀取模塊讀取原始矩陣的每一元素的原始座標所涵蓋的至少一該等存儲區塊,並且將至少一該等存儲區塊中對應於原始座標的數據傳送予im2col模塊。

Description

圖形處理器及其加速方法
本發明係有關於圖形處理器,特別有關於改善im2col計算效率的圖形處理器及其加速方法。
隨著人工智能的發展,用圖形處理器(GPU)對神經網絡進行加速成為一個重要方向。為了對神經網絡算法進行硬件加速,各芯片廠不斷地提升運算模塊的性能、減少數據的內存訪問,和設計優化算法,而使得神經網絡推理性能愈來愈快。通用矩陣乘法(GEMM)是一個被廣泛應用的卷積加速方法。在執行GEMM之前,需要準備輸入數據,而準備輸入數據的過程即稱為圖像塊重排為矩陣列(im2col)。
傳統的圖形處理器執行GEMM過程中,首先須先從存儲器中讀取一矩陣,將對矩陣執行im2col操作,並且將im2col後的結果存入存儲器中。接著,圖形處理器以im2col後的結果作為GEMM的輸入,用以執行矩陣相乘的操作。換句話說,傳統的圖形處理器在執行GEMM過程中,需要讀取存儲器(或內存)兩次,增加了對帶寬的需求。傳統的圖形處理器更需要執行兩次的計算才可得到最終矩陣相乘結果,計算推理的時間變長。
依據本發明實施例之圖形處理器,用以加速一卷積運算,包括一紋素(texel)單元及一執行單元。紋素單元包括一讀取模塊,執行單元包括一圖像塊重排為矩陣列(im2col)模塊。讀取模塊從一存儲器中讀取用於卷積運算的一原始矩陣。存儲器包括彼此相鄰且大小相同的複數存儲區塊,原始矩陣係儲存於至少一該等存儲區塊中。圖像塊重排為矩陣列(im2col)模塊,用以執行一im2col演算法,依據一卷積核(kernal)的大小,將原始矩陣進行擴展,而得到一擴展矩陣。執行單元將該擴展矩陣內的每一元素分別定義為一擴展座標。執行單元將該擴展矩陣與卷積核相乘,而得到對應於原始矩陣的一特徵(feature map)矩陣。讀取模塊接收來自執行單元的擴展座標,並且依據擴展座標,計算出特徵矩陣的每一元素的一特徵座標。讀取模塊依據該特徵座標、該卷積核的大小、步伐值(stride)及填充值(padding),得到原始矩陣的每一元素的一原始座標。讀取模塊讀取原始矩陣的每一元素的原始座標所涵蓋的至少一該等存儲區塊,並且將至少一該等存儲區塊中對應於該原始座標的數據傳送予im2col模塊。
如上所述之圖形處理器,其中,執行單元更包括一寄存器文件(register file),用以在卷積運算中儲存來自im2col模塊的原始矩陣內的數據、擴展矩陣內的數據,及特徵矩陣內的數據。
如上所述之圖形處理器,其中,執行單元更包括一執行模塊,用以依據寄存器文件中的原始矩陣內的數據、擴展矩陣內的數據,及特徵矩陣內的數據,執行該卷積運算。
如上所述之圖形處理器,其中,紋素單元更包括一L1快取(cache);在該卷積運算中,L1快取從該存儲器中讀取並儲存用於該卷積運算的原始矩陣,用以供讀取模塊的存取。
如上所述之圖形處理器,其中,該圖形處理器更包括一儲存單元,用以將該執行單元所執行卷積運算的一結果存入該存儲器中。
如上所述之圖形處理器,其中,存儲器所包括每一該等存儲區塊的大小為4*8的矩陣大小。
如上所述之圖形處理器,其中,該im2col模塊包括:一返回緩衝器(return buffer)、一數據擴充器、一數據多工器(data MUX),及一輸出合併緩衝器(output merge buffer)。返回緩衝器用以接收並存放來自紋素單元的原始矩陣或至少一該等存儲區塊中對應於原始座標的數據。數據擴充器用以將原始矩陣以im2col的方式進行擴展,而得到擴展矩陣。數據多工器依據執行單元從擴展矩陣中挑選在卷積運算中所需的數據。輸出合併緩衝器用以將數據多工器從擴展矩陣中挑選的數據進行合併,並且輸出至一寄存器文件。
如上所述之圖形處理器,其中,卷積核的大小為3*3的矩陣大小,步伐值等於1,及填充值等於0。
依據本發明實施例之一種加速卷積運算的方法,包括:從一存儲器中得到一原始矩陣;其中,存儲器包括彼此相鄰且大小相同的複數存儲區塊,原始矩陣係儲存於至少一該等存儲區塊中;執行一圖像塊重排為矩陣列(im2col)演算法,依據一卷積核(kernal)的大小,將原始矩陣進行擴展,而得到一擴展矩陣;其中,該擴展矩陣內的每一元素分別具有一擴展座標;將擴展矩陣與卷積核相乘,而到對應於原始矩陣的一特徵(feature map)矩陣;依據擴展座標,計算出特徵矩陣的每一元素的一特徵座標。依據特徵座標、卷積核的大小、步伐值及填充值,得到原始矩陣的每一元素的一原始座標;讀取原始矩陣的每一元素的原始座標所涵蓋的至少一該等存儲區塊,並且將至少一該等存儲區塊中對應於原始座標的數據輸出。
本發明係參照所附圖式進行描述,其中遍及圖式上的相同參考數字標示了相似或相同的元件。上述圖式並沒有依照實際比例大小描繪,其僅僅提供對本發明的說明。一些發明的型態描述於下方作為圖解示範應用的參考。這意味著許多特殊的細節,關係及方法被闡述來對這個發明提供完整的了解。無論如何,擁有相關領域通常知識的人將認識到若沒有一個或更多的特殊細節或用其他方法,此發明仍然可以被實現。以其他例子來說,眾所皆知的結構或操作並沒有詳細列出以避免對這發明的混淆。本發明並沒有被闡述的行為或事件順序所侷限,如有些行為可能發生在不同的順序亦或同時發生在其他行為或事件之下。此外,並非所有闡述的行為或事件都需要被執行在與現有發明相同的方法之中。
第1圖為本發明實施例之圖形處理器的示意圖。如第1圖所示,圖形處理器100包括一紋素(texel)單元102、一執行單元104、一儲存單元108。紋素單元102包括一讀取(LD)單元110、一L1快取(cache)112。執行單元104包括一圖像塊重排為矩陣列(im2col)模塊114、一寄存器文件(register file:RF)116,及一執行模塊(EU)118。在一些實施例中,圖形處理器100係設置在一電子裝置中,電子裝置可例如一筆記型電腦、一桌上型電腦、一智慧行動裝置、一平板電腦,以及一工作站伺服器等。電子裝置可包括另一處理器(例如一中央處理器(CPU))(未圖示),用以依據使用者的操作對應地傳輸指令(例如矩陣運算指令)予圖形處理器100。
當圖形處理器100接收到中央處理器(CPU)的一通用矩陣乘法(GEMM)指令時,紋素單元102內的讀取單元110讀取用於卷積運算(例如矩陣乘法運算)的一原始矩陣。在一些實施例中,原始矩陣可代表輸入於一卷積神經網絡(CNN)的一輸入圖像。卷積神經網絡係用以對輸入圖像進行式圖像辨識的操作。在一些實施例中,原始矩陣係以一特殊配置的方式儲存於一存儲器106之中。
第2圖為本發明實施例之第1圖存儲器106的數據配置示意圖。如第2圖所示,存儲器106包括彼此相鄰且大小相同的複數存儲區塊。在一些實施例中,每一存儲區塊的大小為4*8的矩陣大小。換句話說。每一存儲區塊係可儲存32個位元的數據。每一存儲區塊沿著X方向及Y方向排列延伸,並且定義存儲器106內最左上角的區塊(例如區塊①)為整個存儲器106的區塊配置的原點座標(0,0)。舉例來說,假設一圖像的大小為8*16位元,當圖像對齊於原點座標儲存於存儲器106內時,圖像係儲存於區塊①、區塊②、區塊③及區塊④之中。當圖像並未對齊於原點座標(例如圖像的左上角端點對齊於座標(4,2)),則圖像可儲存涵蓋於區塊①~⑨之中。
回到第1圖,執行單元104內的圖像塊重排為矩陣列(im2col)模塊114接收來自讀取單元110的原始矩陣(或原始圖像)。im2col模塊114執行一im2col演算法,依據卷積運算(或矩陣乘法運算)中卷積核(kernel)的大小,將原始矩陣進行擴展,而得到一擴展矩陣。第3A-3D圖為本發明實施例第1圖im2col模塊114執行im2col演算法的示意圖。如第3圖所示,讀取單元110讀取來自存儲器106的一矩陣300。矩陣300為4*4的矩陣,具有矩陣元素0~15。當im2col模塊114接收來自讀取單元110的矩陣300時,im2col模塊114對矩陣300對矩陣300執行im2col的操作。首先,如第3A圖所示,im2col模塊114依據卷積核的大小(例如卷積核為3*3的矩陣,但本發明不限於此),將矩陣300內的矩陣元素0~2、4~6、8~10轉換為9*1的矩陣302。
接著,在第3B圖中,im2col模塊114將矩陣300內的矩陣元素1~3、5~7、9~11轉換為9*1的矩陣304,並且將矩陣304排列於矩陣302的右側。接著,如第3C圖所示,im2col模塊114將矩陣300內的矩陣元素4~6、8~10、12~14轉換為9*1的矩陣306,並且將矩陣306排列於矩陣304的右側。最後,如第3D圖所示,im2col模塊114將矩陣300內的矩陣元素5~7、9~11、13~15轉換為9*1的矩陣308,並且將矩陣308排列於矩陣306的右側,而得到矩陣310。換句話說,矩陣310(包括矩陣302、304、306及308)即為擴展矩陣。im2col模塊114將原始矩陣(例如矩陣300)轉換為擴展矩陣(例如矩陣310),係為了後續矩陣乘法的便利性。
在一些實施例中,如第3D圖所示,執行單元104將擴展矩陣(例如矩陣310)內的每一元素分別定義為一擴展座標。舉例來說,執行單元104將矩陣302內的第1個矩陣元素的擴展座標定義為(0,0),將矩陣302內的第2個矩陣元素的擴展座標定義為(0,1),並且將矩陣304內的第1個矩陣元素的擴展座標定義為(1,0),但本發明不限於此。在一些實施例中,第1圖的im2col模塊114將擴展矩陣內的每一元素的擴展座標回傳予讀取單元110,使得讀取單元110可依據擴展矩陣(例如矩陣310)的擴展座標來回推原始矩陣(例如矩陣300)在存儲器106內的原始座標。
第4圖為本發明實施例之第1圖im2col模塊114的擴展矩陣示意圖。如第4圖所示,圖形處理器100的im2col模塊114在一矩陣(或一圖像)中取出矩陣400及矩陣404,其中矩陣400及矩陣404都為(H+2)*(W+2)的矩陣,其中(H+2)為矩陣列數,(W+2)為矩陣行數。在一些實施例中,矩陣400及矩陣404可表示圖像中的2個不同特徵。舉例來說,假設圖像中具有一隻狗及一隻貓的特徵,則矩陣400可代表為狗的特徵,以及矩陣404可代表為貓的特徵。卷積核402及卷積核406皆為Kh*Kw的矩陣,其中Kh為卷積核的列數,Kw為卷積核的行數。當im2col模塊114以卷積核402、卷積核406對矩陣400及矩陣404進行im2col擴展時,可得到第4圖的擴展矩陣410、矩陣420。擴展矩陣410及擴展矩陣420的列數為C*Kh*Kw。其中,C為擴展矩陣410的通道(channel)數,Kh為卷積核402、406的列數,Kw為卷積核402、406的行數。
在一些實施例中,圖形處理器100的im2col模塊114以卷積核402對矩陣400執行im2col操作,而得到擴展矩陣410中通道C0內的矩陣。圖形處理器100的im2col模塊114以卷積核406對矩陣400執行im2col操作,而得到擴展矩陣410中通道C1內的矩陣。舉例來說,若矩陣400可代表為狗的特徵,則以卷積核402對矩陣400進行擴展可代表將狗的鼻子特徵取出,以卷積核406對矩陣400進行擴展可代表將狗的尾巴特徵取出。簡單來說,矩陣410中的通道C0表示狗的鼻子特徵,矩陣410中的通道C1表示狗的尾巴特徵。
在一些實施例中,圖形處理器100的im2col模塊114以卷積核402對矩陣404執行im2col操作,而得到擴展矩陣420中通道C0內的矩陣。圖形處理器100的im2col模塊114以卷積核406對矩陣404執行im2col操作,而得到擴展矩陣420中通道C1內的矩陣。舉例來說,若矩陣404可代表為貓的特徵,則以卷積核402對矩陣404進行擴展可代表將貓的鼻子特徵取出,以卷積核406對矩陣404進行擴展可代表將貓的尾巴特徵取出。簡單來說,矩陣420中的通道C0表示貓的鼻子特徵,矩陣420中的通道C1表示貓的尾巴特徵。在一些實施例中,通道數C可代表矩陣400、矩陣404所各別具有的子特徵數目。在第4圖的例示中,通道數C為2,亦即通道C0、通道C1,但本發明不限於此。
擴展矩陣410及擴展矩陣420的行數分別為H*W。由於在第4圖中圖形處理器100的im2col模塊114係對矩陣400及矩陣404(亦即2個特徵)進行擴展,因此所得到的擴展矩陣(擴展矩陣410及擴展矩陣420)的總行數為N*H*W,其中N等於2,但本發明不限於此。在一些實施例中,N亦稱為批次(batch)數目,批次數目即代表所需要識別圖像的數目,例如需要識別第4圖的矩陣400及矩陣404。總而言之,擴展矩陣(例如矩陣410、矩陣420)的大小係取決於原始矩陣(例如矩陣400、矩陣404)的大小及數目,以及卷積核(例如卷積核402、卷積核406)的大小及數目。
第5A圖為本發明實施例之原始矩陣示意圖。第5B圖為本發明實施例之第5A圖原始矩陣的擴展矩陣示意圖。如第5A、5B圖所示,圖形處理器100的im2col模塊114從原始矩陣500中取出矩陣502,並且執行im2col演算法,以3*3的卷積核對矩陣502進行擴展,而得到擴展矩陣504。換句話說,擴展矩陣504為矩陣502的擴展矩陣。執行單元104定義擴展矩陣504內每一元素的一擴展座標。舉例來說,執行單元104將擴展矩陣504中第1列第1行元素0的擴展座標定義為(0,0),將第5列第3行元素21的擴展座標定義為(3,5),並且將第7列第11行元素56的擴展座標定義為(11,7)。
接著,im2col模塊114將擴展矩陣504中每一元素的擴展座標傳送予第1圖紋素單元102內的讀取單元110(如第1圖讀取單元110與im2col模塊114之間的虛線箭頭所示),使得讀取單元110可依據擴展矩陣(例如矩陣504)的擴展座標來回推原始矩陣(例如矩陣502)在存儲器106內的原始座標。讀取單元110接收來自執行單元104的擴展座標(例如座標(X,Y)),並且首先以算式一計算擴展矩陣504的每一元素係坐落在擴展矩陣504的哪一通道中(例如第4圖的通道數C)。
Figure 02_image001
算式一
C in為擴展矩陣的通道。Kw為卷積核的行數,Kh為卷積核的列數。C in為將
Figure 02_image003
向下取整後所得到的值。在第5B圖的實施例中,Kw與Kh皆為3。舉例來說,若讀取單元110要計算第5B圖擴展矩陣504中的第5列第3行元素21係落在哪一通道中,則將Y=5、Kw=3、Kh=3代入算式一中,可得到C in=0。換句話說,讀取單元110可得知第5列第3行元素21係落在通道0之中(由於im2col模塊114僅以一個3*3的卷積核對矩陣502進行擴展,因此擴展矩陣504具有一個通道)。
接著,讀取單元110計算需要從擴展矩陣504讀取多個通道才可構成一個自定義大小的矩陣(例如32*32的矩陣或16*16的矩陣)。在第5B圖的實施例中,由於擴展矩陣只有一個通道,因此讀取單元110直接讀取來自im2col模塊114的擴展矩陣504。
再者,讀取單元110以算式二計算擴展矩陣504具有幾個批次(batch),或稱批次索引(batch index)。在第5B圖的實施例中,
Figure 02_image005
算式二
X為擴展矩陣504的每一元素的X座標,H等於矩陣502的列數減2,W等於矩陣502的行數減2。批次索引為對
Figure 02_image007
向下取整後所得到的值。舉例來說,讀取單元110要計算擴展矩陣504中的第5列第3行元素21位在擴展矩陣504中的哪個批次,則將X=3、H=4、W=8代入算式二中,而得知擴展矩陣504中的第5列第3行元素21位在一批次0。在第5B圖的實施例中,矩陣504只有一個批次,但本發明不限於此。
第5C圖為本發明實施例之卷積核及特徵矩陣示意圖。如第5圖所示,執行單元104係將用於將第5A圖的矩陣502擴展的3*3卷積核轉換為一1*9的卷積核506。執行單元104將第5B圖的擴展矩陣504與第5C圖的卷積核506做矩陣相乘,而得到一1*32的特徵矩陣508。接著,讀取單元110將特徵矩陣508內第1~8個元素分為第一組、第9~16個元素分為第二組、第17~24個元素分為第三組,並且第25~32個元素分為第四組。執行單元104將上述第一組、第二組、第三組及第四組的元素依據組合,而將1*32的特徵矩陣508轉換成4*8的特徵矩陣510。
在一些實施例中,讀取單元110接著依據擴展矩陣504的每一元素的擴展座標計算4*8的特徵矩陣510在由複數個4*8區塊所組成的張量(tensor)空間中的索引,或稱為磚索引(tile index)。讀取單元110係以算式三求得磚索引的數值。 Tile index=
Figure 02_image009
算式三
X為擴展矩陣504的每一元素的X座標。%表示為取餘數。
Figure 02_image011
代表在張量空間中向右移3格(例如第2圖的X方向)的4*8區塊後所得到的X座標。
Figure 02_image013
代表在張量空間中向下移2格(例如第2圖的Y方向)的4*8區塊後所得到的Y座標。在第5B圖的實施例中,由於擴展矩陣504內的第0列第0行的元素0、第5列第3行的元素21及第7列第11行的元素56的擴展座標的X座標皆小於32,因此第0列第0行的元素0、第5列第3行的元素21、及第7列第11行的元素56所分別對應的第5C圖4*8的特徵矩陣510內的元素(例如元素A(對應擴展矩陣504的元素0)、元素B(對應擴展矩陣504的元素21)、元素C(對應擴展矩陣504的元素56))的磚索引之數值皆為0。
接著,讀取單元110以算式四求得第5C圖的4*8的特徵矩陣510在整個張量空間(由複數4*8區塊所組成的空間)中的起始座標(w_,h_)。起始座標(w_,h_)為特徵矩陣510中所有元素的特徵座標的一者。
Figure 02_image015
Figure 02_image017
算式四
Figure 02_image019
表示從磚索引的數值座標處向左移3格的4*8區塊後所得到的X座標。在第5B、5C圖的實施例中,由於磚索引為0,則可得到特徵矩陣510的在張量空間中的起始座標為(w_,h_)=(0,0)。
讀取單元110依據第5C圖特徵矩陣510的起始座標(w_,h_),利用算式五,回推第5A圖矩陣502在存儲器106中的起始座標(w_offset,h_offset)。
Figure 02_image021
Figure 02_image023
算式五
其中,stride_w、stride_h為卷積運算的步伐值(stride)。pad_w、pad_h為卷積運算的填充值(padding)。在第5A、5B、5C圖的實施例中,stride_w=stride_h=1,pad_w=pad_h=0,因此讀取單元110可透過算式五,將特徵矩陣510的起始座標(w_,h_)轉換為第5A圖矩陣502的起始座標(w_offset,h_offset)=(0,0)。在一些實施例中,本發明所述起始座標定義為矩陣中最左上角一元素的座標。在一些實施例中,算式五亦可由執行單元104所計算,並且再將其計算結果傳輸予讀取單元110。
在一些實施例中。讀取單元110依據矩陣502在存儲器106中的起始座標(w_offset,h_offset),再計算矩陣502的每一元素係分布在存儲器106中的哪些4*8區塊內。接著,讀取單元110讀取儲存有矩陣502的至少一元素的該些4*8區塊,用以將該些4*8區塊中對應於矩陣502的起始座標或其他原始座標的元素內的數據傳送予im2col模塊114。
回到第1圖,在卷積運算中,L1快取112從存儲器106中讀取並儲存用於該卷積運算的原始矩陣(例如第5A圖的矩陣500及矩陣502),用以供該讀取模塊110的存取(如第1圖中讀取單元110及L1快取112之間的虛線箭頭)。在一些實施例中,當讀取單元110在L1快取112中找不到對應於矩陣502的起始座標或矩陣502的其他原始座標的數據時,L1快取112會向一L2快取(未圖示)發出一請求,使得L2快取得以將到對應於矩陣502的起始座標或矩陣502的其他原始座標的數據傳送予L1快取112。其中,L2快取係設置於L1快取112及存儲器106之間,並且與L1快取112及存儲器106電性連接。
在一些實施例中,當讀取單元110在L2快取中仍找不到對應於矩陣502的起始座標或矩陣502的其他原始座標的數據時,L2快取會發出一請求給存儲器106,使得存儲器106得以將到對應於矩陣502的起始座標或矩陣502的其他原始座標的數據傳送予L2快取,L2快取再將數據傳送予L1快取112。最終,讀取單元110可從L1快取112中找到對應於矩陣502的起始座標或矩陣502的其他原始座標的數據。在一些實施例中,當讀取單元110在L1快取112中找到對應於矩陣502的起始座標或矩陣502的其他原始座標的數據時,則讀取單元110會將數據傳送予執行單元104內的im2col模塊114。
在第1圖中,寄存器文件116用以在該卷積運算中儲存來自im2col模塊114的原始矩陣(例如第5A圖的矩陣500及矩陣502)內的數據、擴展矩陣(例如第5B圖的擴展矩陣504)內的數據,及特徵矩陣(例如第5C圖的特徵矩陣510)內的數據。在一些實施例中,執行模塊118依據寄存器文件116中的原始矩陣(矩陣500及矩陣502)內的數據、擴展矩陣(擴展矩陣504)內的數據,及特徵矩陣(特徵矩陣510)內的數據,執行卷積運算。在一些實施例中,儲存單元108將執行單元104所執行卷積運算的一結果存入存儲器106中。
第6圖為本發明實施例之第1圖的im2col模塊114的示意圖。如第6圖所示,im2col模塊114包括一返回緩衝器(return buffer)600、一數據擴充器602、一數據多工器604,及一輸出合併緩衝器(output merge buffer)606。在一些實施例中,返回緩衝器600接收並存放來自第1圖紋素單元102的原始矩陣(例如第5A圖的矩陣500及矩陣502)或至少一該等存儲區塊中對應於原始矩陣的原始座標的數據(例如第5A圖矩陣500中位於座標(w_offset,h_offset)元素內的數據)。數據擴充器602將原始矩陣以im2col的方式(例如執行一im2col演算法)進行擴展,而得到對應於原始矩陣的一擴展矩陣(例如第5B圖擴展矩陣504)。數據多工器604從擴展矩陣中挑選執行單元104在卷積運算中所需的數據(例如第5B圖擴展矩陣504中第1列第1行元素0的數據、第5列第3行元素21的數據、第7列第11行元素56的數據)。輸出合併緩衝器606將數據多工器604從擴展矩陣中挑選的數據進行合併,並且輸出至寄存器文件116。
第7圖為本發明實施例之第1圖的圖形處理器100加速卷積運算的流程圖。本發明所揭露加速卷積運算的方法包括:從一存儲器中得到一原始矩陣;其中,存儲器包括彼此相鄰且大小相同的複數存儲區塊,原始矩陣係儲存於至少一該等存儲區塊中(步驟S700);執行一圖像塊重排為矩陣列(im2col)演算法,依據一卷積核(kernal)的大小,將原始矩陣進行擴展,而得到一擴展矩陣;其中,該擴展矩陣內的每一元素分別具有一擴展座標(步驟S702);將擴展矩陣與該卷積核相乘,而到對應於該原始矩陣的一特徵(feature map)矩陣(步驟S704);依據特徵座標、卷積核的大小、步伐值及填充值,得到該原始矩陣的每一元素的一原始座標(步驟S706);以及讀取原始矩陣的每一元素的原始座標所涵蓋的至少一該等存儲區塊,並且將至少一該等存儲區塊中對應於原始座標的數據輸出(步驟S708)。
在一些實施例中,第1圖的紋素單元102內的讀取單元110執行步驟S700。第1圖的執行單元104內的im2col模塊114執行步驟S702。第1圖的執行單元104(或執行單元104內的im2col模塊114)執行步驟S704。第1圖的紋素單元102內的讀取單元110執行步驟S706及步驟S708。本發明的圖形處理器100及卷積運算的加速方法使用專門的硬件(例如第6圖)來實現im2col的功能,並且做到了數據的隨用隨準備,因此減少了數據對帶寬的需求,提高了推理的效率。
本發明更調整數據的存儲方式(例如第2圖),以利於以硬件實現im2col的功能,最終達到減少推理層數、節省內存帶寬的目的。透過定義新的數據存儲方式,本發明的硬件讀取模塊(第1圖的讀取單元110)及數據展開模塊(第1圖的im2col模塊114)可成功將推理時間減少20%以上,並且改善了執行im2col功能時對帶寬的浪費。
雖然本發明的實施例如上述所描述,我們應該明白上述所呈現的只是範例,而不是限制。依據本實施例上述示範實施例的許多改變是可以在沒有違反發明精神及範圍下被執行。因此,本發明的廣度及範圍不該被上述所描述的實施例所限制。更確切地說,本發明的範圍應該要以以下的申請專利範圍及其相等物來定義。
儘管上述發明已被一或多個相關的執行來圖例說明及描繪,等效的變更及修改將被依據上述規格及附圖且熟悉這領域的其他人所想到。此外,儘管本發明的一特別特徵已被相關的多個執行之一所示範,上述特徵可能由一或多個其他特徵所結合,以致於可能有需求及有助於任何已知或特別的應用。
本說明書所使用的專業術語只是為了描述特別實施例的目的,並不打算用來作為本發明的限制。除非上下文有明確指出不同,如本處所使用的單數型,一、該及上述的意思係也包含複數型。再者,用詞「包括」,「包含」,「(具、備)有」,「設有」,或其變化型不是被用來作為詳細敘述,就是作為申請專利範圍。而上述用詞意思是包含,且在某種程度上意思是等同於用詞「包括」。
除非有不同的定義,所有本文所使用的用詞(包含技術或科學用詞)是可以被屬於上述發明的技術中擁有一般技術的人士做一般地了解。我們應該更加了解到上述用詞,如被定義在眾所使用的字典內的用詞,在相關技術的上下文中應該被解釋為相同的意思。除非有明確地在本文中定義,上述用詞並不會被解釋成理想化或過度正式的意思。
100:圖形處理器 102:紋素單元 104:執行單元 106:存儲器 108:儲存單元 110:讀取單元 112:L1快取 114:im2col模塊 116:寄存器文件 118:執行模塊 X,Y:方向 ①,②,③,④,⑤:區塊 ⑥,⑦,⑧,⑨:區塊 300,302,304,306,308,310:矩陣 0~15:矩陣元素 im2col:圖像塊重排為矩陣列 400,404:矩陣 402,406:卷積核 H:矩陣列數 W:矩陣行數 Kh:卷積核列數 Kw:卷積核行數 410,420:擴展矩陣 C:通道數 C0,C1:通道(channel) 500,502:矩陣 504:擴展矩陣 (w_offset,h_offset):矩陣500的起始座標 0~179:矩陣元素 506:卷積核 508,510:特徵矩陣 (w_,h_):特徵矩陣510的起始座標 A,B,C:矩陣元素 600:返回緩衝器 602:數據擴充器 604:數據多工器 606:輸出合併緩衝器 S702,S704,S706,S708:步驟
第1圖為本發明實施例之圖形處理器的示意圖。 第2圖為本發明實施例之第1圖存儲器的數據配置示意圖。 第3A-3D圖為本發明實施例第1圖im2col模塊執行im2col演算法的示意圖。 第4圖為本發明實施例之第1圖im2col模塊的擴展矩陣示意圖。 第5A圖為本發明實施例之原始矩陣示意圖。 第5B圖為本發明實施例之第5A圖原始矩陣的擴展矩陣示意圖。 第5C圖為本發明實施例之卷積核及特徵矩陣示意圖。 第6圖為本發明實施例之第1圖的im2col模塊的示意圖。 第7圖為本發明實施例之第1圖的圖形處理器加速卷積運算的流程圖。
100:圖形處理器
102:紋素單元
104:執行單元
106:存儲器
108:儲存單元
110:讀取單元
112:L1快取
114:im2col模塊
116:寄存器文件
118:執行模塊

Claims (9)

  1. 一種圖形處理器,用以加速一卷積運算,包括:一紋素(texel)單元,包括:一讀取(LD)模塊,從一存儲器中讀取用於該卷積運算的一原始矩陣;其中,該存儲器包括彼此相鄰且大小相同的複數存儲區塊,該原始矩陣係儲存於至少一該等存儲區塊中;一執行單元,包括:一圖像塊重排為矩陣列(im2col)模塊,用以執行一im2col演算法,依據一卷積核(kernel)的大小,將該原始矩陣進行擴展,而得到一擴展矩陣;其中,該執行單元將該擴展矩陣內的每一元素分別定義為一擴展座標;其中,該執行單元將該擴展矩陣與該卷積核相乘,而得到對應於該原始矩陣的一特徵(feature map)矩陣;其中,該讀取模塊接收來自該執行單元的該擴展座標,並且依據該擴展座標,計算出該特徵矩陣的每一元素的一特徵座標(w_,h_);以及依據該特徵座標、該卷積核的大小、步伐值(stride)及填充值(padding),得到該原始矩陣的每一元素的一原始座標(w_offset,h_offset);其中,該讀取模塊依據該原始矩陣的每一元素的該原始座標,計算該原始矩陣的每一元素儲存分布於至少一該等存儲區塊,讀取該原始矩陣的每一元素所儲存分布的至少一該等存儲區塊,並且將至少一該等存儲區塊中對應於該原始座標的數據傳送 予im2col模塊。
  2. 如請求項1所述之圖形處理器,其中,該執行單元更包括一寄存器文件(register file),用以在該卷積運算中儲存來自該im2col模塊的該原始矩陣內的數據、該擴展矩陣內的數據,及該特徵矩陣內的數據。
  3. 如請求項1所述之圖形處理器,其中,該執行單元更包括一執行模塊,用以依據該寄存器文件中的該原始矩陣內的數據、該擴展矩陣內的數據,及該特徵矩陣內的數據,執行該卷積運算。
  4. 如請求項1所述之圖形處理器,其中,該紋素單元更包括一L1快取(cache);在該卷積運算中,該L1快取從該存儲器中讀取並儲存用於該卷積運算的該原始矩陣,用以供該讀取模塊的存取。
  5. 如請求項1所述之圖形處理器,其中,該圖形處理器更包括一儲存單元,用以將該執行單元所執行卷積運算的一結果存入該存儲器中。
  6. 如請求項1所述之圖形處理器,其中,該存儲器所包括每一該等存儲區塊的大小為4*8的矩陣大小。
  7. 如請求項1所述之圖形處理器,其中,該im2col模塊包括:一返回緩衝器(return buffer),用以接收並存放來自該紋素單元的該原始矩陣或至少一該等存儲區塊中對應於該原始座標 的數據;一數據擴充器,用以將該原始矩陣以im2col的方式進行擴展,而得到該擴展矩陣;一數據多工器(data MUX),依據該執行單元從該擴展矩陣中挑選在該卷積運算中所需的數據;一輸出合併緩衝器(output merge buffer),用以將該數據多工器從該擴展矩陣中挑選的數據進行合併,並且輸出至一寄存器文件。
  8. 如請求項1所述之圖形處理器,其中,該卷積核的大小為3*3的矩陣大小,該步伐值等於1,及該填充值等於0。
  9. 一種加速卷積運算的方法,包括:從一存儲器中得到一原始矩陣;其中,該存儲器包括彼此相鄰且大小相同的複數存儲區塊,該原始矩陣係儲存於至少一該等存儲區塊中;執行一圖像塊重排為矩陣列(im2col)演算法,依據一卷積核(kernal)的大小,將該原始矩陣進行擴展,而得到一擴展矩陣;其中,該擴展矩陣內的每一元素分別具有一擴展座標;將該擴展矩陣與該卷積核相乘,而到對應於該原始矩陣的一特徵(feature map)矩陣;依據該擴展座標,計算出該特徵矩陣的每一元素的一特徵座標;依據該特徵座標、該卷積核的大小、步伐值及填充值,得到 該原始矩陣的每一元素的一原始座標;依據該原始矩陣的每一元素的該原始座標,計算該原始矩陣的每一元素儲存分布於至少一該等存儲區塊,讀取該原始矩陣的每一元素所儲存分布的至少一該等存儲區塊,並且將至少一該等存儲區塊中對應於該原始座標的數據輸出。
TW110103971A 2020-09-29 2021-02-03 圖形處理器及其加速方法 TWI779475B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202011048270.1A CN112241509B (zh) 2020-09-29 2020-09-29 图形处理器及其加速方法
CN202011048270.1 2020-09-29

Publications (2)

Publication Number Publication Date
TW202213127A TW202213127A (zh) 2022-04-01
TWI779475B true TWI779475B (zh) 2022-10-01

Family

ID=74172030

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110103971A TWI779475B (zh) 2020-09-29 2021-02-03 圖形處理器及其加速方法

Country Status (3)

Country Link
US (1) US20220100814A1 (zh)
CN (1) CN112241509B (zh)
TW (1) TWI779475B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113724127B (zh) * 2021-08-02 2023-05-05 成都统信软件技术有限公司 一种图像矩阵卷积的实现方法、计算设备及储存介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100583162C (zh) * 2004-06-16 2010-01-20 Nxp股份有限公司 正向纹理映射三维图形系统
CN106919942A (zh) * 2017-01-18 2017-07-04 华南理工大学 用于手写汉字识别的深度卷积神经网络的加速压缩方法
CN107341761A (zh) * 2017-07-12 2017-11-10 成都品果科技有限公司 一种深度神经网络的计算执行方法和系统
TW201935408A (zh) * 2017-04-28 2019-09-01 美商英特爾股份有限公司 用於低精度機器學習運算之計算最佳化

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4481190B2 (ja) * 2005-02-17 2010-06-16 株式会社沖データ 画像処理方法、画像処理装置および画像形成装置
CN100429658C (zh) * 2006-09-07 2008-10-29 北京优纳科技有限公司 大容量快速图像浏览系统
US10255547B2 (en) * 2014-12-04 2019-04-09 Nvidia Corporation Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system
CN108108809B (zh) * 2018-03-05 2021-03-02 山东领能电子科技有限公司 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法
US11544559B2 (en) * 2019-01-08 2023-01-03 Neuralmagic Inc. System and method for executing convolution in a neural network
CN109886397A (zh) * 2019-03-21 2019-06-14 西安交通大学 一种针对卷积层的神经网络结构化剪枝压缩优化方法
CN111639701B (zh) * 2020-05-28 2022-06-17 山东云海国创云计算装备产业创新中心有限公司 一种图像特征提取的方法、系统、设备及可读存储介质
US11783163B2 (en) * 2020-06-15 2023-10-10 Arm Limited Hardware accelerator for IM2COL operation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100583162C (zh) * 2004-06-16 2010-01-20 Nxp股份有限公司 正向纹理映射三维图形系统
CN106919942A (zh) * 2017-01-18 2017-07-04 华南理工大学 用于手写汉字识别的深度卷积神经网络的加速压缩方法
TW201935408A (zh) * 2017-04-28 2019-09-01 美商英特爾股份有限公司 用於低精度機器學習運算之計算最佳化
CN107341761A (zh) * 2017-07-12 2017-11-10 成都品果科技有限公司 一种深度神经网络的计算执行方法和系统

Also Published As

Publication number Publication date
US20220100814A1 (en) 2022-03-31
TW202213127A (zh) 2022-04-01
CN112241509A (zh) 2021-01-19
CN112241509B (zh) 2024-03-12

Similar Documents

Publication Publication Date Title
KR102316670B1 (ko) 연산 가속기
CN108805266B (zh) 一种可重构cnn高并发卷积加速器
US20210224125A1 (en) Operation Accelerator, Processing Method, and Related Device
CN109447241B (zh) 一种面向物联网领域的动态可重构卷积神经网络加速器架构
WO2022037257A1 (zh) 卷积计算引擎、人工智能芯片以及数据处理方法
CN111898733B (zh) 一种深度可分离卷积神经网络加速器架构
CN110516801A (zh) 一种高吞吐率的动态可重构卷积神经网络加速器架构
CN110222818B (zh) 一种用于卷积神经网络数据存储的多bank行列交织读写方法
CN114995782B (zh) 数据处理方法、装置、设备和可读存储介质
WO2023098256A1 (zh) 神经网络运算方法、装置、芯片、电子设备和存储介质
US20240160689A1 (en) Method for optimizing convolution operation of system on chip and related product
CN109993293B (zh) 一种适用于堆叠式沙漏网络的深度学习加速器
WO2018139265A1 (ja) プロセッサ、情報処理装置及びプロセッサの動作方法
TWI779475B (zh) 圖形處理器及其加速方法
CN117851742B (zh) 数据存储方法、数据处理方法、数据存储器、数据处理器
CN110414672B (zh) 卷积运算方法、装置及系统
CN114003201A (zh) 矩阵变换方法、装置及卷积神经网络加速器
CN111667052A (zh) 专用神经网络加速器的标准与非标准卷积一致性变换方法
Zhang et al. Yolov3-tiny Object Detection SoC Based on FPGA Platform
CN111191774A (zh) 面向精简卷积神经网络的低代价加速器架构及其处理方法
CN101794276B (zh) 适用于soc的dct_idct协处理器
CN112036370B (zh) 一种人脸特征比对方法、系统、设备及计算机存储介质
CN117609677B (zh) 一种稀疏矩阵乘法加速方法、fpga、计算系统及存储介质
CN210721552U (zh) 卷积电路
TWI828185B (zh) 三維卷積運算裝置與三維卷積運算方法

Legal Events

Date Code Title Description
GD4A Issue of patent certificate for granted invention patent