CN115237372A - 一种乘法电路、机器学习运算电路、芯片及数据处理方法 - Google Patents
一种乘法电路、机器学习运算电路、芯片及数据处理方法 Download PDFInfo
- Publication number
- CN115237372A CN115237372A CN202210945735.6A CN202210945735A CN115237372A CN 115237372 A CN115237372 A CN 115237372A CN 202210945735 A CN202210945735 A CN 202210945735A CN 115237372 A CN115237372 A CN 115237372A
- Authority
- CN
- China
- Prior art keywords
- matrix
- operand
- target
- circuit
- product
- 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
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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Complex Calculations (AREA)
Abstract
本公开提供了一种乘法电路、机器学习运算电路、芯片及数据处理方法,涉及计算机技术领域,尤其涉及数据处理技术领域,其中一实施例的乘法电路,用于对第一目标矩阵和第二目标矩阵进行乘积计算,得到积矩阵,其中,第一目标矩阵包括至少一个第一目标元素,第二目标矩阵包括至少一个第二目标元素,该乘法电路包括累加电路、定点转换电路和至少一个乘积电路,每个乘积电路均与累加电路电连接;其中,乘积电路,用于对一个第一目标元素与一个第二目标元素进行三次16位定点计算,得到定点乘法结果;定点转换电路,用于将定点乘法结果转换为浮点乘法结果;累加电路,用于基于矩阵乘法规则,将相应的浮点乘法结果相加,得到积矩阵中的一个积元素。
Description
技术领域
本公开涉及计算机技术领域,具体涉及数据处理技术领域,尤其涉及一种乘法电路、机器学习运算电路、数据处理方法、机器学习运算方法、芯片、电子设备、计算机可读存储介质以及计算机程序产品。
背景技术
随着数字电子技术的不断发展,各类人工智能芯片的快速发展对于高性能数字乘法器的要求也越来越高。神经网络算法作为智能芯片广泛应用的算法之一,通过乘法器进行矩阵乘法运算在神经网络算法中是一种常见的操作,其计算性能直接影响神经网络模型的整体性能。
发明内容
本公开提供了一种乘法电路、机器学习运算电路、数据处理方法、机器学习运算方法、芯片、电子设备、计算机可读存储介质以及计算机程序产品,在保证计算精度的前提下,提高了计算性能。
根据本公开的一方面,提供了一种乘法电路,用于对第一目标矩阵和第二目标矩阵进行乘积计算,得到积矩阵,其中,所述第一目标矩阵包括至少一个第一目标元素,所述第二目标矩阵包括至少一个第二目标元素,所述第一目标元素和第二目标元素均包括两个16位定点数;所述乘法电路包括累加电路、定点转换电路和至少一个乘积电路,每个所述乘积电路均与所述累加电路电连接;其中,
所述乘积电路,用于对一个所述第一目标元素与一个所述第二目标元素进行三次16位定点计算,得到定点乘法结果;
所述定点转换电路,用于将所述定点乘法结果转换为浮点乘法结果;
所述累加电路,用于基于矩阵乘法规则,将相应的浮点乘法结果相加,得到所述积矩阵中的一个积元素。
根据本公开的另一方面,提供了一种机器学习运算电路,包括:直接内存访问单元、存储单元以及至少一个前述的乘法电路,其中,所述存储单元与所述直接内存访问单元和所述乘法电路电连接;
所述直接内存访问单元,用于将输入的第一初始矩阵和第二初始矩阵,分别转换为第一目标矩阵和第二目标矩阵,并将所述第一目标矩阵和所述第二目标矩阵发送至所述存储单元,其中,所述第一初始矩阵和所述第二初始矩阵中的元素均为浮点数,所述第一目标矩阵和所述第二目标矩阵中的元素均为定点数;
所述存储单元,用于根据预先配置的第一存储地址存储所述第一目标矩阵和所述第二目标矩阵;
所述乘法电路,用于根据所述第一存储地址,从所述存储单元获取所述第一目标矩阵和所述第二目标矩阵,并对所述第一目标矩阵和所述第二目标矩阵进行乘积计算,得到浮点形式的积矩阵。
根据本公开的又一方面,提供了一种数据处理方法,包括:
获取待计算的第一目标矩阵和第二目标矩阵,其中,所述第一目标矩阵包括至少一个第一目标元素,所述第二矩阵包括至少一个第二目标元素,所述第一目标元素和第二目标元素均包括两个16位定点数;
对一个所述第一目标元素与一个所述第二目标元素进行三次16位定点计算,得到定点乘法结果;
所述定点乘法结果转换为浮点乘法结果;
基于矩阵乘法规则,将相应的浮点乘法结果相加,得到所述积矩阵中的一个积元素,其中,所述积矩阵为所述第一目标矩阵和第二目标矩阵进行乘积计算后得到的积矩阵。
根据本公开的又一方面,提供了一种机器学习运算方法,包括:
将输入的第一初始矩阵和第二初始矩阵,分别转换为第一目标矩阵和第二目标矩阵,其中,所述第一初始矩阵和所述第二初始矩阵中的元素均为浮点数,所述第一目标矩阵和所述第二目标矩阵中的元素均为定点数;
根据预先配置的第一存储地址存储所述第一目标矩阵和第二目标矩阵;
根据所述第一存储地址,获取待计算的第一目标矩阵和第二目标矩阵,并利用前述的数据处理方法对第一目标矩阵和第二目标矩阵进行乘积计算,得到浮点形式的积矩阵。
根据本公开的又一方面,提供了一种芯片,包括前述的机器学习运算电路。
根据本公开的又一方面,提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述的数据处理方法或机器学习运算方法。
根据本公开的又一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行前述的数据处理方法或机器学习运算方法。
根据本公开的又一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现前述的数据处理方法或机器学习运算方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开实施例的一种乘法电路的结构示意图;
图2是根据本公开又一实施例的乘法电路的结构示意图;
图3是根据本公开实施例的一种机器学习运算电路的示意图;
图4是根据本公开实施例的直接内存访问单元的结构示意图;
图5是根据本公开实施例的数据拆分电路的结构示意图;
图6是根据本公开实施例的浮点转换电路的结构示意图;
图7是根据本公开实施例的应用机器学习运算电路的示意图;
图8是根据本公开实施例的一种数据处理方法的流程示意图;
图9是根据本公开实施例的一种机器学习运算方法的流程示意图;
图10是根据本公开实施例的一种芯片的结构示意图。
图11是用来实现本公开实施例的一种数据处理方法和一种机器学习运算方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。另外,本文中为部件所编序号本身,例如“第一”、“第二”等,仅用于区分所描述的对象,不具有任何顺序或技术含义。而本申请所说“连接”,如无特别说明,均包括直接和间接连接。
下述公式1说明一种矩阵乘法。在公式1中,矩阵A是m*n矩阵,矩阵B是n*k矩阵,矩阵c是m*k矩阵,其中,m、n、k是依据实际设计所决定的整数。需要说明的是,本申请中以二维矩阵作示例进行说明,三维空间矩阵同样适用。
矩阵C=矩阵A*矩阵B
图1是根据本申请一实施例的乘法电路的结构示意图,该乘法电路10可以执行公式1的计算,以对第一目标矩阵和第二目标矩阵进行乘积计算,得到积矩阵,在此假设第一目标矩阵为矩阵A、第二目标矩阵为矩阵B以及积矩阵为矩阵C,即乘法电路10能够将矩阵A乘以矩阵B而产生积矩阵C。
继续参考图1,乘法电路10包括多个乘积电路101、与每个乘积电路电连接的定点转换电路103、以及与定点转换电路电连接的累加电路105,其中,
乘积电路101,用于对一个第一目标元素与一个第二目标元素进行三次16位定点计算,得到定点乘法结果。
在本实施例中,第一目标矩阵包括至少一个第一目标元素,第二目标矩阵包括至少一个第二目标元素。例如,第一目标矩阵为矩阵A,第一目标元素为矩阵A中的元素,即a1,1、a1,2、a1,3……am,n等m*n个元素;第二目标矩阵为矩阵B,第二目标元素为矩阵B中的元素,即b1,1、b1,2、b1,3……bn,k等n*k个元素。乘积电路用于对一个第一目标元素与一个第二目标元素进行三次16位定点计算,例如,对a1,1和b1,1进行三次十六位定点计算,得到定点乘法结果。
定点转换电路103,用于将定点乘法结果转换为浮点乘法结果。例如,将上述第一目标元素a1,1和第二目标元素b1,1计算得到的定点乘法结果转换为浮点乘法结果。
累加电路105,用于基于矩阵乘法规则,将相应的浮点乘法结果相加,得到积矩阵中的一个元素。例如得到积矩阵C中的一个元素c1,1,其中,矩阵乘法规则为现有技术,本申请在此不再详述。
在利用传统乘法器对上述第一目标元素和上述第二目标元素进行乘法运算时,需要进行四次16位定点计算,即需要对第一目标元素中两个16位的定点数与第二目标元素中的两个16位定点数进行两两相乘,得到四个乘积结果,并将四个乘积结果进行求和得到定点乘法结果。然而,相比于传统的四次16位定点计算,本实施例提出的乘法电路省略了一次16位定点计算,即省略了第一目标元素中的一个16位定点数与第二目标元素中的一个16位定点数的相乘运算,通过乘积电路仅进行三次16位定点计算得到三个乘积结果,并将三个乘积结果进行求和即可计算得到定点乘法结果,有效提升了计算效率。
需要说明的是,第一目标元素包括第一操作数和第二操作数,第二目标元素包括第三操作数和第四操作数,并且第一操作数、第二操作数、第三操作数以及第四操作数均为16位定点数,也就是说,第一目标元素和第二目标元素均包括两个16位定点数。例如,第一目标元素为a1,1,其包括第一操作数a0和第二操作数a1,第二目标元素为b1,1,其包括第三操作数b0和第四操作数b1,其中a0、a1、b0和b1均为16位定点数。
继续参考图2,其示出了根据本公开的乘法电路的另一个实施例的结构示意图,如图2所示,乘法电路包括定点转换电路、累加电路以及多个乘积电路,其中,乘积电路包括第一子电路和第二子电路,其中,
第一子电路,用于计算第一操作数与第四操作数的第一乘积结果、第二操作数与第三操作数的第二乘积结果、以及第二操作数与第四操作数的第三乘积结果;第二子电路,用于对第一乘积结果、第二乘积结果和第三乘积结果进行移位并求和,得到定点乘法结果。
以对第一目标元素a1,1和第二目标元素b1,1进行三次16位定点计算为例对第一子电路和第二子电路进行说明,首先,利用第一子电路执行的三次16位定点计算包括:计算第一操作数a0与第四操作数b1,得到第一乘积结果a0*b1;计算第二操作数a1与第三操作数b0,得到第二乘积结果a1*b0;计算第二操作数a1与第四操作数b1,得到第三乘积结果a1*b1。其次,利用第二子电路对第一乘积结果a0*b1、第二乘积结果a1*b0和第三乘积结果a1*b1进行移位并求和,得到定点乘法结果。
在本实施例的一些可选实现方式中,第一目标元素包括两个16位的定点数,其是由一个32位定点数经过拆分得到,其中,低16位定点数为该32位定点数中的低16位上的16个二进制数组成的;高16位定点数为该32位定点数中的高16位上的16个二进制数组成的。当第一操作数为低16位定点数,第二操作数为高16位定点数,第三操作数为高16位定点数时,第四操作数为低16位定点数时,第二子电路对第一乘积结果a0*b1、第二乘积结果a1*b0和第三乘积结果a1*b1进行移位并求和,其中,对第一乘积结果a0*b1移零位,即不移位,得到a0*b1;对第二乘积结果a1*b0向左移32位,得到a1*b0<<32;对第三乘积结果a1*b1向左移16位,得到a1*b1<<16,并对移位后的结果进行求和,得到a0*b1+a1*b0<32+a1*b1<16,作为定点乘法结果。
本实现方式中,通过对由第一子电路进行三次16位定点计算得到的第一乘积结果、第二乘积结果以及第三乘积结果,利用第二子电路进行移位并求和,与现有技术中的浮点乘法运算相比,具有计算简单、计算效率高以及能耗低的优点。
在本实施例的又一可选实现方式中,当第一操作数和三操作数为低16位定点数,第二操作数和第四操作数为高16位定点数时,第二子电路,进一步用于将第一乘积结果向左移16位得到第一移位结果、将第二乘积结果向左移16位得到第二移位结果以及将第三乘积结果向左移32位得到第三移位结果,并将第一移位结果、第二移位结果以及第三移位结果相加,得到定点乘法结果。
也就是说,当第一操作数a0与第三操作数b0为低16位、第二操作数a1与第四操作数b1为高16位时,利用第二子电路将第一乘积结果a0*b1向左移16位,得到第一移位结果a0*b1<<16,其中,“<<”为左移符;将第二乘积结果向左移16位得到第二移位结果a1*b0<<16;将第三乘积结果向左移32位得到第三移位结果a1*b1<<32,并将第一移位结果、第二移位结果以及第三移位结果相加,即a0*b1<<16+a1*b0<<16+a1*b1<<32,得到定点乘法结果。
在本实现方式中,省略了低16位定点数与低16位定点数相乘的运算,从而使得乘积电路仅进行三次16位定点计算即可计算得到相同精度的定点乘法结果,在同样的芯片面积下,芯片能耗降低,在保证计算准确度的情况下,有效提升了计算性能。
继续参考图2,利用多个第一子电路和第二子电路乘积电路对第一目标矩阵中的元素和第二目标矩阵中的元素进行三次16位定点计算,从而得到多个定点乘法结果;其次,利用定点转换电路将多个定点乘法结果转换为相应的浮点乘法结果;最后,基于矩阵乘法规则,利用累加电路将相应的浮点乘法结果相加,从而得到积矩阵中的每一个元素,最终得到积矩阵。
继续参考图3,本申请又一个实施例提供了一种机器学习运算电路20,包括直接内存访问单元201、存储单元203、以及多个前述实施例所述的乘法电路205,其中,存储单元203与直接内存访问单元201和乘法电路205电连接。需要说明的是,图3中直接内存访问单元、存储单元以及乘法电路的数量是示例性的。
其中,直接内存访问单元201,用于将输入的第一初始矩阵和第二初始矩阵,分别转换为第一目标矩阵和第二目标矩阵,并将第一目标矩阵和第二目标矩阵发送至存储单元,其中,第一初始矩阵和第二初始矩阵中的元素均为浮点数,第一目标矩阵和第二目标矩阵中的元素均为定点数。
在本实施例中,第一初始矩阵和第二初始矩阵中的元素的数据类型为单精度浮点数或半精度浮点数;第一目标矩阵和第二目标矩阵中的元素为16位的定点数。用户在终端输入浮点形式的第一初始矩阵和浮点形式的第二初始矩阵,直接内存访问单元将其分别转换为定点形式的第一目标矩阵和定点形式的第二目标矩阵。
存储单元203,用于根据预先配置的第一存储地址存储第一目标矩阵和第二目标矩阵。
在本实施例中,存储单元利用用户在终端预先配置的第一存储地址,存储第一目标矩阵和第二目标矩阵,以供后续读取或计算。
乘法电路205,用于根据第一存储地址,从存储单元203获取第一目标矩阵和第二目标矩阵,并对第一目标矩阵和第二目标矩阵进行乘积计算,得到浮点形式的积矩阵。
本实施例提供的一种机器学习运算电路,首先通过直接内存访问单元将输入的第一初始矩阵和第二初始矩阵,分别转换为第一目标矩阵和第二目标矩阵,进而利用前述实施例的乘法电路对第一目标矩阵和第二目标矩阵进行乘积计算,以得到浮点形式的积矩阵,相比于传统的四次16位定点计算,本实施例省略了一次16位定点计算,通过乘积电路仅进行三次16位定点计算即可计算得到定点乘法结果,有效提升了计算效率。
需要说明的是,乘法电路根据第一存储地址获取待计算的第一目标矩阵和第二目标矩阵,并对第一目标矩阵和第二目标矩阵进行乘积计算,得到浮点形式的积矩阵。其中,对第一目标矩阵和第二目标矩阵进行乘积计算,得到浮点形式的积矩阵的过程参见前述实施例,本申请在此不再详述。
进一步,如图4所示,直接内存单元201包括浮点转换电路2010和数据拆分电路2012;其中,
浮点转换电路2010,用于将第一初始矩阵和第二初始矩阵,分别转换为第一中间矩阵和第二中间矩阵,其中,第一中间矩阵包括至少一个第一中间元素,第二中间矩阵包括至少一个第二中间元素,第一中间元素和第二中间元素均为32位定点数。
在本实施例中,例如,假设第一初始矩阵为记为矩阵A’,浮点转换电路能够将第一初始矩阵A’转换为第一中间矩阵记为矩阵tmpA,其中,第一中间元素为第一中间矩阵tmpA中的元素,并且第一中间元素均为32位定点数,即tmpa1,1、tmpa1,2……tmpam,n等元素均为32位定点数。
同理,假设第二初始矩阵为记为矩阵B’,浮点转换电路能够将第二初始矩阵B’转换为第二中间矩阵记为tmpB,其中,第二中间元素为第二中间矩阵tmpB中的元素,并且第一中间元素均为32位定点数,即tmpb1,1、tmpb1,2……tmpbm,n等元素均为32位定点数。
数据拆分电路2012用于将第一中间元素拆分为第一操作数和第二操作数,并将第一操作数和第二操作数作为第一目标矩阵中的一个第一目标元素;以及将第二中间元素拆分为第三操作数和第四操作数,并将第三操作数和第四操作数作为第二目标矩阵中的一个第二目标元素;其中,第一操作数、第二操作数、第三操作数以及第四操作数均为16位定点数。
如前述实施例所述,第一目标元素包括第一操作数和第二操作数,其中,第一操作数和第二操作数是由第一中间元素拆分来的,例如,第一中间元素为32位的定点数tmpa1,1,通过数据拆分电路,可将tmpa1,1拆分得到两个16位的定点操作数,即第一操作数a0和第二操作数a1,并将第一操作数a0和第二操作数a1作为第一目标矩阵中的一个元素,例如构成了矩阵A中的a1,1。同样的,如前述实施例所述,第二目标元素包括第三操作数和第四操作数,其中,第三操作数和第四操作数是由第二中间元素拆分来的,例如,第二中间元素为32位的定点数tmpb1,1,通过数据拆分电路,可将tmpb1,1拆分得到两个16位的定点操作数,即第三操作数b0和第四操作数b1,并将第三操作数a0和第四操作数a1作为第二目标矩阵中的一个元素,例如构成了矩阵B中的b1,1。
本领域技术人员应当理解,通过数据拆分电路,能够将32位定点数形式的第一中间元素或第二中间元素,分别拆分得到第一操作数、第二操作数、第三操作数以及第四操作数,并且第一操作数、第二操作数、第三操作数以及第四操作数均为16位定点数。
本实施例中,首先通过浮点转换电路将第一初始矩阵和第二初始矩阵,分别转换为第一中间矩阵和第二中间矩阵,其次通过数据拆分电路对第一中间矩阵中的第一中间元素和第二中间矩阵中的第二中间元素进行拆分,以得到第一目标元素和第二目标元素,并使得第一目标元素和第二目标元素均包括两个16位定点数,从而为后续乘法电路中进行的三次16位定点计算打下基础,有效提高了计算效率和计算性能。
在本实施例的一些可选实现方式中,如图5所示,数据拆分电路2012包括第三子电路20120和第四子电路20122;其中,第三子电路20120,用于将第一中间元素和第二中间元素分别与预设的二进制数执行按位与操作,得到第一操作数和第三操作数,其中,第一操作数和第三操作数为低16位定点数;第四子电路20122,用于将第一中间元素和第二中间元素分别向右移16位得到第二操作数和第四操作数,其中,第二操作数和第四操作数为高16位定点数。
以第一中间元素tmpa1,1为例进行说明,其中,若第一中间元素tmpa1,1用二进制数表示为1010 0101 1100 0011 1111 0000 1001 0010,预设的二进制数可以为1111111111111111,利用第三子电路将tmpa1,1与二进制数1111111111111111执行按位与操作后,得到的二进制数为0000 0000 00000000 1111 0000 1001 0010,即得到第一操作数,并且1111 0000 1001 0010为tmpa1,1的低16位数;利用第四子电路将tmpa1,1向右移16位得到的二进制数为0000 0000 0000 0000 1010 0101 1100 0011,即得到第二操作数,并且1010 0101 1100 0011为tmpa1,1的高16位数。同理,对第二中间元素利用第三子电路和第四子电路执行同样的操作,能够得到低16位的第三操作数和高16位的第四操作数。
在本实施例中,通过第三子电路和第四子电路,将第一中间元素和第二中间元素分别拆分为均包括低16位定点数和高16位定点数的两个操作数,通过对操作数进行低16位定点数和高16位定点数的划分,能够使得在利用乘法电路进行定点计算时,有选择性的省略两个低16位定点数的相乘运算,通过乘积电路仅进行三次16位定点计算即可计算得到相同精度的定点乘法结果,在同样的芯片面积下,芯片能耗降低,在保证计算准确度的情况下,有效提升了计算性能。
在本实施例的一些可选实现方式中,第一初始矩阵包括至少一个第一初始元素,第二初始矩阵包括至少一个第二初始元素,如图6所示,浮点转换电路2010包括第五子电路20100和第六子电路20102;其中,
第五子电路20100用于,遍历全部第一初始元素,并将绝对值最大的第一初始元素的绝对值作为第一绝对值最大值;遍历全部第二初始元素,并将绝对值最大的第二初始元素的绝对值作为第二绝对值最大值。
在本实施例中,假设第一初始矩阵为矩阵A’,即第一初始元素为矩阵A’中的元素,即a′1,1、a′1,2……a′m,n等元素。第五子电路能够遍历全部第一初始元素,即遍历a′1,1、a′1,2……a′m,n等元素,并将这些元素中绝对值最大的第一初始元素的绝对值作为第一绝对值最大值,记为maxA,例如,a′1,2的绝对值最大为100,则第一绝对值最大值maxA为100。同理,假设第一初始矩阵为矩阵B’,即第二初始元素为矩阵B’中的元素,即b′1,1、b′1,2……b′m,n等元素。第五子电路能够遍历全部第二初始元素,并将这些元素中绝对值最大的第二初始元素的绝对值作为第二绝对值最大值,记为maxB,例如,b′1,4的绝对值最大为120,则第二绝对值最大值maxB为120。
第六子电路20102用于,根据第一绝对值最大值,将第一初始元素转换为第一中间元素,得到第一中间矩阵;根据第二绝对值最大值,将第二初始元素转化为第二中间元素,得到第二中间矩阵。
在本实施例中,以第一初始元素a′1,1为例进行说明,例如,利用第五子电路已经确定第一绝对值最大值为a′1,2的绝对值对应的值,第六子电路能够根据公式2
将第一初始元素a′1,1转换为第一中间元素tmpa1,1,基于相似的操作,可以将第一初始矩阵中的全部第一初始元素进行转换,从而得到第一中间矩阵tmpA。同理,第六子电路还能够根据第二绝对值最大值,将第二初始元素转化为第二中间元素,得到第二中间矩阵,本申请在此不再赘述。
在本实施例中,通过第五子电路分别确定第一初始矩阵的绝对值最大值和第二初始矩阵的绝对值最大值,其中,利用第五子电路获取绝对值最大值的过程,由直接内存访问单元边读取边比较,即读取过程中找到绝对值最大值,不会额外增加计算量和访存量;进而利用第六子电路根据第一初始矩阵的绝对值最大值和第二初始矩阵的绝对值最大值,分别将第一初始元素和第二初始元素转换为第一中间元素和第二中间元素,以得到第一中间矩阵和第二中间矩阵,转换过程方便快捷,有效提升了计算性能。
在本实施例的一个可选方式中,乘法电路还包括:符号位计算电路,用于对一个第一初始元素的符号位与一个第二初始元素的符号位执行按位异或操作,得到对应的定点乘法结果的符号位。
定点乘法结果为对第一目标元素与第二目标元素进行三次16位定点计算所得的结果,其中,第一目标元素为第一初始元素首先转换为第一中间元素进而进行数据拆分得到,第二目标元素为第二初始元素首先转换为第二中间元素进而进行数据拆分得到,因此,定点乘法结果的符号位与第一初始元素的符号位和第二初始元素的符号位有关。利用符号位计算电路对一个第一初始元素的符号位与一个第二初始元素的符号位执行按位异或操作,能够得到对应的定点乘法结果的符号位。例如,第一初始元素为a′1,1,其符号位为1、第二初始元素为b′1,1,其符号位为0,对应的定点乘法结果的符号位为1。
本实施例中,通过设置符号位计算电路,来确定对应的定点乘法结果的符号位,从而避免了在计算过程中由于对符号位的忽视引发的计算不准确的问题,有效的提升了计算的精度与准确度。
在确定好定点乘法结果的符号位后,定点转换电路进一步用于根据第一绝对值最大值、第二绝对值最大值以及定点乘法结果的符号位,将定点乘法结果转换为浮点乘法结果。
在本实施例中,利用公式3:
将定点乘法结果转换为浮点乘法结果,其中,c表示浮点乘法结果;tmpc表示定点乘法结果;maxA表示第一绝对值最大值;maxB表示第二绝对值最大值;signc表示定点乘法结果的符号位。
在本实施例中,定点转换电路能够根据第一绝对值最大值、第二绝对值最大值以及定点乘法结果的符号位,将定点乘法结果转换为浮点乘法结果,即采用定浮点结合的方式,在输入采用浮点数,计算时采用定点数,并最终将定点乘法结果转换为浮点乘法结果,相比于传统的浮点乘法,具有计算简单、计算效率高以及能耗低的优点。
在计算得到浮点形式的积矩阵后,在本实施例的一个可选方式中,存储单元还进可进一步用于根据用户在终端预先分配的第二存储地址存储浮点形式的积矩阵,以供后续使用。例如,当用户在终端侧点击获取计算结果时,直接内存访问单元进一步根据第二存储地址获取并输出浮点形式的积矩阵至终端,供用户使用。
在本实施例中,在存储时候使用浮点类型表示,即用户在终端侧输入浮点形式的第一初始矩阵和浮点形式的第二初始矩阵,计算时转换为定点类型的第一目标矩阵和第二目标矩阵,利用乘法电路得到浮点形式的积矩阵,并能够通过直接内存访问单元获取并输出浮点形式的积矩阵至终端,供用户使用,即上述运算过程对用户所处的终端透明,能够兼容深度学习的框架,克服了传统的定点计算与深度学习框架不兼容的问题,从而实现更为灵活的数据处理方式。
图7示出了应用本实施例提供的机器学习运算电路的场景示意图,如图7所示,该机器学习运算电路20包括直接内存访问单元201、存储单元203以及乘法电路205。首先,直接内存访问单元201将用户从终端输入的浮点形式的第一初始矩阵和第二初始矩阵,分别转换为第一目标矩阵和第二目标矩阵,并将第一目标矩阵和第二目标矩阵发送至存储单元203;存储单元203根据用户预先配置的第一存储地址存储第一目标矩阵和第二目标矩阵;乘法电路205用于根据第一存储地址,从存储单元203获取第一目标矩阵和第二目标矩阵,并对第一目标矩阵和第二目标矩阵进行乘积计算,得到浮点形式的积矩阵;存储单元203根据用户在终端预先分配的第二存储地址存储浮点形式的积矩阵,直接内存访问单元20进一步根据第二存储地址获取并输出浮点形式的积矩阵至终端,供用户使用。
根据本公开的实施例,本公开还提供了一种数据处理方法,如图8所示,该方法包括:
S101、获取待计算的第一目标矩阵和第二目标矩阵,其中,第一目标矩阵包括至少一个第一目标元素,第二矩阵包括至少一个第二目标元素,第一目标元素和第二目标元素均包括两个16位定点数;
S102、对一个第一目标元素与一个第二目标元素进行三次16位定点计算,得到定点乘法结果;
S103、将定点乘法结果转换为浮点乘法结果;
S104、基于矩阵乘法规则,将相应的浮点乘法结果相加,得到积矩阵中的一个积元素,其中,积矩阵为第一目标矩阵和第二目标矩阵进行乘积计算后得到的积矩阵。
在本实施例的一些可选实现方式中,第一目标元素包括第一操作数和第二操作数,第二目标元素包括第三操作数和第四操作数,第一操作数、第二操作数、第三操作数以及第四操作数均为16位定点数;对一个第一目标元素与一个第二目标元素进行三次16位定点计算,得到定点乘法结果包括:
计算第一操作数与第四操作数的第一乘积结果、第二操作数与第三操作数的第二乘积结果、以及第二操作数与第四操作数的第三乘积结果;
对第一乘积结果、第二乘积结果和第三乘积结果进行求和计算,得到定点乘法结果。
在本实施例的一些可选实现方式中,第一操作数和三操作数为低16位定点数,第二操作数和第四操作数为高16位定点数;对第一乘积结果、第二乘积结果和第三乘积结果进行求和计算,得到定点乘法结果包括:
将第一乘积结果向左移16位得到第一移位结果、将第二乘积结果向左移16位得到第二移位结果以及将第三乘积结果向左移32位得到第三移位结果,并将第一移位结果、第二移位结果以及第三移位结果相加,得到定点乘法结果。
由于本申请实施例提出的一种数据处理方法与上述实施例提供的一种乘法电路相对应,因此在前实施方式和有益效果也适用于本实施例提供的数据处理方法,在本实施例中不再详细描述。
根据本公开的实施例,本公开还提供了一种机器学习运算方法,如图9所示,该方法包括:
S201、将输入的第一初始矩阵和第二初始矩阵,分别转换为第一目标矩阵和第二目标矩阵,其中,第一初始矩阵和第二初始矩阵中的元素均为浮点数,第一目标矩阵和第二目标矩阵中的元素均为定点数;
S202、根据预先配置的第一存储地址存储第一目标矩阵和第二目标矩阵;
S203、根据第一存储地址,获取待计算的第一目标矩阵和第二目标矩阵,并利用前述实施例数据处理方法对第一目标矩阵和第二目标矩阵进行乘积计算,得到浮点形式的积矩阵。
在本实施例的一些可选实现方式中,将输入的第一初始矩阵和第二初始矩阵,分别转换为第一目标矩阵和第二目标矩阵包括:
将第一初始矩阵和第二初始矩阵,分别转换为第一中间矩阵和第二中间矩阵,其中,第一中间矩阵包括至少一个第一中间元素,第二中间矩阵包括至少一个第二中间元素,第一中间元素和第二中间元素均为32位定点数;
将第一中间元素拆分为第一操作数和第二操作数,并将第一操作数和第二操作数作为第一目标矩阵中的一个第一目标元素;
将第二中间元素拆分为第三操作数和第四操作数,并将第三操作数和第四操作数作为第二目标矩阵中的一个第二目标元素;
其中,第一操作数、第二操作数、第三操作数以及第四操作数均为16位定点数。
在本实施例的一些可选实现方式中,将第一中间元素拆分为第一操作数和第二操作数,以及将第二中间元素拆分为第三操作数和第四操作数,包括:
将第一中间元素和第二中间元素分别与预设的二进制数执行按位与操作,得到第二操作数和第四操作数,其中,第一操作数和第三操作数为低16位定点数;
将第一中间元素和第二中间元素分别向右移16位得到第二操作数和第四操作数,其中,第二操作数和第四操作数为高16位定点数。
在本实施例的一些可选实现方式中,第一初始矩阵包括至少一个第一初始元素,第二初始矩阵包括至少一个第二初始元素,将第一初始矩阵和第二初始矩阵,分别转换为定点形式的第一中间矩阵和第二中间矩阵包括:
遍历全部第一初始元素,并将绝对值最大的第一初始元素的绝对值作为第一绝对值最大值;
遍历全部第二初始元素,并将绝对值最大的第二初始元素的绝对值作为第二绝对值最大值;
根据第一绝对值最大值,将第一初始元素转换为第一中间元素,得到第一中间矩阵;
根据第二绝对值最大值,将第二初始元素转换为第二中间元素,得到第二中间矩阵。
在本实施例的一些可选实现方式中,该机器学习运算方法还包括:
对第一初始元素的符号位与第二初始元素的符号位执行按位异或操作,得到对应的定点乘法结果的符号位;
其中,将定点乘法结果转换为浮点乘法结果包括:
根据第一绝对值最大值、第二绝对值最大值以及定点乘法结果的符号位将定点乘法结果转换为浮点乘法结果。
在本实施例的一些可选实现方式中,该机器学习运算方法还包括:
根据预先配置的第二存储地址存储浮点形式的积矩阵;其中,在存储浮点形式的积矩阵之后,机器学习运算方法还包括:根据第二存储地址获取并输出浮点形式的积矩阵。
由于本申请实施例提出的一种机器学习运算方法与上述实施例提供的一种机器学习运算电路相对应,因此在前实施方式和有益效果也适用于本实施例提供的机器学习运算方法,在本实施例中不再详细描述。
根据本公开的实施例,本公开还提供了一种芯片,如图10所示,该芯片包括前述实施例的机器学习运算电路。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图11示出了可以用来实施本公开的实施例的示例电子设备1100的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图11所示,设备1100包括计算单元1101,其可以根据存储在只读存储器(ROM)1102中的计算机程序或者从存储单元1108加载到随机访问存储器(RAM)1103中的计算机程序,来执行各种适当的动作和处理。在RAM 1103中,还可存储设备1100操作所需的各种程序和数据。计算单元1101、ROM 1102以及RAM 1103通过总线1104彼此相连。输入/输出(I/O)接口1105也连接至总线1104。
设备1100中的多个部件连接至I/O接口1105,包括:输入单元1106,例如键盘、鼠标等;输出单元1107,例如各种类型的显示器、扬声器等;存储单元1108,例如磁盘、光盘等;以及通信单元1109,例如网卡、调制解调器、无线通信收发机等。通信单元1109允许设备1100通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元1101可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1101的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元1101执行上文所描述的各个方法和处理,例如数据处理方法和机器学习运算方法。例如,在一些实施例中,数据处理方法和机器学习运算方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1108。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1102和/或通信单元1109而被载入和/或安装到设备1100上。当计算机程序加载到RAM 1103并由计算单元1101执行时,可以执行上文描述的数据处理方法和机器学习运算方法的一个或多个步骤。备选地,在其他实施例中,计算单元1101可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法数据处理方法和机器学习运算方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (22)
1.一种乘法电路,用于对第一目标矩阵和第二目标矩阵进行乘积计算,得到积矩阵,其中,所述第一目标矩阵包括至少一个第一目标元素,所述第二目标矩阵包括至少一个第二目标元素,所述第一目标元素和第二目标元素均包括两个16位定点数;
所述乘法电路包括累加电路、定点转换电路和至少一个乘积电路,所述定点转换电路与所述累加电路和每个所述乘积电路电连接;其中,
所述乘积电路,用于对一个所述第一目标元素与一个所述第二目标元素进行三次16位定点计算,得到定点乘法结果;
所述定点转换电路,用于将所述定点乘法结果转换为浮点乘法结果;
所述累加电路,用于基于矩阵乘法规则,将相应的浮点乘法结果相加,得到所述积矩阵中的一个积元素。
2.根据权利要求1所述的乘法电路,其中,所述第一目标元素包括第一操作数和第二操作数,所述第二目标元素包括第三操作数和第四操作数,所述第一操作数、第二操作数、第三操作数以及第四操作数均为16位定点数,所述乘积电路包括第一子电路和第二子电路;其中,
所述第一子电路,用于计算所述第一操作数与第四操作数的第一乘积结果、所述第二操作数与第三操作数的第二乘积结果、以及所述第二操作数与第四操作数的第三乘积结果;
所述第二子电路,用于对所述第一乘积结果、所述第二乘积结果和所述第三乘积结果进行移位并求和,得到所述定点乘法结果。
3.根据权利要求2所述的乘法电路,其中,所述第一操作数和所述三操作数为低16位定点数,所述第二操作数和所述第四操作数为高16位定点数;
所述第二子电路,进一步用于将所述第一乘积结果向左移16位得到第一移位结果、将所述第二乘积结果向左移16位得到第二移位结果以及将所述第三乘积结果向左移32位得到第三移位结果,并将所述第一移位结果、第二移位结果以及第三移位结果相加,得到所述定点乘法结果。
4.一种机器学习运算电路,包括:直接内存访问单元、存储单元以及至少一个如权利要求1-3任一项所述的乘法电路,其中,所述存储单元与所述直接内存访问单元和所述乘法电路电连接;
所述直接内存访问单元,用于将输入的第一初始矩阵和第二初始矩阵,分别转换为第一目标矩阵和第二目标矩阵,并将所述第一目标矩阵和所述第二目标矩阵发送至所述存储单元,其中,所述第一初始矩阵和所述第二初始矩阵中的元素均为浮点数,所述第一目标矩阵和所述第二目标矩阵中的元素均为定点数;
所述存储单元,用于根据预先配置的第一存储地址存储所述第一目标矩阵和所述第二目标矩阵;
所述乘法电路,用于根据所述第一存储地址,从所述存储单元获取所述第一目标矩阵和所述第二目标矩阵,并对所述第一目标矩阵和所述第二目标矩阵进行乘积计算,得到浮点形式的积矩阵。
5.根据权利要求4所述的机器学习运算电路,其中,所述直接内存单元包括浮点转换电路和数据拆分电路;其中,
所述浮点转换电路,用于将所述第一初始矩阵和第二初始矩阵,分别转换为第一中间矩阵和第二中间矩阵,其中,所述第一中间矩阵包括至少一个第一中间元素,所述第二中间矩阵包括至少一个第二中间元素,所述第一中间元素和第二中间元素均为32位定点数;
所述数据拆分电路用于,
将所述第一中间元素拆分为第一操作数和第二操作数,并将所述第一操作数和第二操作数作为所述第一目标矩阵中的一个第一目标元素;
将所述第二中间元素拆分为第三操作数和第四操作数,并将所述第三操作数和第四操作数作为所述第二目标矩阵中的一个第二目标元素;
其中,所述第一操作数、第二操作数、第三操作数以及第四操作数均为16位定点数。
6.根据权利要求5所述的机器学习运算电路,其中,所述数据拆分电路包括第三子电路和第四子电路;
所述第三子电路,用于将所述第一中间元素和所述第二中间元素分别与预设的二进制数执行按位与操作,得到第一操作数和第三操作数,其中,所述第一操作数和所述第三操作数为低16位定点数;
所述第四子电路,用于将所述第一中间元素和所述第二中间元素分别向右移16位得到所述第二操作数和第四操作数,其中,所述第二操作数和所述第四操作数为高16位定点数。
7.根据权利要求5所述的机器学习运算电路,其中,所述第一初始矩阵包括至少一个第一初始元素,所述第二初始矩阵包括至少一个第二初始元素,所述浮点转换电路包括第五子电路和第六子电路;其中,
所述第五子电路用于,
遍历全部第一初始元素,并将绝对值最大的第一初始元素的绝对值作为第一绝对值最大值;
遍历全部第二初始元素,并将绝对值最大的第二初始元素的绝对值作为第二绝对值最大值;
所述第六子电路用于,
根据所述第一绝对值最大值,将所述第一初始元素转换为所述第一中间元素,得到所述第一中间矩阵;
根据所述第二绝对值最大值,将所述第二初始元素转化为所述第二中间元素,得到所述第二中间矩阵。
8.根据权利要求7所述的机器学习运算电路,其中,
所述乘法电路还包括:符号位计算电路,用于对一个所述第一初始元素的符号位与一个所述第二初始元素的符号位执行按位异或操作,得到对应的定点乘法结果的符号位;
所述定点转换电路,进一步用于根据所述第一绝对值最大值、所述第二绝对值最大值以及所述定点乘法结果的符号位将所述定点乘法结果转换为所述浮点乘法结果。
9.根据权利要求4-7任一项所述的机器学习运算电路,其中,
所述存储单元,进一步用于根据预先分配的第二存储地址存储所述浮点形式的积矩阵;
所述直接内存访问单元,进一步用于根据所述第二存储地址获取并输出所述浮点形式的积矩阵。
10.一种数据处理方法,包括:
获取待计算的第一目标矩阵和第二目标矩阵,其中,所述第一目标矩阵包括至少一个第一目标元素,所述第二矩阵包括至少一个第二目标元素,所述第一目标元素和第二目标元素均包括两个16位定点数;
对一个所述第一目标元素与一个所述第二目标元素进行三次16位定点计算,得到定点乘法结果;
将所述定点乘法结果转换为浮点乘法结果;
基于矩阵乘法规则,将相应的浮点乘法结果相加,得到所述积矩阵中的一个积元素,其中,所述积矩阵为所述第一目标矩阵和第二目标矩阵进行乘积计算后得到的积矩阵。
11.根据权利要求10所述的数据处理方法,其中,所述第一目标元素包括第一操作数和第二操作数,所述第二目标元素包括第三操作数和第四操作数,所述第一操作数、第二操作数、第三操作数以及第四操作数均为16位定点数;
所述对一个所述第一目标元素与一个所述第二目标元素进行三次16位定点计算,得到定点乘法结果包括:
计算所述第一操作数与第四操作数的第一乘积结果、所述第二操作数与第三操作数的第二乘积结果、以及所述第二操作数与第四操作数的第三乘积结果;
对所述第一乘积结果、所述第二乘积结果和所述第三乘积结果进行移位并求和,得到所述定点乘法结果。
12.根据权利要求11所述的数据处理方法,其中,所述第一操作数和所述三操作数为低16位定点数,所述第二操作数和所述第四操作数为高16位定点数;
所述对所述第一乘积结果、所述第二乘积结果和所述第三乘积结果进行求和计算,得到所述定点乘法结果包括:
将所述第一乘积结果向左移16位得到第一移位结果、将第二乘积结果向左移16位得到第二移位结果以及将第三乘积结果向左移32位得到第三移位结果,并将所述第一移位结果、第二移位结果以及第三移位结果相加,得到所述定点乘法结果。
13.一种机器学习运算方法,包括:
将输入的第一初始矩阵和第二初始矩阵,分别转换为第一目标矩阵和第二目标矩阵,其中,所述第一初始矩阵和所述第二初始矩阵中的元素均为浮点数,所述第一目标矩阵和所述第二目标矩阵中的元素均为定点数;
根据预先配置的第一存储地址存储所述第一目标矩阵和第二目标矩阵;
根据所述第一存储地址,获取待计算的第一目标矩阵和第二目标矩阵,并利用权利要求10-12任一项所述的方法对第一目标矩阵和第二目标矩阵进行乘积计算,得到浮点形式的积矩阵。
14.根据权利要求13所述的机器学习运算方法,其中,所述将输入的第一初始矩阵和第二初始矩阵,分别转换为第一目标矩阵和第二目标矩阵包括:
将所述第一初始矩阵和第二初始矩阵,分别转换为第一中间矩阵和第二中间矩阵,其中,第一中间矩阵包括至少一个第一中间元素,所述第二中间矩阵包括至少一个第二中间元素,所述第一中间元素和第二中间元素均为32位定点数;
将所述第一中间元素拆分为第一操作数和第二操作数,并将所述第一操作数和第二操作数作为所述第一目标矩阵中的一个第一目标元素;
将所述第二中间元素拆分为第三操作数和第四操作数,并将所述第三操作数和第四操作数作为所述第二目标矩阵中的一个第二目标元素;
其中,所述第一操作数、第二操作数、第三操作数以及第四操作数均为16位定点数。
15.根据权利要求14所述的机器学习运算方法,其中,所述将所述第一中间元素拆分为第一操作数和第二操作数,以及将所述第二中间元素拆分为第三操作数和第四操作数,包括:
将所述第一中间元素和所述第二中间元素分别与预设的二进制数执行按位与操作,得到第二操作数和第四操作数,其中,所述第一操作数和所述第三操作数为低16位定点数;
将所述第一中间元素和第二中间元素分别向右移16位得到所述第二操作数和第四操作数,其中,所述第二操作数和所述第四操作数为高16位定点数。
16.根据权利要求14所述的机器学习运算方法,其中,所述第一初始矩阵包括至少一个第一初始元素,所述第二初始矩阵包括至少一个第二初始元素,所述将所述第一初始矩阵和第二初始矩阵,分别转换为定点形式的第一中间矩阵和第二中间矩阵包括:
遍历全部第一初始元素,并将绝对值最大的第一初始元素的绝对值作为第一绝对值最大值;
遍历全部第二初始元素,并将绝对值最大的第二初始元素的绝对值作为第二绝对值最大值;
根据所述第一绝对值最大值,将所述第一初始元素转换为所述第一中间元素,得到所述第一中间矩阵;
根据所述第二绝对值最大值,将所述第二初始元素转换为所述第二中间元素,得到所述第二中间矩阵。
17.根据权利要16求所述的机器学习运算方法,还包括:
对所述第一初始元素的符号位与所述第二初始元素的符号位执行按位异或操作,得到对应的定点乘法结果的符号位;
其中,将所述定点乘法结果转换为浮点乘法结果包括:
根据所述第一绝对值最大值、所述第二绝对值最大值以及所述定点乘法结果的符号位将所述定点乘法结果转换为所述浮点乘法结果。
18.根据权利要求13所述的机器学习运算方法,还包括:根据预先配置的第二存储地址存储所述浮点形式的积矩阵;
其中,在所述存储所述浮点形式的积矩阵之后,所述机器学习运算方法还包括:根据所述第二存储地址获取并输出所述浮点形式的积矩阵。
19.一种芯片,包括如权利要求4-9任一项所述的机器学习运算电路。
20.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求10-12或权利要求13-18中任一项所述的方法。
21.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行权利要求10-12或权利要求13-18中任一项所述的方法。
22.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现权利要求10-12或权利要求13-18中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210945735.6A CN115237372A (zh) | 2022-08-08 | 2022-08-08 | 一种乘法电路、机器学习运算电路、芯片及数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210945735.6A CN115237372A (zh) | 2022-08-08 | 2022-08-08 | 一种乘法电路、机器学习运算电路、芯片及数据处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115237372A true CN115237372A (zh) | 2022-10-25 |
Family
ID=83679131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210945735.6A Pending CN115237372A (zh) | 2022-08-08 | 2022-08-08 | 一种乘法电路、机器学习运算电路、芯片及数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115237372A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024108934A1 (zh) * | 2022-11-22 | 2024-05-30 | 中国科学院自动化研究所 | 乘加和的确定方法、装置、电子设备及存储介质 |
-
2022
- 2022-08-08 CN CN202210945735.6A patent/CN115237372A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024108934A1 (zh) * | 2022-11-22 | 2024-05-30 | 中国科学院自动化研究所 | 乘加和的确定方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106990937B (zh) | 一种浮点数处理装置和处理方法 | |
CN112506935B (zh) | 数据处理方法、装置、电子设备、存储介质及程序产品 | |
US10657442B2 (en) | Deep learning accelerator architecture with chunking GEMM | |
US10684825B2 (en) | Compressing like magnitude partial products in multiply accumulation | |
CN112241291A (zh) | 用于指数函数实施的浮点单元 | |
CN115237372A (zh) | 一种乘法电路、机器学习运算电路、芯片及数据处理方法 | |
CN112818387A (zh) | 模型参数调整的方法、设备、存储介质及程序产品 | |
WO2022057502A1 (zh) | 点积运算实现方法、装置、电子设备及存储介质 | |
CN112835551B (zh) | 用于处理单元的数据处理方法、电子设备和计算机可读存储介质 | |
US20150269121A1 (en) | Arithmetic operation in a data processing system | |
JP7320582B2 (ja) | ニューラルネットワークの積和演算方法及び装置 | |
CN116700664B (zh) | 一种确定浮点数平方根的方法及装置 | |
CN116700666A (zh) | 一种浮点数处理方法及装置 | |
WO2019127480A1 (zh) | 用于处理数值数据的方法、设备和计算机可读存储介质 | |
CN115292662B (zh) | 一种卷积加速运算方法、装置、电子设备及存储介质 | |
CN115511047B (zh) | Softmax模型的量化方法、装置、设备及介质 | |
JP2023103419A (ja) | 演算方法、装置、チップ、電子機器及び記憶媒体 | |
WO2022047873A1 (zh) | 除法运算方法、装置、电子设备和介质 | |
CN117973470A (zh) | 数据处理装置、方法、芯片、设备和存储介质 | |
CN116700665B (zh) | 一种确定浮点数平方根倒数的方法及装置 | |
CN115237991A (zh) | 数据格式转换的方法、装置及矩阵处理的方法、装置 | |
CN115237992A (zh) | 数据格式转换的方法、装置及矩阵处理的方法、装置 | |
CN116661735A (zh) | 数据处理装置、方法、电子设备和存储介质 | |
CN117251134A (zh) | 神经网络的数据处理方法、装置、存储介质与电子设备 | |
CN115951860A (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 |