CN111798363B - 图形处理器 - Google Patents

图形处理器 Download PDF

Info

Publication number
CN111798363B
CN111798363B CN202010640113.3A CN202010640113A CN111798363B CN 111798363 B CN111798363 B CN 111798363B CN 202010640113 A CN202010640113 A CN 202010640113A CN 111798363 B CN111798363 B CN 111798363B
Authority
CN
China
Prior art keywords
matrix
zero
unit
result
matrices
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
CN202010640113.3A
Other languages
English (en)
Other versions
CN111798363A (zh
Inventor
张炜
顾德明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Granfei Intelligent Technology Co ltd
Original Assignee
Glenfly Tech Co Ltd
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 Glenfly Tech Co Ltd filed Critical Glenfly Tech Co Ltd
Priority to CN202010640113.3A priority Critical patent/CN111798363B/zh
Priority to TW109132269A priority patent/TWI775151B/zh
Publication of CN111798363A publication Critical patent/CN111798363A/zh
Priority to US17/140,849 priority patent/US11409523B2/en
Application granted granted Critical
Publication of CN111798363B publication Critical patent/CN111798363B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt

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”。
附图说明
图1为本发明实施例的图形处理器的示意图。
图2为本发明实施例的矩阵运算单元的操作示意图。
图3为本发明实施例的图形处理器的加速方法的流程图。
【符号说明】
100:图形处理器
102:稀疏矩阵检测单元
104:寄存器文件
106:断言寄存器
108:矩阵运算单元
110:线程调度及指令分发单元
112:整数运算单元
114:浮点运算单元
116:存储器读写控制单元
200:控制单元
202:多个运算子单元
MU:运算子单元
204:累加单元
S300,S302,S304:步骤
S306,S308,S310,S312:步骤
具体实施方式
本发明参照附图进行描述,其中遍及图式上的相同参考数字标示了相似或相同的元件。上述图式并没有依照实际比例大小描绘,其仅仅提供对本发明的说明。一些发明的型态描述于在下方作为图解示范应用的参考。这意味着许多特殊的细节,关系及方法被阐述来对这个发明提供完整的了解。无论如何,本领域技术人员将认识到若没有一个或更多的特殊细节或用其他方法,此发明仍然可以被实现。以其他例子来说,众所皆知的结构或操作并没有详细列出以避免对这发明的混淆。本发明并没有被阐述的行为或事件顺序所局限,如有些行为可能发生在不同的顺序亦或同时发生在其他行为或事件之下。此外,并非所有阐述的行为或事件都需要被执行在与现有发明相同的方法之中。
图1为本发明实施例的图形处理器的示意图。如图1所示,图形处理器(GraphicsProcessing 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
在一些实施例中,矩阵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所存储的相关讯息直接跳过对零矩阵的矩阵计算。
虽然本发明的实施例如上述所描述,我们应该明白上述所呈现的只是范例,而不是限制。依据本实施例上述示范实施例的许多改变是可以在没有违反发明精神及范围下被执行。因此,本发明的广度及范围不该被上述所描述的实施例所限制。更确切地说,本发明的范围应该要以权利要求及其相等物来定义。
尽管上述发明已被一或多个相关的执行来图例说明及描绘,等效的变更及修改将被依据上述规格及附图且熟悉这领域的其他人所想到。此外,尽管本发明的一特别特征已被相关的多个执行之一所示范,上述特征可能由一或多个其他特征所结合,以致于可能有需求及有助于任何已知或特别的应用。
本说明书所使用的专业术语只是为了描述特别实施例的目的,并不打算用来作为本发明的限制。除非上下文有明确指出不同,如本处所使用的单数型,一、该及上述的意思也包含复数型。再者,用词“包括”,“包含”,“(具、备)有”,“设有”,或其变化型不是被用来作为详细叙述,就是作为权利要求书。而上述用词意思是包含,且在某种程度上意思是等同于用词“包括”。
除非有不同的定义,所有本文所使用的用词(包含技术或科学用词)是可以被属于上述发明的技术中本领域技术人员做一般地了解。我们应该更加了解到上述用词,如被定义在众所使用的字典内的用词,在相关技术的上下文中应该被解释为相同的意思。除非有明确地在本文中定义,上述用词并不会被解释成理想化或过度正式的意思。

Claims (11)

1.一种图形处理器,包括:
稀疏矩阵检测单元,读取存储器中的多个矩阵,判断所述矩阵的每一个是否为零矩阵或非零矩阵,并输出判断结果;
寄存器文件,存储来自该稀疏矩阵检测单元的所述矩阵;
断言寄存器,依据该判断结果,对所述矩阵进行标记,并输出标记结果;
矩阵运算单元,接收矩阵运算指令,以及依据该标记结果,从该寄存器文件中读取所述矩阵中的所述非零矩阵,并且对所述非零矩阵执行应用于卷积神经网络的矩阵运算。
2.如权利要求1所述的图形处理器,还包括:
线程调度及指令分发单元,发送整数运算指令及该矩阵运算指令;
整数运算单元,接收该整数运算指令及该矩阵运算指令;依据该整数运算指令执行整数运算,并且将该矩阵运算指令转传送给该矩阵运算单元。
3.如权利要求1所述的图形处理器,其中,该矩阵运算单元包括:
控制单元,从该断言寄存器读取所述矩阵的该标记结果,并且依据该标记结果,从该寄存器文件中读取所述矩阵中的所述非零矩阵;
多个运算子单元,对所述非零矩阵执行矩阵运算;
累加单元,存储所述运算子单元在执行矩阵运算中的矩阵子乘积值及矩阵运算结果;其中,该矩阵乘积值供所述运算子单元执行矩阵运算使用。
4.如权利要求3所述的图形处理器,其中,当完成矩阵运算时,该控制单元从该累加单元中读取该矩阵运算结果,并且将该矩阵运算结果写入该寄存器文件中。
5.如权利要求1所述的图形处理器,其中,该矩阵运算单元依据该标记结果,从该寄存器文件中忽略所述零矩阵。
6.如权利要求1所述的图形处理器,其中,该断言寄存器以一位来标记所述矩阵中的所述零矩阵及所述非零矩阵。
7.如权利要求6所述的图形处理器,其中,该断言寄存器将所述矩阵中的所述零矩阵标记为“0”,并且将所述矩阵中的所述非零矩阵标记为“1”。
8.一种矩阵运算的加速方法,适用于图形处理器,包括:
接收矩阵运算指令;
从存储器中读取多个矩阵,并且判断每一个所述矩阵是否为零矩阵或非零矩阵,并输出判断结果;
依据该判断结果,对所述矩阵进行标记,并输出标记结果;
依据该标记结果,读取所述矩阵中的所述非零矩阵,并且对所述非零矩阵执行应用于卷积神经网络的矩阵运算。
9.如权利要求8所述的加速方法,还包括:
依据该标记结果,忽略所述矩阵中的所述零矩阵。
10.如权利要求8所述的加速方法,其中,依据该判断结果,对所述矩阵进行标记,包括:
以一位来标记所述矩阵中的所述零矩阵及所述非零矩阵。
11.如权利要求10所述的加速方法,其中,以一位来标记所述矩阵中的所述零矩阵及所述非零矩阵包括:
将所述矩阵中的所述零矩阵标记为“0”,并且将所述矩阵中的所述非零矩阵标记为“1”。
CN202010640113.3A 2020-07-06 2020-07-06 图形处理器 Active CN111798363B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202010640113.3A CN111798363B (zh) 2020-07-06 2020-07-06 图形处理器
TW109132269A TWI775151B (zh) 2020-07-06 2020-09-18 圖形處理器及其矩陣運算的加速方法
US17/140,849 US11409523B2 (en) 2020-07-06 2021-01-04 Graphics processing unit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010640113.3A CN111798363B (zh) 2020-07-06 2020-07-06 图形处理器

Publications (2)

Publication Number Publication Date
CN111798363A CN111798363A (zh) 2020-10-20
CN111798363B true CN111798363B (zh) 2024-06-04

Family

ID=72811287

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010640113.3A Active CN111798363B (zh) 2020-07-06 2020-07-06 图形处理器

Country Status (3)

Country Link
US (1) US11409523B2 (zh)
CN (1) CN111798363B (zh)
TW (1) TWI775151B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112732222B (zh) * 2021-01-08 2023-01-10 苏州浪潮智能科技有限公司 一种稀疏矩阵加速计算方法、装置、设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103281271A (zh) * 2013-05-29 2013-09-04 中国空间技术研究院 在中继系统中通过信道量化进行物理层网络编码的方法
CN104636273A (zh) * 2015-02-28 2015-05-20 中国科学技术大学 一种带多级Cache的SIMD众核处理器上的稀疏矩阵存储方法
CN104951442A (zh) * 2014-03-24 2015-09-30 华为技术有限公司 一种确定结果向量的方法和装置
CN108664447A (zh) * 2017-03-31 2018-10-16 华为技术有限公司 一种矩阵与矢量的乘法运算方法及装置
CN109740116A (zh) * 2019-01-08 2019-05-10 郑州云海信息技术有限公司 一种实现稀疏矩阵乘法运算的电路及fpga板

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5267185A (en) * 1989-04-14 1993-11-30 Sharp Kabushiki Kaisha Apparatus for calculating matrices
US8676874B2 (en) * 2010-12-06 2014-03-18 International Business Machines Corporation Data structure for tiling and packetizing a sparse matrix
US9317482B2 (en) * 2012-10-14 2016-04-19 Microsoft Technology Licensing, Llc Universal FPGA/ASIC matrix-vector multiplication architecture
US9396164B2 (en) * 2013-10-21 2016-07-19 International Business Machines Corporation Sparsity-driven matrix representation to optimize operational and storage efficiency
US10565207B2 (en) * 2016-04-12 2020-02-18 Hsilin Huang Method, system and program product for mask-based compression of a sparse matrix
US10067910B2 (en) * 2016-07-01 2018-09-04 Palo Alto Research Center Incorporated System and method for GPU maximum register count optimization applied to general matrix-matrix multiplication
US20180011709A1 (en) * 2016-07-08 2018-01-11 Texas Instruments Incorporated Stream reference register with double vector and dual single vector operating modes
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 中兴通讯股份有限公司 一种准循环低密度奇偶校验编码处理方法及装置
US11269638B2 (en) 2017-06-28 2022-03-08 Texas Instruments Incorporated Exposing valid byte lanes as vector predicates to CPU
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解码器、存储设备及通信模组
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103281271A (zh) * 2013-05-29 2013-09-04 中国空间技术研究院 在中继系统中通过信道量化进行物理层网络编码的方法
CN104951442A (zh) * 2014-03-24 2015-09-30 华为技术有限公司 一种确定结果向量的方法和装置
CN104636273A (zh) * 2015-02-28 2015-05-20 中国科学技术大学 一种带多级Cache的SIMD众核处理器上的稀疏矩阵存储方法
CN108664447A (zh) * 2017-03-31 2018-10-16 华为技术有限公司 一种矩阵与矢量的乘法运算方法及装置
CN109740116A (zh) * 2019-01-08 2019-05-10 郑州云海信息技术有限公司 一种实现稀疏矩阵乘法运算的电路及fpga板

Also Published As

Publication number Publication date
TWI775151B (zh) 2022-08-21
TW202203146A (zh) 2022-01-16
US20220004385A1 (en) 2022-01-06
CN111798363A (zh) 2020-10-20
US11409523B2 (en) 2022-08-09

Similar Documents

Publication Publication Date Title
US11442786B2 (en) Computation method and product thereof
US20180341495A1 (en) Hardware Accelerator for Convolutional Neural Networks and Method of Operation Thereof
US20180107630A1 (en) Processor and method for executing matrix multiplication operation on processor
EP3451162A1 (en) Device and method for use in executing matrix multiplication operations
CN111915001B (zh) 卷积计算引擎、人工智能芯片以及数据处理方法
US11977600B2 (en) Machine learning architecture support for block sparsity
US20200356837A1 (en) Fast deep learning fully-connected inference
US11934824B2 (en) Methods for performing processing-in-memory operations, and related memory devices and systems
Li et al. Accelerating binarized neural networks via bit-tensor-cores in turing gpus
US11074214B2 (en) Data processing
US10152328B2 (en) Systems and methods for voting among parallel threads
CN111798363B (zh) 图形处理器
US20200356836A1 (en) Fast deep learning fully-connected column-major implementation
US20230289191A1 (en) Vertical and horizontal broadcast of shared operands
US11966328B2 (en) Near-memory determination of registers
CN113591031A (zh) 低功耗矩阵运算方法及装置
CN112463218A (zh) 指令发射控制方法及电路、数据处理方法及电路
US20020156992A1 (en) Information processing device and computer system
US20090063808A1 (en) Microprocessor and method of processing data
WO2021057112A1 (zh) 矩阵运算电路、矩阵运算装置及矩阵运算方法
US11947487B2 (en) Enabling accelerated processing units to perform dataflow execution
US11416261B2 (en) Group load register of a graph streaming processor
TWI844116B (zh) 在機器學習硬體加速器處利用資料稀疏性
CN116225532A (zh) 一种支持加速向量运算的通用处理器
CN116910432A (zh) 基于异构众核处理器的稀疏矩阵向量乘方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20210316

Address after: 201203 3rd floor, building 2, No. 200, zhangheng Road, Pudong New Area pilot Free Trade Zone, Shanghai

Applicant after: Gryfield Intelligent Technology Co.,Ltd.

Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Shanghai 201203

Applicant before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: 201203, 11th Floor, Building 3, No. 889 Bibo Road, China (Shanghai) Pilot Free Trade Zone

Patentee after: Granfei Intelligent Technology Co.,Ltd.

Country or region after: China

Address before: 201203 3rd floor, building 2, No. 200, zhangheng Road, Pudong New Area pilot Free Trade Zone, Shanghai

Patentee before: Gryfield Intelligent Technology Co.,Ltd.

Country or region before: China