CN112835551A - 用于处理单元的数据处理方法、电子设备和计算机可读存储介质 - Google Patents
用于处理单元的数据处理方法、电子设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN112835551A CN112835551A CN202110258250.5A CN202110258250A CN112835551A CN 112835551 A CN112835551 A CN 112835551A CN 202110258250 A CN202110258250 A CN 202110258250A CN 112835551 A CN112835551 A CN 112835551A
- Authority
- CN
- China
- Prior art keywords
- exponent
- floating point
- value
- clock cycle
- processing unit
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 13
- 239000013598 vector Substances 0.000 claims abstract description 91
- 238000000034 method Methods 0.000 claims abstract description 26
- 230000004044 response Effects 0.000 claims abstract description 10
- 238000010606 normalization Methods 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 description 23
- 230000008569 process Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000010365 information processing Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
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
- 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/544—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 for evaluating functions by calculation
- G06F7/556—Logarithmic or exponential functions
-
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4876—Multiplying
-
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—Adding; Subtracting
-
- 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/544—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 for evaluating functions by calculation
- G06F7/5443—Sum of products
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
- Image Generation (AREA)
Abstract
本公开的实施例涉及用于处理数据的方法,涉及计算机领域。方法包括:在第m个时钟周期,确定第一指数值;在第m+1个时钟周期,将两个n维向量输入到处理单元中以用于确定n个第二指数值,第二指数值是一个n维向量中的一个浮点数的指数与另一n维向量中的相应浮点数的指数之和;确定第一指数值和所确定的n个第二指数值中的最大值;确定n个第二指数值中是否存在目标第二指数值,目标第二指数值与最大值之间的差的绝对值大于或者等于第一阈值;以及响应于确定存在目标第二指数值,则在m+1时钟周期期间,不执行与目标第二指数值相对应的两个浮点数的乘法运算。通过本公开的数据处理方法,能够在处理单元中省略到一些数据的乘法运算,因此节省功耗。
Description
技术领域
本公开的实施例涉及一种信息处理领域,尤其是用于处理单元的数据处理方法、电子设备和计算机可读存储介质。
背景技术
通用矩阵乘法(GEMM)算术逻辑单元(ALU)在计算密集型计算(例如各种AI应用程序)中起着核心作用。脉动阵列已成为大规模GEMM ALU的最新实现方式。在脉动阵列的基本处理单元中,通常执行融合的乘法和加法运算,也就是两个向量的点积运算。为了在每个基本处理单元中实现融合的乘法和加法运算,在该基本处理单元中,需要执行大量的乘法和这些乘法结果的加法运算。
传统的用于处理单元的数据处理方案,难以有效解决大型脉动阵列的功耗高这一设计瓶颈。
发明内容
本公开提供了一种用于处理单元的数据处理方法、电子设备和计算机可读存储介质,能够有效节省处理单元(特别基于脉动阵列的处理单元)的计算资源,降低算术运算单元的功耗。
根据本公开的一个方面,提供用于处理单元的数据处理方法,包括:在第m个时钟周期,确定作为在处理单元中执行的第一点积运算的结果的浮点数的第一指数值,m为大于或者等于1的正整数;在第m+1个时钟周期,将两个n维向量输入到处理单元中以用于确定n个第二指数值,第二指数值是通过两个n维向量中的一个n维向量中的一个浮点数的指数与另一n维向量中的相应浮点数的指数相加而获得的,n为大于等于1的正整数;确定第一指数值和所确定的n个第二指数值中的最大值;确定n个第二指数值中是否存在目标第二指数值,目标第二指数值与最大值之间的差的绝对值大于或者等于第一阈值;以及响应于确定n个第二指数值中存在目标第二指数值,则在m+1时钟周期期间,在处理单元中,不执行与目标第二指数值相对应的两个浮点数的乘法运算。
根据本公开的二个方面,提供一种电子设备,该电子设备包括:处理器;以及与处理器耦合的存储器,存储器具有存储于其中的指令,指令在被处理器执行时使电子设备执行动作,动作包括:在第m个时钟周期,确定作为在处理单元中执行的第一点积运算的结果的浮点数的第一指数值,m为大于或者等于1的正整数;在第m+1个时钟周期,将两个n维向量输入到处理单元中以用于确定n个第二指数值,第二指数值是通过两个n维向量中的一个n维向量中的一个浮点数的指数与另一n维向量中的相应浮点数的指数相加而获得的,n为大于等于1的正整数;确定第一指数值和所确定的n个第二指数值中的最大值;确定n个第二指数值中是否存在目标第二指数值,目标第二指数值与最大值之间的差的绝对值大于或者等于第一阈值;以及响应于确定n个第二指数值中存在目标第二指数值,则在m+1时钟周期期间,在处理单元中,不执行与目标第二指数值相对应的两个浮点数的乘法运算。
根据本公开的三个方面,提供一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令被机器执行时实现本公开第一方面的所述方法。
根据本公开的一个实施例,响应于确定n个第二指数值中不存在目标第二指数值,则在第m+1个时钟周期期间,在处理单元中,可以执行针对两个n维向量中的所有数据的乘法运算。
根据本公开的一个实施例,处理单元可以包括寄存器;以及第一阈值与存储在寄存器中的浮点数的尾数的位数的差的绝对值可以小于第二阈值。
根据本公开的一个实施例,第一指数值可以经由以下方式获得:在第m个时钟周期,将第一n维向量和第二n维向量输入至处理单元中,以用于执行第一点积运算而得到第一点积运算结果的浮点数;针对第一点积运算结果的浮点数进行归一化处理,以得到第一指数值。
根据本公开的一个实施例,执行第一点积运算而得到第一点积运算结果的浮点数可以包括:将来自第一n维向量的i个数据分别与来自第二n维向量的相应的i个数据相乘,以得到i个浮点数,i=0,1,2……n;对i个浮点数以及第m-1个时钟周期中的点积计算所得的浮点数中的至少两个浮点数进行对阶处理;以及对经对阶处理的浮点数进行求和,以得到在第m个时钟周期中的第一点积运算结果的浮点数。
根据本公开的一个实施例,在第m+1个时钟周期执行的运算的结果的浮点数的指数值可以确定为与在第m+2个时钟周期中确定的n个第二指数值进行比较的第一指数值。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素,其中:
图1示出了本公开的多个实施例能够在其中实现的示例环境的示意图;
图2示出了根据本公开的一个实施例的用于处理数据的方法的流程图;以及
图3示出了能够实施本公开的多个实施例的计算设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如前所述,通用矩阵乘法(GEMM)算术逻辑单元(ALU)在各种AI应用程序中起到核心作用。脉动阵列已成为大规模GEMM ALU的最新实现方式。脉动阵列通常包括n*n个处理单元,在每个处理单元中执行一个n维向量和另一个n维向量的点积运算,也就是一个n维向量的n个数据分别与另一个n维向量的n个数据相乘以得到n个乘法结果,并且对这n个乘法结果进行加法运算。在n的数值较大时,也就是说脉动阵列的规模较大时,在每个时钟周期下需要在每个基本处理单元中实现融合的乘法和加法运算,因此导致消耗较多计算资源和功耗,这成为算术逻辑单元设计的瓶颈。
鉴于上述的算术逻辑单元的缺点,需要一种能够降低处理单元的功耗的数据处理的方法。本公开提供一种用于处理单元的数据处理的方案。该数据处理方法包括:在第m个时钟周期,确定作为在处理单元中执行的第一点积运算的结果的浮点数的第一指数值,m为大于或者等于1的正整数;在第m+1个时钟周期,将两个n维向量输入到处理单元中以用于确定n个第二指数值,第二指数值是通过两个n维向量中的一个n维向量中的一个浮点数的指数与另一n维向量中的相应浮点数的指数相加而获得的,n为大于等于1的正整数;确定第一指数值和所确定的n个第二指数值中的最大值;确定n个第二指数值中是否存在目标第二指数值,目标第二指数值与最大值之间的差的绝对值大于或者等于第一阈值;以及响应于确定n个第二指数值中存在目标第二指数值,则在m+1时钟周期期间,在处理单元中,不执行与目标第二指数值相对应的两个浮点数的乘法运算。
利用本公开的方案在对相邻的两个时钟周期的下一个时钟周期的数据进行点积运算之前,预先判定是否存在目标第二指数值,并且在确定存在目标第二指数值时,则在下一个时钟周期使得处理单元不执行与目标第二指数值相对应的两个浮点数的乘法运算,从而跳过对非必要执行的数据的乘法运算。由于在一个时钟周期下,仅仅对部分数据执行运算,而没有必要对所有的数据都执行运算,所以能够显著地节省计算资源,降低算术运算单元的功耗。
以下将参照附图来具体描述本公开的实施例。
示例环境
图1示出了本公开的多个实施例能够在其中实现的示例环境100的示意图。示例环境100中的计算设备102可以是任何具有计算能力的设备。作为非限制性示例,计算设备102可以是任意类型的固定计算设备、移动计算设备或便携式计算设备,包括但不限于台式计算机、膝上型计算机、笔记本计算机、上网本计算机、平板计算机、多媒体计算机、移动电话等;计算设备102的全部组件或一部分组件可以分布在云端。
在该示例环境100中,计算设备102包括或部署有定时模块103、运算模块104和比较模块105,计算设备102是基于脉动阵列的处理单元。待处理的矩阵A和B被输入到计算设备102中,矩阵A和B经过计算设备102的处理之后,输出矩阵A和矩阵B中的数据的乘加运算的结果。下文相对于计算设备102描述的动作具体可以由定时模块103、运算模块104和比较模块105执行。
运算模块104可以包括第一源寄存器1041、第二源寄存器1042、目的寄存器1043以及计算单元1044。第一源寄存器1041被配置为存储待被输入到计算单元1044中的数据,第二源寄存器1042被配置存储待被输入到计算单元1044中的其他数据。目的寄存器1043用于存储计算单元1044的计算结果。在一个实施例中,该计算结果可以以浮点数的形式被存储,并且该浮点数的尾数具有特定数目的位数,例如而不限于16位等。被存储在目的寄存器1043中的浮点数的尾数的位数可以根据实际的人工智能应用情况而改变。计算单元1044被配置为执行数据的乘加运算,也就是上文所描述的点积运算。
定时模块103可以被配置为向第一源寄存器1041和第二源寄存器1042发出时钟控制信号,从而在第一时钟周期中,第一源寄存器1041将第一向量输入到计算单元1044中,第二源寄存器1042将第二向量输入到计算单元1044中;并且在第二时钟周期中,第一源寄存器1041将第三向量输入到计算单元1044中,第二源寄存器1042将第四向量输入到计算单元1044中。本公开的一个实施例中,各个向量可以都是n维向量,包括n个数据,这些数据可以是浮点数,n为大于等于1的正整数。
计算单元1044在第一时钟周期中执行第一向量和第二向量的点积运算,以得到该运算结果的浮点数的第一指数值,该第一指数值即运算结果的浮点数归一化之后的指数值。计算单元1044将该第一指数值输入到比较模块105中以用于后续的比较。第三n维向量和第四n维向量组成n个数据对。在第二时钟周期中,在执行第三n维向量和第四n维向量的点积运算之前,计算单元1044预先计算这n个数据对中的每个数据对的两个浮点数的指数之和,该指数之和称为第二指数值。
第一向量和第三向量可以包括来自矩阵A的相应行的一个或多个数据,并且第二向量和第四向量可以包括来自矩阵B的相应列的一个或多个数据。该第一时钟周期是两个相邻时钟周期中的前一个时钟周期,第二时钟周期是这两个相邻时钟周期中的后一个时钟周期,而并非所有时钟周期中起始的两个时钟周期。在第一时钟周期之前也存在更早的时钟周期,在第二时钟周期之后还存在更晚的时钟周期。在
由于各个向量都具有n个数据,那么相应的一对向量构成n个数据对,每个数据对包括两个浮点数,将两个浮点数的指数相加可以得到一个指数和,针对两个n维向量可以得到n个指数之和,即n个第二指数值。比较模块105被配置为:将作为第一时钟周期的运算结果的浮点数的第一指数值与针对第二时钟周期的n个数据对的n个第二指数值进行比较,以得到一个最大的指数值,也就是说将上述的n+1个指数值进行比较,以得到其中的最大指数值。该比较模块105还被配置为:将该最大指数值与n个第二指数值分别进行比较,在确定某个第二指数值与该最大指数值的差大于或等于一阈值时,省略或跳过与该第二指数值相对应的一个数据对的两个浮点数的乘法运算。
在一个实施例中,该阈值可以是存储在目的寄存器1043中浮点数的尾数的被保留的位数。但是本领域的技术人员可以理解,在其他实施例中,根据实际应用情况,该阈值也可以是存储在目的寄存器1043中浮点数的尾数被保留的位数之外的其他数值,或者与存储在目的寄存器1043中浮点数的尾数的位数的差小于第二阈值。该第二阈值可以根据实际应用情况而改变。
以下将举例说明定时模块103、运算模块104和比较模块105执行的操作。在该示例中,在第一时周期,定时模块103发出控制信号,使得第一源寄存器1041中存储的第一向量A1=[a0,a1,a2,a3,a4,a5,a6,a7]和第二源寄存器1042中存储的第二向量B1=[b0,b1,b2,b3,b4,b5,b6,b7]被输入到计算单元1044中。在计算单元1044中,执行第一向量和第二向量的点积运算,该点积运算公式(1)所示:
A1·B1=a0*b0+a1*b1+……a7*b7 公式(1)
执行点积运算的步骤包括对数据对(a0,b0)、(a1,b1)、(a2,b2)、(a3,b3)、(a4,b4)、(a5,b5)、(a6,b6)和(a7,b7)中一个或多个数据对的两个浮点数进行乘法运算。这里以执行8个乘法运算作为示例来解释点积运算的过程,但是在该第一时钟周期中也执行下面将具体描述的预先判定,实际上在第一时钟周期中,可能仅执行一部分数据对的乘法运算,也可能不执行任何数据对的乘法运算,也即是说跳过或省略一部分数据对或全部数据对的乘法运算。
由于向量A1和向量B1中的浮点数的指数不同,因此作为乘法结果的8个浮点数的指数不相同。执行点积运算的步骤还包括对上述得到的8个浮点数进行对阶处理。在一个实施例中,在执行对阶处理时,可以先对8个浮点数中的两个浮点数进行对阶处理以得到一个加法结果,然后对该加法结果与下一个浮点数进行对阶处理,然后再进行加法运算,依次类推,对其他浮点数的加法运算执行相同的处理,以得到加法运算的最终结果。为了得到上述的第一指数值,也就是将与下一周期的8个第二指数值进行比较的第一指数值,对上述的点积运算的结果进行规格化,将规格化之后的浮点数的指数值作为第一指数值。
在第二时钟周期,定时模块103发出控制信号,使得第一源寄存器1041中存储的第三向量A2=[a8,a9,a10,a11,a12,a13,a14,a15]和第二源寄存器1042中存储的第四向量B2=[b8,b9,b10,b11,b12,b13,b14,b15]被输入到计算单元1044中。来自第三向量和第四向量的数据构成8个数据对(a9,b9)、(a9,b9)、(a10,b10)、(a11,b11)、(a12,b12)、(a13,b13)、(a14,b14)和(a15,b15)。针对这8个数据对,可以得到8个第二指数值,每个第二指数值是一对数据中的两个浮点数的指数之和。
在一个示例中,第一指数值为64,存储在目的寄存器1043中的浮点数的尾数的位数为32位,且第二时钟周期中的来自第三向量和第四向量的一个数据对的第二指数值为16,那么第一指数值(其为64)和该第二指数值(其为16)中的最大值为64,且该第二指数值和最大指数值之间的差的绝对值为48>32,因此在第二时钟周期,在该计算单元1044中,无需针对该数据对执行乘法运算,即跳过针对该数据对的乘法运算。不针对该数据对执行乘法运算的原因如下:存储在目的寄存器中的浮点数的尾数的位数为32,那么表示在该数据对的乘法结果的浮点数(指数为16的浮点数)与第一时钟周期得到的指数为64的浮点数进行相加时,该数据对的乘法结果的浮点数必须移位48位,移位的位数大于32位,那么移位之后的浮点数的相应尾数对于寄存器中的浮点数的32位尾数的而言不可见或为零,因此可以将该数据对的乘法结果设置为0,即不执行该数据对的乘法运算。
数据处理的示例过程
为了更清楚地理解本公开的实施例所提供的用于基于脉动阵列的处理单元的数据处理的方法,将参照图2来进一步描述本公开的实施例。图2示出了根据本公开的一些实施例的用于处理单元的数据处理的过程200的流程图。过程200可以由图1的计算设备102实现。为便于讨论,将结合图1来描述过程200。
在框210,在第m个时钟周期,运算模块104确定作为在处理单元中执行的第一点积运算的结果的浮点数的第一指数值,其中m为大于或者等于1的正整数。该第m个时钟周期是相邻两个时钟周期中的前一个时钟周期。
在该第m个时钟周期,定时模块103向第一源寄存器1041和第二源寄存器1042发出时钟控制信号,从而使得第一源寄存器1041将第一n维向量输入到计算单元1044中,第二源寄存器1042将第二n维向量输入到计算单元1044中,以用于执行第一点积运算而得到第一点积运算结果的浮点数。在该时钟周期中执行的第一点积运算的乘法运算的次数最多为第一n维向量或第二n维向量中的数据的数目n。
在本公开的一个实施例中,所执行的第一点积运算包括:来自第一n维向量的i个数据分别与来自第二n维向量的相应的i个数据相乘,以得到i个浮点数,i=0,1,2……n。在i=0时,表示在该时钟周期不需要执行输入的向量的点积运算,那么在该时钟周期,所执行的第一点积运算就是对上一时钟周期的运算结果的浮点数进行处理。在i=1,2……n-1时,表示在该时钟周期执行输入的向量的一部分数据而非全部数据的点积运算。在该示例中,所执行的点积运算还包括:对所得到的i个浮点数以及第m-1个时钟周期中的点积计算所得的浮点数中的至少两个浮点数进行对阶处理。也就是说,对于i+1个浮点数中的前两个数进行对阶处理,以进行浮点数的加法运算。然后将该加法运算的结果与下一个浮点数进行对阶处理。依次类推,直到完成对所有浮点数的对阶处理和加法运算。对阶处理包括基于两个浮点数的指数中的较大指数对具有较小指数的浮点数的尾数进行移位,以使得两个浮点数具有相同的指数或阶码,然后将两个浮点数的尾数进行相加。在该示例中,所执行的点积运算还包括:对经对阶处理的浮点数进行求和,以得到在第m个时钟周期中的所述第一点积运算结果的浮点数。最终加法运算的结果是多少个浮点数这取决于处理器的操作。浮点数的加法和对阶处理按照CSA树的方式执行,这是本领域的技术人员所熟知的,这里不再赘述。
在本公开的一个实施例中,第一指数值是通过对第一点积运算结果的浮点数进行归一化处理而获得的。在浮点数的尾数的小数点后的前j位不是1的情况下,对尾数进行移位且改变该浮点数的阶码或指数,直到该浮点数的尾数的小数点后的第1位为1,上述的过程即归一化处理。在本公开的另一实施例中,在对经对阶处理的浮点数进行求和得到的浮点数的小数点后的第1位为1的情况下,不需要对加和所得到的浮点数进行归一化处理。归一化处理是本领域的技术人员所熟知的,这里不再赘述。
在框220,在第m+1个时钟周期,将两个n维向量输入到处理单元中以用于确定n个第二指数值。在第m+1个时钟周期,定时模块103向第一源寄存器1041和第二源寄存器1042发出时钟控制信号,从而使得第一源寄存器1041将第三n维向量输入到计算单元1044中,第二源寄存器1042将第四n维向量输入到计算单元1044中。计算单元1044将第三n维向量中的一个浮点数的指数与第四n维向量中的相应浮点数的指数相加而获得一个第二指数值。在第m+1个时钟周期,在执行这些向量中的浮点数的乘加运算之前,先计算来自第三n维向量的一个浮点数的指数和来自第四n维向量的相应浮点数的指数的和。例如,来自第三n维向量的一个浮点数是该向量中的第1个浮点数,那么来自第四n维向量的浮点数也应该是该第四n维向量中的第1个浮点数。每个以二进制表示的浮点数都有相应的指数,将两个浮点数的指数进行相加的运算需要耗费的计算资源很小。
在框230,比较模块确定第一指数值和所确定的n个第二指数值中的最大值。
在框240,确定n个第二指数值中是否存在目标第二指数值,该目标第二指数值与最大值之间的差的绝对值大于或者等于第一阈值。在本公开的优选实施例中,该第一阈值是存储在目的寄存器1043中的浮点数的尾数的位数,在该尾数的位数为32位的情况下,该第一阈值即32。在本公开的其他实施例中,该第一阈值与存储在寄存器中的浮点数的尾数的位数的差的绝对值小于第二阈值。该第二阈值可以根据实际应用情况而设定。在要求精度较高时,该第二阈值可以为0或1。在所确定的最大值为64且n个第二指数值都为16的情况下,最大值和第二指数值之间的差的绝对值为48,且大于32。
如果在框240中确定存在目标第二指数值,则过程进行到框250。响应于确定n个第二指数值中存在目标第二指数值,在框250,在m+1时钟周期期间,在处理单元中,不执行与该目标第二指数值相对应的两个浮点数的乘法运算。该目标第二指数值的数目可以为0至n中的任一个整数。在一个示例中,所确定的最大值为64,且第一阈值是存储在目的寄存器1043中的浮点数的尾数的保留位数为32,n对数据中的仅一对数据的第二指数值与最大值64之间的差的绝对值大于或等于32,那么针对该对数据不执行乘法运算。在一个示例中,所确定的最大值为64,且第一阈值是存储在目的寄存器1043中的浮点数的尾数的保留位数为32,n个第二指数值都为16,最大值和第二指数值之间的差的绝对值为48,且大于32。在该示例中,在第m+1个时钟周期,对于输入的第三n维向量和第四n维向量的所有浮点数都不执行乘法运算。
如果在框240中确定不存在目标第二指数值,则过程进行到框260。响应于确定n个第二指数值中不存在目标第二指数值,则在框260中,在第m+1个时钟周期期间,在处理单元中,执行针对两个n维向量中的所有数据的乘法运算。也就是说,在这种情况下,在第m+1个时钟周期中,针对输入到处理单元中的两个n维向量所形成的n个数据对中的每个数据对,都执行相应的两个浮点数的乘法运算。在一个示例中,所确定的最大值为64,且第一阈值是存储在目的寄存器1043中的浮点数的尾数的保留位数为32,n个第二指数值都为33,最大值和第二指数值之间的差的绝对值为31,且小于32。在该示例中,对于输入的第三n维向量和第四n维向量的所有浮点数都执行乘法运算。
在本公开的用于处理数据的方法中,因为在执行新输入的向量的点积运算之前,先判定这些向量形成的多对数据的指数之和与所确定的最大值之间的差的绝对值是否大于或等于一阈值,在大于该阈值的情况下,忽略针对该对数据的乘法运算。因此,通过上述的预先判定可以节省很多计算资源。通过本申请的发明人的统计,由于数据的指数存在很大的差异,在人工智能领域的70%的数据都可以通过这种预先判定而省略对其的乘法运算,因此能够相当大程度地节省计算资源。
在本公开的实施例中,虽然描述了在第m+1个周期执行上述的预先判定,但是并不表示在第m个周期不执行上述的预先判定。在在第m个周期也执行上述的预先判定,只是其中的第二指数值是输入到其中的第一n维向量和第二n维向量的相应一个数据对的两个指数的指数之和,并且第一指数值是在第m-1个周期中执行的运算的结果的浮点数的第一指数值。此外,将在第m+1个时钟周期执行的运算的结果的浮点数的指数值确定与在第m+2个时钟周期中确定的n个第二指数值进行比较的第一指数值,以在第m+2个时钟周期中从该第一指数值和n个第二指数值中找到最大指数值。
示例设备
图3示出了可以用来实施本公开的实施例的示例设备300的示意性框图。设备300可以用于实现图1的计算设备102。如图所示,设备300包括中央处理器(CPU)301,其可以根据存储在只读存储器(ROM)302中的计算机程序指令或者从存储单元308加载到随机访问存储器(RAM)303中的计算机程序指令,来执行各种适当的动作和处理。在RAM 303中,还可存储设备300操作所需的各种程序和数据。CPU 301、ROM 302以及RAM 303通过总线304彼此相连。输入/输出(I/O)接口305也连接至总线304。
设备300中的多个部件连接至I/O接口305,包括:输入单元306,例如键盘、鼠标等;输出单元307,例如各种类型的显示器、扬声器等;存储单元308,例如磁盘、光盘等;以及通信单元309,例如网卡、调制解调器、无线通信收发机等。通信单元309允许设备300通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器301执行上文所描述的各个方法和处理,例如过程200。例如,在一些实施例中,过程200可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元308。在一些实施例中,计算机程序的部分或者全部可以经由ROM 302和/或通信单元309而被载入和/或安装到设备300上。当计算机程序加载到RAM 303并由CPU 301执行时,可以执行上文描述的过程200的一个或多个步骤。备选地,在其他实施例中,CPU 301可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行过程200。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上***的***(SOC)、负载可编程逻辑设备(CPLD)等等。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (8)
1.一种用于处理单元的数据处理方法,包括:
在第m个时钟周期,确定作为在所述处理单元中执行的第一点积运算的结果的浮点数的第一指数值,m为大于或者等于1的正整数;
在第m+1个时钟周期,将两个n维向量输入到所述处理单元中以用于确定n个第二指数值,所述第二指数值是通过两个n维向量中的一个n维向量中的一个浮点数的指数与另一n维向量中的相应浮点数的指数相加而获得的,n为大于等于1的正整数;
确定所述第一指数值和所确定的n个第二指数值中的最大值;
确定所述n个第二指数值中是否存在目标第二指数值,所述目标第二指数值与所述最大值之间的差的绝对值大于或者等于第一阈值;以及
响应于确定所述n个第二指数值中存在所述目标第二指数值,则在所述m+1时钟周期期间,在所述处理单元中,不执行与所述目标第二指数值相对应的两个浮点数的乘法运算。
2.根据权利要求1所述的数据处理方法,其中响应于确定所述n个第二指数值中不存在所述目标第二指数值,则在所述第m+1个时钟周期期间,在所述处理单元中,执行针对所述两个n维向量中的所有数据的乘法运算。
3.根据权利要求1所述的数据处理方法,其中所述处理单元包括寄存器;以及
所述第一阈值与存储在所述寄存器中的浮点数的尾数的位数的差的绝对值小于第二阈值。
4.根据权利要求1所述的数据处理方法,其中所述第一指数值经由以下方式获得:
在第m个时钟周期,将第一n维向量和第二n维向量输入至所述处理单元中,以用于执行所述第一点积运算而得到第一点积运算结果的浮点数;
针对所述第一点积运算结果的浮点数进行归一化处理,以得到所述第一指数值。
5.根据权利要求4所述的数据处理方法,其中执行所述第一点积运算而得到第一点积运算结果的浮点数包括:
将来自所述第一n维向量的i个数据分别与来自所述第二n维向量的相应的i个数据相乘,以得到i个浮点数,i=0,1,2……n;
对所述i个浮点数以及第m-1个时钟周期中的点积计算所得的浮点数中的至少两个浮点数进行对阶处理;以及
对经对阶处理的浮点数进行求和,以得到在第m个时钟周期中的所述第一点积运算结果的浮点数。
6.根据权利要求2所述的数据处理方法,其中将在所述第m+1个时钟周期执行的运算的结果的浮点数的指数值确定为与在第m+2个时钟周期中确定的n个第二指数值进行比较的第一指数值。
7.一种电子设备,包括:
处理器;以及
与所述处理器耦合的存储器,所述存储器具有存储于其中的指令,所述指令在被处理器执行时使所述电子设备执行动作,所述动作包括:
在第m个时钟周期,确定作为在所述处理单元中执行的第一点积运算的结果的浮点数的第一指数值,m为大于或者等于1的正整数;
在第m+1个时钟周期,将两个n维向量输入到所述处理单元中以用于确定n个第二指数值,所述第二指数值是通过两个n维向量中的一个n维向量中的一个浮点数的指数与另一n维向量中的相应浮点数的指数相加而获得的,n为大于等于1的正整数;
确定所述第一指数值和所确定的n个第二指数值中的最大值;
确定所述n个第二指数值中是否存在目标第二指数值,所述目标第二指数值与所述最大值之间的差的绝对值大于或者等于第一阈值;以及
响应于确定所述n个第二指数值中存在所述目标第二指数值,则在所述m+1时钟周期期间,在所述处理单元中,不执行与所述目标第二指数值相对应的两个浮点数的乘法运算。
8.一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令被机器执行时实现权利要求1-6中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110258250.5A CN112835551B (zh) | 2021-03-09 | 2021-03-09 | 用于处理单元的数据处理方法、电子设备和计算机可读存储介质 |
US17/690,014 US20220291901A1 (en) | 2021-03-09 | 2022-03-09 | Data processing method for processing unit, electronic device and computer readable storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110258250.5A CN112835551B (zh) | 2021-03-09 | 2021-03-09 | 用于处理单元的数据处理方法、电子设备和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112835551A true CN112835551A (zh) | 2021-05-25 |
CN112835551B CN112835551B (zh) | 2022-06-28 |
Family
ID=75929953
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110258250.5A Active CN112835551B (zh) | 2021-03-09 | 2021-03-09 | 用于处理单元的数据处理方法、电子设备和计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220291901A1 (zh) |
CN (1) | CN112835551B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113703717A (zh) * | 2021-08-31 | 2021-11-26 | 南京英锐创电子科技有限公司 | 二进制浮点数乘法运算方法、电路及计算装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220309126A1 (en) * | 2021-03-26 | 2022-09-29 | Advanced Micro Devices, Inc. | Approximation of matrices for matrix multiply operations |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7225216B1 (en) * | 2002-07-09 | 2007-05-29 | Nvidia Corporation | Method and system for a floating point multiply-accumulator |
CN105335127A (zh) * | 2015-10-29 | 2016-02-17 | 中国人民解放军国防科学技术大学 | Gpdsp中支持浮点除法的标量运算单元结构 |
US20170185379A1 (en) * | 2015-12-23 | 2017-06-29 | Intel Corporation | Fused Multiply-Add (FMA) low functional unit |
CN108292219A (zh) * | 2015-12-23 | 2018-07-17 | 英特尔公司 | 浮点(fp)加法低指令功能单元 |
CN108874744A (zh) * | 2017-05-08 | 2018-11-23 | 辉达公司 | 矩阵乘积累加运算的广义加速 |
CN110221808A (zh) * | 2019-06-03 | 2019-09-10 | 深圳芯英科技有限公司 | 向量乘加运算的预处理方法、乘加器及计算机可读介质 |
CN111813371A (zh) * | 2020-07-28 | 2020-10-23 | 上海赛昉科技有限公司 | 数字信号处理的浮点除法运算方法、***及可读介质 |
CN111984224A (zh) * | 2020-08-24 | 2020-11-24 | 中国海洋大学 | 用于auv运动控制器的浮点数乘加ip核及控制方法 |
CN112088354A (zh) * | 2018-05-08 | 2020-12-15 | 微软技术许可有限责任公司 | 使用共享指数的块浮点计算 |
-
2021
- 2021-03-09 CN CN202110258250.5A patent/CN112835551B/zh active Active
-
2022
- 2022-03-09 US US17/690,014 patent/US20220291901A1/en active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7225216B1 (en) * | 2002-07-09 | 2007-05-29 | Nvidia Corporation | Method and system for a floating point multiply-accumulator |
CN105335127A (zh) * | 2015-10-29 | 2016-02-17 | 中国人民解放军国防科学技术大学 | Gpdsp中支持浮点除法的标量运算单元结构 |
US20170185379A1 (en) * | 2015-12-23 | 2017-06-29 | Intel Corporation | Fused Multiply-Add (FMA) low functional unit |
CN108292219A (zh) * | 2015-12-23 | 2018-07-17 | 英特尔公司 | 浮点(fp)加法低指令功能单元 |
CN108431771A (zh) * | 2015-12-23 | 2018-08-21 | 英特尔公司 | 融合乘加(fma)低功能单元 |
CN108874744A (zh) * | 2017-05-08 | 2018-11-23 | 辉达公司 | 矩阵乘积累加运算的广义加速 |
CN112088354A (zh) * | 2018-05-08 | 2020-12-15 | 微软技术许可有限责任公司 | 使用共享指数的块浮点计算 |
CN110221808A (zh) * | 2019-06-03 | 2019-09-10 | 深圳芯英科技有限公司 | 向量乘加运算的预处理方法、乘加器及计算机可读介质 |
CN111813371A (zh) * | 2020-07-28 | 2020-10-23 | 上海赛昉科技有限公司 | 数字信号处理的浮点除法运算方法、***及可读介质 |
CN111984224A (zh) * | 2020-08-24 | 2020-11-24 | 中国海洋大学 | 用于auv运动控制器的浮点数乘加ip核及控制方法 |
Non-Patent Citations (1)
Title |
---|
高静等: "基于粗粒度可重构处理器的浮点乘加算法", 《天津大学学报(自然科学与工程技术版)》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113703717A (zh) * | 2021-08-31 | 2021-11-26 | 南京英锐创电子科技有限公司 | 二进制浮点数乘法运算方法、电路及计算装置 |
CN113703717B (zh) * | 2021-08-31 | 2024-01-26 | 南京英锐创电子科技有限公司 | 二进制浮点数乘法运算电路及其控制方法、计算装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112835551B (zh) | 2022-06-28 |
US20220291901A1 (en) | 2022-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9519460B1 (en) | Universal single instruction multiple data multiplier and wide accumulator unit | |
CN110168493B (zh) | 在128位宽的操作数上的融合乘加浮点运算 | |
US20220291901A1 (en) | Data processing method for processing unit, electronic device and computer readable storage medium | |
JPH10214176A (ja) | 超越関数を迅速に計算する装置 | |
US10095475B2 (en) | Decimal and binary floating point rounding | |
EP3769208B1 (en) | Stochastic rounding logic | |
US7991811B2 (en) | Method and system for optimizing floating point conversion between different bases | |
CN112463112B (zh) | 点积累加方法及装置 | |
US5341320A (en) | Method for rapidly processing floating-point operations which involve exceptions | |
CN112241291A (zh) | 用于指数函数实施的浮点单元 | |
US6182100B1 (en) | Method and system for performing a logarithmic estimation within a data processing system | |
USH1222H (en) | Apparatus for determining sticky bit value in arithmetic operations | |
US20230161555A1 (en) | System and method performing floating-point operations | |
JP2020067897A (ja) | 演算処理装置、学習プログラム及び学習方法 | |
CN113986194A (zh) | 基于预处理的神经网络近似乘法器实现方法及装置 | |
CN108229668B (zh) | 基于深度学习的运算实现方法、装置和电子设备 | |
CN112860218A (zh) | 用于fp16浮点数据和int8整型数据运算的混合精度运算器 | |
US20140149481A1 (en) | Decimal Multi-Precision Overflow and Tininess Detection | |
CN115291834B (zh) | N进制浮点加法运算***与方法 | |
US20230185528A1 (en) | Optimization of arithmetic expressions | |
CN117170748A (zh) | 一种基于simd并行求解矩阵的方法、电子设备及存储介质 | |
KR20240102915A (ko) | 부동소수점 연산 방법 및 연산 장치 | |
KR20220054248A (ko) | 산술 및/또는 비트 유닛에 의한 조건문의 실행 | |
JP2023103419A (ja) | 演算方法、装置、チップ、電子機器及び記憶媒体 | |
CN114637488A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 201114 room 1302, 13 / F, building 16, 2388 Chenhang Road, Minhang District, Shanghai Patentee after: Shanghai Bi Ren Technology Co.,Ltd. Country or region after: China Address before: 201114 room 1302, 13 / F, building 16, 2388 Chenhang Road, Minhang District, Shanghai Patentee before: Shanghai Bilin Intelligent Technology Co.,Ltd. Country or region before: China |