CN116090513A - 矩阵乘法的运算方法及装置 - Google Patents

矩阵乘法的运算方法及装置 Download PDF

Info

Publication number
CN116090513A
CN116090513A CN202111294888.0A CN202111294888A CN116090513A CN 116090513 A CN116090513 A CN 116090513A CN 202111294888 A CN202111294888 A CN 202111294888A CN 116090513 A CN116090513 A CN 116090513A
Authority
CN
China
Prior art keywords
bit
precision
bits
data
sign
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.)
Pending
Application number
CN202111294888.0A
Other languages
English (en)
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.)
Sanechips Technology Co Ltd
Original Assignee
Sanechips Technology 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 Sanechips Technology Co Ltd filed Critical Sanechips Technology Co Ltd
Priority to CN202111294888.0A priority Critical patent/CN116090513A/zh
Priority to PCT/CN2022/129619 priority patent/WO2023078364A1/zh
Publication of CN116090513A publication Critical patent/CN116090513A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06GANALOGUE COMPUTERS
    • G06G7/00Devices in which the computing operation is performed by varying electric or magnetic quantities
    • G06G7/12Arrangements for performing computing operations, e.g. operational amplifiers
    • G06G7/16Arrangements for performing computing operations, e.g. operational amplifiers for multiplication or division
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Data Mining & Analysis (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)
  • Power Engineering (AREA)
  • Nonlinear Science (AREA)
  • Computer Hardware Design (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

本发明实施例提供了一种矩阵乘法的运算方法及装置,所述运算方法包括:将两个2N比特的浮点型数据分别拆分为对应的符号位、精度位和指数位,以及将四个N比特的整型数据分别拆分为对应的符号位和精度位;通过指数位相加、符号位异或和精度位相乘对所述两个浮点型数据进行矩阵乘法运算,以及通过符号位异或和精度位相乘对所述四个整型数据两两进行矩阵乘法运算,并在所述浮点型数据和所述整型数据的矩阵乘法运算中复用乘法单元和加法单元。在本发明中,通过将不同数据类型的输入数据进行拆分,从而可以在矩阵乘法过程中复用加速器的乘法和加法运算资源,从而大大减少了加速器的芯片面积和降低了成本。

Description

矩阵乘法的运算方法及装置
技术领域
本发明实施例涉及矩阵乘法领域,具体而言,涉及一种矩阵乘法的运算方法及装置。
背景技术
随着技术的进步,人工智能中的神经网络对加速器中具有的卷积运算和全连接运算能力的需求越来越大,然而卷积运算和全连接运算又可以转化为矩阵乘法运算。矩阵乘法运算由乘法和加法组成,现有的加速器的乘法和加法算力已经从GOPS提升到TOPS。与此同时,加速器中乘法和加法算力的提升,需要有更多的运算单元来支撑。但是,对于芯片设计者来说,需要尽可能用更小的面积和成本来支持更多的运算单元,从而达到更大的算力。
现有的AI加速器主要支持INT8、INT16、INT32、FP16、FP32、FP64等输入数据类型,如要实现支持前面6种数据类型作为输入的AI加速器,那么需要用6个独立的运算单元来分别支持6种输入的运算。因此,该AI加速器的缺点是,对于同一神经网络一般是一种输入数据类型,同一时刻只有一种运算单元进行运算,却需要多种独立的运算单元,因此带来芯片面积和成本的增加。
发明内容
本发明实施例提供了一种矩阵乘法的运算方法及装置,以至少解决相关技术中在加速器中需要独立的多种输入数据类型的运算单元,从而导致的芯片面积和成本增加问题。
根据本发明的一个实施例,提供了一种矩阵乘法的运算方法,包括:将两个2N比特的浮点型数据分别拆分为对应的符号位、精度位和指数位,以及将四个N比特的整型数据分别拆分为对应的符号位和精度位;通过指数位相加、符号位异或和精度位相乘对所述两个浮点型数据进行矩阵乘法运算,以及通过符号位异或和精度位相乘对所述四个整型数据两两进行矩阵乘法运算,并在所述浮点型数据和所述整型数据的矩阵乘法运算中复用乘法单元和加法单元。
在一个示例性实施例中,通过指数位相加、符号位异或和精度位相乘对所述两个浮点型数据进行矩阵乘法运算包括:将第一浮点型数据的指数位与第二浮点型数据的指数位进行加法运算,将所述第一浮点型数据的符号位与所述第二浮点型数据的符号位进行异或运算,以及将所述第一浮点型数据的精度位与所述第二浮点型数据的精度位进行乘法运算。
在一个示例性实施例中,通过符号位异或和精度位相乘对所述四个整型数据两两进行矩阵乘法运算包括:将第一整型数据的符号位与第二整型数据的符号位进行异或运算,以及将所述第一整型数据的精度位与所述第二整型数据的精度位的乘法运算,以得到包含符号位和精度位的第一运算结果;将第三整型数据的符号位与第四整型数据的符号位进行异或运算,以及将所述第三整型数据的精度位与所述第四整型数据的精度位的乘法运算,以得到包含符号位和精度位的第二运算结果;将所述第一运算结果和所述第二运算结果相加。
在一个示例性实施例中,将两个2N比特的浮点型数据拆分为对应的符号位、精度位和指数位,以及将四个N比特的整型数据拆分为对应的符号位和精度位,包括:将两个16比特的浮点型数据分别拆分为1比特的符号位、11比特的精度位和4比特的指数位,以及将四个8 比特的整型数据分别拆分为1比特的符号位和7比特的精度位。
在一个示例性实施例中,通过指数位相加、符号位异或和精度位相乘对所述两个浮点型数据进行矩阵乘法运算包括:将1比特符号位和11比特精度位组成的第一浮点型数据,与1 比特符号位和11比特精度位组成的第二浮点型数据相乘得到1比特符号位和22比特原码,再将其转换为补码,得到1bit符号位22bit补码。
在一个示例性实施例中,通过符号位异或和精度位相乘对所述四个整型数据进行矩阵乘法运算包括:将1bit符号位和7bit精度位组成的第一整型数据,与1bit符号位和7bit精度位组成的第二整型数据相乘得到由1bit符号位和14bit原码组成的第一运算结果;将1bit 符号位和7bit精度位组成的第三整型数据,与1bit符号位和7bit精度位组成的第四整型数据相乘得到由1bit符号位和14bit原码组成的第二运算结果;将所述第一乘法运算与第二乘法运算结果相加得到1bit符号位和15bit原码,再将其由原码转换为补码,得到1bit符号位和15bit补码。
在一个示例性实施例中,浮点型数据的矩阵乘法运算中的相加运算包括:从拆分出的指数中选出最大数;分别计算各指数相对于所述最大数的阶差;按照所述阶差对乘积数据位进行右移位;将移位后的乘积数据进行相加。
根据本发明的另一个实施例,提供了一种矩阵乘法的运算装置,包括:拆分模块,用于将两个2N比特的浮点型数据分别拆分为对应的符号位、精度位和指数位,以及将四个N比特的整型数据分别拆分为对应的符号位和精度位;运算模块,用于通过指数位相加、符号位异或和精度位相乘对所述两个浮点型数据进行矩阵乘法运算,以及通过符号位异或和精度位相乘对所述四个整型数据两两进行矩阵乘法运算,并在所述浮点型数据和所述整型数据的矩阵乘法运算中复用乘法单元和加法单元。
在一个示例性实施例中,所述运算模块包括:第一运算单元,用于将第一浮点型数据的指数位与第二浮点型数据的指数位进行加法运算,将所述第一浮点型数据的符号位与所述第二浮点型数据的符号位进行异或运算,以及将所述第一浮点型数据的精度位与所述第二浮点型数据的精度位进行乘法运算。
在一个示例性实施例中,所述运算模块还包括:第二运算单元,用于将第一整型数据的符号位与第二整型数据的符号位进行异或运算,以及将所述第一整型数据的精度位与所述第二整型数据的精度位的乘法运算,以得到包含符号位和精度位的第一运算结果;将第三整型数据的符号位与第四整型数据的符号位进行异或运算,以及将所述第三整型数据的精度位与所述第四整型数据的精度位的乘法运算,以得到包含符号位和精度位的第二运算结果;以及将所述第一运算结果和所述第二运算结果相加
根据本发明的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
在本发明实施例,通过将不同数据类型的输入数据进行拆分,从而可以在矩阵乘法过程中复用加速器的乘法和加法运算资源,从而大大减少了加速器的芯片面积和降低了成本。
附图说明
图1是根据本发明实施例的矩阵乘法的运算方法的流程图;
图2是根据本发明实施例的矩阵乘法的运算装置的结构框图;
图3是根据本发明另一实施例的矩阵乘法的运算装置的结构框图;
图4是根据本发明实施例的4对FP16乘加与8对INT8乘加复用示意图;
图5是根据本发明实施例的FP16和INT8乘法之前的预处理示意图;
图6是根据本发明实施例的FP16和INT8单独实现乘法运算且转换为补码形式的示意图;
图7是根据本发明实施例的FP16和INT8乘法拆分复用示意图;
图8是根据本发明实施例的fp16和int8加法复用示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明的实施例。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
对于加速器支持输入数据类型,通常情况下会包含多个该输入数据类型的矩阵乘法运算单元。又由于通常神经网络计算只会使用一种输入数据类型,那么同一时刻多种输入数据类型的矩阵乘法运算单元,只有一种处于工作状态,但是多种输入数据类型的矩阵乘法运算单元又必须存在与加速器中。
为了解决上述问题,本发明实施例提供了一种矩阵乘法的运算方法。矩阵乘法运算的核心是加法器和乘法器,本实施例提供的矩阵乘法的运算方式,主要复用矩阵乘法中的乘法器和加法器,在满足功能实现的情况下,能大幅度的减少面积消耗。
在本实施例中,利用数据拆分后乘法来实现乘法复用,本实施例中的复用原则是nbit 整形数据的2个乘法和1个加法,与2n bit浮点型数据的1个乘法,进行资源复用。例如:INT8*INT8+INT8*INT8的资源与FP16*FP16的资源进行复用,INT16*INT16+INT16*INT16的资源与FP32*FP32的资源进行复用,INT32*INT32+INT32*INT32的资源与FP64*FP64的资源进行复用。
图1是根据本发明实施例的矩阵乘法的运算方法流程图,如图1所示,该流程包括如下步骤:
步骤S102,将两个2N比特的浮点型数据分别拆分为对应的符号位、精度位和指数位,以及将四个N比特的整型数据分别拆分为对应的符号位和精度位;
步骤S104,通过指数位相加、符号位异或和精度位相乘对所述两个浮点型数据进行矩阵乘法运算,以及通过符号位异或和精度位相乘对所述四个整型数据两两进行矩阵乘法运算,并在所述浮点型数据和所述整型数据的矩阵乘法运算中复用乘法单元和加法单元。
在一个示例性实施例中,步骤S104中通过指数位相加、符号位异或和精度位相乘对拆分后的所述两个浮点型数据进行矩阵乘法运算包括:将第一浮点型数据的指数位与第二浮点型数据的指数位进行加法运算,将所述第一浮点型数据的符号位与所述第二浮点型数据的符号位进行异或运算,以及将所述第一浮点型数据的精度位与所述第二浮点型数据的精度位进行乘法运算。
在一个示例性实施例中,步骤S104中通过符号位异或和精度位相乘对拆分后的所述四个整型数据两两进行矩阵乘法运算包括:将第一整型数据的符号位与第二整型数据的符号位进行异或运算,以及将所述第一整型数据的精度位与所述第二整型数据的精度位的乘法运算,以得到包含符号位和精度位的第一运算结果;将第三整型数据的符号位与第四整型数据的符号位进行异或运算,以及将所述第三整型数据的精度位与所述第四整型数据的精度位的乘法运算,以得到包含符号位和精度位的第二运算结果;将所述第一运算结果和所述第二运算结果相加。
在一个INT8*INT8+INT8*INT8的资源与FP16*FP16的资源进行复用的示例性实施例中,步骤S102包括:将两个16比特的浮点型数据分别拆分为1比特的符号位、11比特的精度位和4比特的指数位,以及将四个8比特的整型数据分别拆分为1比特的符号位和7比特的精度位。
在一个INT8*INT8+INT8*INT8的资源与FP16*FP16的资源进行复用的示例性实施例中,通过指数位相加、符号位异或和精度位相乘对拆分后的所述两个浮点型数据进行矩阵乘法运算包括:将1比特符号位和11比特精度位组成的第一浮点型数据,与1比特符号位和11比特精度位组成的第二浮点型数据相乘得到1比特符号位和22比特原码,再将其转换为补码,得到1bit符号位22bit补码。
在一个示例性实施例中,通过符号位异或和精度位相乘对所述四个整型数据INT8进行矩阵乘法运算包括:将1bit符号位和7bit精度位组成的第一整型数据,与1bit符号位和7bit 精度位组成的第二整型数据相乘得到由1bit符号位和14bit原码组成的第一运算结果;将 1bit符号位和7bit精度位组成的第三整型数据,与1bit符号位和7bit精度位组成的第四整型数据相乘得到由1bit符号位和14bit原码组成的第二运算结果;将所述第一乘法运算与第二乘法运算结果相加得到1bit符号位和15bit原码,再将其由原码转换为补码,得到1bit 符号位和15bit补码。
在一个示例性实施例中,浮点型数据的矩阵乘法运算中的相加运算包括:从拆分出的指数中选出最大数;分别计算各指数相对于所述最大数的阶差;按照所述阶差对乘积数据位进行右移位;将移位后的乘积数据进行相加。
本实施例的资源复用的方法可以且不仅限于应用于n bit的整形数据4行4列的矩阵A 乘以4行4列的矩阵B,或者2n bit的浮点数据4行8列的A乘以8列4行的矩阵B。
在本实施例中还提供了一种矩阵乘法的运算装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。例如,由乘法器和加法器组成的运算器。
图2是根据本发明实施例的矩阵乘法的运算装置的结构框图,如图2所示,该运算装置 100包括拆分模块10和运算模块20。
拆分模块10,用于将两个2N比特的浮点型数据分别拆分为对应的符号位、精度位和指数位,以及将四个N比特的整型数据分别拆分为对应的符号位和精度位。
运算模块20,用于通过指数位相加、符号位异或和精度位相乘对所述两个浮点型数据进行矩阵乘法运算,以及通过符号位异或和精度位相乘对所述四个整型数据两两进行矩阵乘法运算,并在所述浮点型数据和所述整型数据的矩阵乘法运算中复用乘法单元和加法单元。
图3是根据本发明实施例的矩阵乘法的运算装置的结构框图,如图3所示,该运算装置 100除包括图2所示的所有模块外,所述运算模块10包括第一运算单元11和第二运算单元 12。
第一运算单元11,用于将第一浮点型数据的指数位与第二浮点型数据的指数位进行加法运算,将所述第一浮点型数据的符号位与所述第二浮点型数据的符号位进行异或运算,以及将所述第一浮点型数据的精度位与所述第二浮点型数据的精度位进行乘法运算。
第二运算单元12,用于将第一整型数据的符号位与第二整型数据的符号位进行异或运算,以及将所述第一整型数据的精度位与所述第二整型数据的精度位的乘法运算,以得到包含符号位和精度位的第一运算结果;将第三整型数据的符号位与第四整型数据的符号位进行异或运算,以及将所述第三整型数据的精度位与所述第四整型数据的精度位的乘法运算,以得到包含符号位和精度位的第二运算结果;以及将所述第一运算结果和所述第二运算结果相加
在本实施例提供的运算装置中,通过将不同数据类型的输入数据进行拆分,从而可以在矩阵乘法过程中复用加速器的乘法和加法运算资源,从而大大减少了加速器的芯片面积和降低了成本。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
为了便于对本发明的理解,下面以INT8*INT8+INT8*INT8的资源与FP16*FP16的资源进行复用进行举例说明,如图4所示。图中FP16数据类型的4个乘法3个加法和INT8数据类型的8个乘法7个加法资源复用。
本实施例中矩阵乘法复用的地方主要是乘法和加法,本实施例的运算流程主要分3个阶段:输入数据预处理、乘法和加法。
首先,输入数据进行预处理。
具体地,在本实施例中,先将输入的fp16和int8转换成固定格式,主要目的是为了使后续乘法能够复用。如图5所示,fp16的做法是将其拆分成fix12和指数部分,int8的做法是将其转换为1bit符号位7bit原码的格式。
其次,每个乘法单元将输入2个需要相乘的fp16或者4个需要两两相乘的int8。2个fp16两两相乘的运算方式具体为:两个1bit符号位11bit原码组成的fix12相乘得到1bit符号位22bit原码,再将其转换为补码,最终得到1bit符号位22bit补码。4个int8相乘运算方式具体为:两个1bit符号位7bit原码组成的fix8相乘得到1bit符号位14bit原码,再将2个1bit符号位14bit原码相加得到1bit符号位15bit原码,再将其由原码转换为补码,最终得到1bit符号位15bit补码。
在另一实施例中,如果FP16和INT8乘法单独处理,那么它们的实现方式如图6,最终两个INT8的乘积相加来减少输出数据个数。
如图6所示,两个FP16相乘可以拆分成3个运算:指数加法、符号位异或、11bit精度位乘法,四个INT8两两相乘可以表达为4个运算:2个符号位异或、2个7bit精度乘法。
在本实施例中,为了在此处充分复用fp16和int8的乘法资源,因此提出了后续的资源复用实现乘法运算的方法。
在本实施例中,可将fp16的乘法和int8的乘法运算按照图7中的拆分方式进行拆分。具体地,如图6所示,将fp16的运算3拆分成更小粒度的7bit*7bit、7bit*4bit、7bit*4bit、 4bit*4bit,将int8的运算D拆分成7bit*4bit、7bit*4bit的形式。这样最终可以复用3个乘法器DSP7*4、DSP7*4、DSP7*7。
在本实施例中,也充分复用fp16和int8矩阵乘法中的加法实现资源,因此提出了后续的资源复用实现加法运算的方法。
在本实施例中,将fp16矩阵乘法运算中的加法按照图8方式进行。
第一步,找最大指数,从4个拆分后的指数中寻找最大指数。4个指数两两进行比较选出较大值得到2个指数,再将2个指数进行比较其较大值即为4个指数中的最大值。
第二步,算阶差,分别计算第一步中最大指数与4个指数的差值,得到4个数相对于最大指数的阶差;
第三步,移位,4个乘积数据位进行右移位,移位位数为第二步中算出的阶差;
第四步,加法,4个数第一次每两两相加得到2个数,然后将这2个数第二次相加得到1 个数,add_0_3即为最终结果。
在本实施例中,将int8矩阵乘法运算中的加法,按照图8方式进行。
即,4个数第一次每两两相加得到2个数,2个数第二次相加得到1个数,add_0_7即为最终结果。
在本实施例中,fp16和int8的加法实现,复用了以下几个部分:第一次加法的8个加法器,第二次加法的4个加法器,第三次加法的2个加法器,第四次加法的加法器。
在本实施例中,能够让多种运算精度复用矩阵乘法运算单元,在保证功能的前提下,大大减少了面积消耗。即,在芯片面积资源有限的情况下,能够实现更多精度的矩阵乘法运算,使人工智能加速器能够支持更多的精度。从而提升人工智能加速器的算力,和增加它的应用场景。
本发明的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-On ly Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (12)

1.一种矩阵乘法的运算方法,其特征在于,包括:
将两个2N比特的浮点型数据分别拆分为对应的符号位、精度位和指数位,以及将四个N比特的整型数据分别拆分为对应的符号位和精度位;
通过指数位相加、符号位异或和精度位相乘对所述两个浮点型数据进行矩阵乘法运算,以及通过符号位异或和精度位相乘对所述四个整型数据两两进行矩阵乘法运算,并在所述浮点型数据和所述整型数据的矩阵乘法运算中复用乘法单元和加法单元。
2.根据权利要求1所述的方法,其特征在于,其中,通过指数位相加、符号位异或和精度位相乘对所述两个浮点型数据进行矩阵乘法运算包括:
将第一浮点型数据的指数位与第二浮点型数据的指数位进行加法运算,将所述第一浮点型数据的符号位与所述第二浮点型数据的符号位进行异或运算,以及将所述第一浮点型数据的精度位与所述第二浮点型数据的精度位进行乘法运算。
3.根据权利要求1所述的方法,其特征在于,其中,通过符号位异或和精度位相乘对所述四个整型数据两两进行矩阵乘法运算包括:
将第一整型数据的符号位与第二整型数据的符号位进行异或运算,以及将所述第一整型数据的精度位与所述第二整型数据的精度位的乘法运算,以得到包含符号位和精度位的第一运算结果;
将第三整型数据的符号位与第四整型数据的符号位进行异或运算,以及将所述第三整型数据的精度位与所述第四整型数据的精度位的乘法运算,以得到包含符号位和精度位的第二运算结果;
将所述第一运算结果和所述第二运算结果相加。
4.根据权利要求1所述的方法,其特征在于,其中,将两个2N比特的浮点型数据拆分为对应的符号位、精度位和指数位,以及将四个N比特的整型数据拆分为对应的符号位和精度位,包括:
将两个16比特的浮点型数据分别拆分为1比特的符号位、11比特的精度位和4比特的指数位,以及将四个8比特的整型数据分别拆分为1比特的符号位和7比特的精度位。
5.根据权利要求4所述的方法,其特征在于,通过指数位相加、符号位异或和精度位相乘对所述两个浮点型数据进行矩阵乘法运算包括:
将1比特符号位和11比特精度位组成的第一浮点型数据,与1比特符号位和11比特精度位组成的第二浮点型数据相乘得到1比特符号位和22比特原码,再将其转换为补码,得到1bit符号位22bit补码。
6.根据权利要求4所述的方法,其特征在于,通过符号位异或和精度位相乘对所述四个整型数据进行矩阵乘法运算包括:
将1bit符号位和7bit精度位组成的第一整型数据,与1bit符号位和7bit精度位组成的第二整型数据相乘得到由1bit符号位和14bit原码组成的第一运算结果;
将1bit符号位和7bit精度位组成的第三整型数据,与1bit符号位和7bit精度位组成的第四整型数据相乘得到由1bit符号位和14bit原码组成的第二运算结果;
将所述第一乘法运算与第二乘法运算结果相加得到1bit符号位和15bit原码,再将其由原码转换为补码,得到1bit符号位和15bit补码。
7.根据权利要求4所述的方法,其特征在于,其中,浮点型数据的矩阵乘法运算中的相加运算包括:
从拆分出的指数中选出最大数;
分别计算各指数相对于所述最大数的阶差;
按照所述阶差对乘积数据位进行右移位;
将移位后的乘积数据进行相加。
8.一种矩阵乘法的运算装置,其特征在于,包括:
拆分模块,用于将两个2N比特的浮点型数据分别拆分为对应的符号位、精度位和指数位,以及将四个N比特的整型数据分别拆分为对应的符号位和精度位;
运算模块,用于通过指数位相加、符号位异或和精度位相乘对所述两个浮点型数据进行矩阵乘法运算,以及通过符号位异或和精度位相乘对所述四个整型数据两两进行矩阵乘法运算,并在所述浮点型数据和所述整型数据的矩阵乘法运算中复用乘法单元和加法单元。
9.根据权利要求8所述的装置,其特征在于,其中,所述运算模块包括:
第一运算单元,用于将第一浮点型数据的指数位与第二浮点型数据的指数位进行加法运算,将所述第一浮点型数据的符号位与所述第二浮点型数据的符号位进行异或运算,以及将所述第一浮点型数据的精度位与所述第二浮点型数据的精度位进行乘法运算。
10.根据权利要求8所述的装置,其特征在于,其中,所述运算模块还包括:
第二运算单元,用于将第一整型数据的符号位与第二整型数据的符号位进行异或运算,以及将所述第一整型数据的精度位与所述第二整型数据的精度位的乘法运算,以得到包含符号位和精度位的第一运算结果;将第三整型数据的符号位与第四整型数据的符号位进行异或运算,以及将所述第三整型数据的精度位与所述第四整型数据的精度位的乘法运算,以得到包含符号位和精度位的第二运算结果;以及将所述第一运算结果和所述第二运算结果相加。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至7任一项中所述的方法的步骤。
12.一种电子装置,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述权利要求1至7任一项中所述的方法的步骤。
CN202111294888.0A 2021-11-03 2021-11-03 矩阵乘法的运算方法及装置 Pending CN116090513A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111294888.0A CN116090513A (zh) 2021-11-03 2021-11-03 矩阵乘法的运算方法及装置
PCT/CN2022/129619 WO2023078364A1 (zh) 2021-11-03 2022-11-03 矩阵乘法的运算方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111294888.0A CN116090513A (zh) 2021-11-03 2021-11-03 矩阵乘法的运算方法及装置

Publications (1)

Publication Number Publication Date
CN116090513A true CN116090513A (zh) 2023-05-09

Family

ID=86208771

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111294888.0A Pending CN116090513A (zh) 2021-11-03 2021-11-03 矩阵乘法的运算方法及装置

Country Status (2)

Country Link
CN (1) CN116090513A (zh)
WO (1) WO2023078364A1 (zh)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101986264B (zh) * 2010-11-25 2013-07-31 中国人民解放军国防科学技术大学 用于simd向量微处理器的多功能浮点乘加运算装置
CN108287681B (zh) * 2018-02-14 2020-12-18 中国科学院电子学研究所 一种单精度浮点融合点乘运算装置
CN113157247B (zh) * 2021-04-23 2022-10-25 西安交通大学 一种可重构整型-浮点型乘法器

Also Published As

Publication number Publication date
WO2023078364A1 (zh) 2023-05-11

Similar Documents

Publication Publication Date Title
US20210349692A1 (en) Multiplier and multiplication method
CN110288086B (zh) 一种基于Winograd的可配置卷积阵列加速器结构
CN115934030B (zh) 算数逻辑单元、浮点数乘法计算的方法及设备
CN111832719A (zh) 一种定点量化的卷积神经网络加速器计算电路
US10949168B2 (en) Compressing like-magnitude partial products in multiply accumulation
CN112434801B (zh) 一种按照比特精度进行权重拆分的卷积运算加速方法
CN110362293B (zh) 乘法器、数据处理方法、芯片及电子设备
TW202115560A (zh) 用於浮點運算的乘法器、方法、積體電路晶片和計算裝置
CN106682258B (zh) 一种高层次综合工具中的多操作数加法优化方法及***
CN114341796A (zh) 带符号多字乘法器
CN116661734B (zh) 支持多输入多格式的低精度乘加运算器
CN114003194A (zh) 一种基于乘法器的运算方法、装置和计算机可读存储介质
CN116205244B (zh) 一种数字信号处理结构
CN110825346B (zh) 一种低逻辑复杂度的无符号近似乘法器
CN110458277B (zh) 适用于深度学习硬件加速器的可配置精度的卷积硬件结构
CN116090513A (zh) 矩阵乘法的运算方法及装置
WO2023124371A1 (zh) 数据处理装置、方法、芯片、计算机设备及存储介质
CN113283591B (zh) 基于Winograd算法和近似乘法器的高效卷积实现方法及装置
CN115827555A (zh) 数据处理方法、计算机设备、存储介质和乘法器结构
CN110647307B (zh) 数据处理器、方法、芯片及电子设备
CN113504892A (zh) 一种设计乘法器查找表的方法、***、设备及介质
CN109992242B (zh) 基于乘法器的运算方法及装置
CN112685001A (zh) 一种Booth乘法器及其运算方法
CN110069240A (zh) 定点与浮点数据计算方法及装置
CN110688087A (zh) 数据处理器、方法、芯片及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication