CN114265575A - 浮点数处理方法、装置、电子设备及存储介质 - Google Patents
浮点数处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114265575A CN114265575A CN202111667082.1A CN202111667082A CN114265575A CN 114265575 A CN114265575 A CN 114265575A CN 202111667082 A CN202111667082 A CN 202111667082A CN 114265575 A CN114265575 A CN 114265575A
- Authority
- CN
- China
- Prior art keywords
- target
- floating point
- initial
- point number
- operation matrix
- 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
- 238000007667 floating Methods 0.000 title claims abstract description 506
- 238000003672 processing method Methods 0.000 title claims abstract description 23
- 239000011159 matrix material Substances 0.000 claims abstract description 301
- 239000013598 vector Substances 0.000 claims abstract description 298
- 238000012545 processing Methods 0.000 claims abstract description 170
- 238000000034 method Methods 0.000 claims abstract description 52
- 238000004590 computer program Methods 0.000 claims description 11
- 238000010586 diagram Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 5
- 238000012805 post-processing Methods 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 229940050561 matrix product Drugs 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- 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
- 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Nonlinear Science (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Algebra (AREA)
- Complex Calculations (AREA)
Abstract
本公开提供了一种浮点数处理方法、装置、系统、电子设备及存储介质,该方法包括:获取在目标芯片中进行运算的多个初始运算矩阵;其中,所述初始运算矩阵中包括至少一个初始浮点数;对所述初始运算矩阵中的初始浮点数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵;其中,目标运算矩阵中任一行向量包含的目标浮点数的指数一致,或者,任一列向量包含的目标浮点数的指数一致;在所述目标芯片中对多个所述目标运算矩阵进行乘法处理,得到目标处理结果。
Description
技术领域
本公开涉及集成电路技术领域,具体而言,涉及一种浮点数处理方法、装置、电子设备及存储介质。
背景技术
随着半导体工艺、计算机体系结构、处理器设计架构的不断发展,处理器的功能越来越强大,结构也变得越来越复杂。其中,浮点数运算是处理器中一类运算步骤较多、延迟较大、功耗较大的计算,对处理器的性能指标有较大的影响。
因此,提出一种优化浮点数处理过程的方法尤为重要。
发明内容
有鉴于此,本公开至少提供一种浮点数处理方法、装置、电子设备及存储介质。
第一方面,本公开提供了一种浮点数处理方法,包括:
获取在目标芯片中进行运算的多个初始运算矩阵;其中,所述初始运算矩阵中包括至少一个初始浮点数;
对所述初始运算矩阵中的初始浮点数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵;其中,目标运算矩阵中任一行向量包含的目标浮点数的指数一致,或者,任一列向量包含的目标浮点数的指数一致;
在所述目标芯片中对多个所述目标运算矩阵进行乘法处理,得到目标处理结果。
上述方法中,通过对获取到的初始运算矩阵中的初始浮点数进行对阶处理,得到目标浮点数、和包含目标浮点数的目标运算矩阵,使得目标运算矩阵中任一行向量包含的目标浮点数的指数一致,或者,任一列向量包含的目标浮点数的指数一致。由于矩阵乘法中需要将两个矩阵中的元素相乘,再将相乘得到的部分积相加,得到一个元素值,本公开中先将行向量的指数或列向量的指数进行统一,使得浮点数相乘后得到的部分积的指数一致,无需对得到的各个部分积进行对阶处理,降低了目标芯片中进行移位操作的次数,以及降低了目标芯片处理浮点数矩阵乘法的功耗。
一种可能的实施方式中,所述对所述初始运算矩阵中的初始浮点数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵,包括:
确定初始运算矩阵执行的目标操作;
在所述目标操作为左乘操作的情况下,针对所述初始运算矩阵中的每个行向量,确定所述行向量对应的第一目标指数;
将所述行向量中每个初始浮点数的初始指数对齐到所述第一目标指数;以及基于所述第一目标指数与所述行向量中每个初始浮点数的初始指数之间的第一差值,对所述行向量中每个初始浮点数的尾数进行右移操作,得到目标浮点数、以及包含所述目标浮点数的处理后行向量;
其中,各个所述处理后行向量构成所述目标运算矩阵。
上述实施方式中,在确定初始运算矩阵对应的目标操作为左乘时,可知该初始运算矩阵的行向量的指数需要进行统一,故可以针对任一行向量,确定该行向量对应的第一目标指数,并将该行向量中的各个初始浮点数的初始指数对齐到最大指数,以及基于第一目标指数与每个初始浮点数的初始指数之间的第一差值,对该行向量中该初始浮点数的尾数进行右移操作,得到处理后行向量,进而得到目标运算矩阵,使得后续利用目标运算矩阵进行矩阵乘法时无需对得到的部分积进行对阶,以减少位移的次数。
一种可能的实施方式中,所述对所述初始运算矩阵中的初始浮点数进行对阶处理,得到处理后浮点数、和包含所述处理后浮点数的目标运算矩阵,包括:
确定初始运算矩阵执行的目标操作;
在所述目标操作为右乘操作的情况下,针对所述初始运算矩阵中的每个列向量,确定所述列向量对应的第二目标指数;
将所述列向量中每个初始浮点数的初始指数对齐到所述第二目标指数;以及基于所述第二目标指数与所述列向量中每个初始浮点数的初始指数之间的第二差值,对所述列向量中每个初始浮点数的尾数进行右移操作,得到目标浮点数、以及包含所述目标浮点数的处理后列向量;
其中,各个所述处理后列向量构成所述目标运算矩阵。
通过将执行右乘操作的初始运算矩阵中的任一列向量的指数进行统一,得到目标运算矩阵,后续利用目标运算矩阵进行矩阵乘法时无需对得到的部分积进行对阶,减少了对阶的次数。
一种可能的实施方式中,所述在所述目标芯片中对多个所述目标运算矩阵进行乘法处理,得到目标处理结果,包括:
针对多个所述目标运算矩阵中第一目标运算矩阵的任一行向量、和第二目标运算矩阵中任一列向量构成的向量组,将所述任一行向量包含的各个目标浮点数、分别与所述任一列向量中对应的目标浮点数相乘,得到各个浮点数积值;其中,所述第一目标运算矩阵中任一行向量包含的目标浮点数的指数一致,所述第二目标运算矩阵中任一列向量包含的目标浮点数的指数一致;
将所述各个浮点数积值进行累加操作,得到所述向量组对应的中间处理结果;
基于各个所述向量组的所述中间处理结果,得到所述目标处理结果。
上述实施方式中,向量组中的行向量包括的各个目标浮点数的指数一致、列向量包括的各个目标浮点数的指数一致,使得行向量中的各个目标浮点数与列向量中对应的目标浮点数相乘后,得到的各个浮点数积值的指数一致;无需对各个浮点数积值进行对阶处理,直接将各个浮点数积值进行累加操作,得到向量组对应的中间处理结果,减少了对阶处理的次数。
一种可能的实施方式中,在所述获取在目标芯片中进行运算的多个初始运算矩阵之后,所述方法还包括:
按照设置的浮点数格式,对所述初始运算矩阵中的至少部分初始浮点数进行左移操作,得到操作后初始浮点数、和包含所述操作后初始浮点数的操作后初始运算矩阵;
所述对所述初始运算矩阵中的初始浮点数的指数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵,包括:
对所述操作后初始运算矩阵中的所述操作后初始浮点数和/或未操作的初始浮点数的指数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵。
上述实施方式中,可以按照设置的浮点数格式,对至少部分初始浮点数进行左移操作,得到操作后初始浮点数,使得操作后初始浮点数的格式与设置的浮点数格式匹配,以便后续对操作后初始浮点数进行处理时能够提高数据处理的精度。
一种可能的实施方式中,在对所述初始运算矩阵中的初始浮点数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵之后,还包括:
按照设置的舍入规则,对所述目标浮点数进行舍入rounding处理,得到处理后目标浮点数;
基于各个所述处理后目标浮点数,得到处理后目标运算矩阵;
所述在所述目标芯片中对多个所述目标运算矩阵进行乘法处理,得到目标处理结果,包括:
在所述目标芯片中对多个所述处理后目标运算矩阵进行乘法处理,得到目标处理结果。
以下装置、电子设备等的效果描述参见上述方法的说明,这里不再赘述。
第二方面,本公开提供了一种浮点数处理装置,所述装置包括:对阶运算器和点积器,所述对阶运算器和所述点积器相连;
所述对阶运算器,用于对获取的进行运算的多个初始运算矩阵中,每个所述初始运算矩阵的初始浮点数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵;其中,目标运算矩阵中任一行向量包含的目标浮点数的指数一致,或者,任一列向量包含的目标浮点数的指数一致;
所述点积器,用于对多个所述目标运算矩阵进行乘法处理,得到目标处理结果。
一种可能的实施方式中,所述对阶运算器包括:第一比较器、减法器、第一移位器;所述减法器分别与所述第一比较器和所述第一移位器相连,所述第一移位器与所述点积器相连;
所述第一比较器,用于在确定初始运算矩阵执行的目标操作为左乘操作的情况下,针对所述初始运算矩阵中的每个行向量,确定所述行向量对应的第一目标指数;
所述减法器,用于确定所述行向量对应的所述第一目标指数、与所述行向量中每个初始浮点数的初始指数之间的第一差值;
所述第一移位器,用于针对所述行向量中的每个初始浮点数,将所述初始浮点数的初始指数对齐至所述第一目标指数,并基于所述初始浮点数对应的所述第一差值,对所述初始浮点数的尾数进行右移操作,得到所述初始浮点数对应的目标浮点数,以及得到包含所述目标浮点数的处理后行向量。
一种可能的实施方式中,所述第一比较器,用于在确定初始运算矩阵执行的目标操作为右乘操作的情况下,针对所述初始运算矩阵中的每个列向量,确定所述列向量对应的第二目标指数;
所述减法器,用于确定所述列向量对应的所述第二目标指数、与所述列向量中每个初始浮点数的初始指数之间的第二差值;
所述第一移位器,用于针对所述列向量中的每个初始浮点数,将所述初始浮点数的初始指数对齐至所述第二目标指数,并基于所述初始浮点数对应的所述第二差值,对所述初始浮点数的尾数进行右移操作,得到所述初始浮点数对应的目标浮点数,以及得到包含所述目标浮点数的处理后列向量。
一种可能的实施方式中,所述点积器,在对多个所述目标运算矩阵进行乘法处理,得到目标处理结果时,还用于:将所述处理后行向量与对应的所述处理后列向量进行点积运算,得到中间处理结果;基于各个中间处理结果,得到所述目标处理结果。
一种可能的实施方式中,所述装置还包括:第二移位器;
所述第二移位器,用于按照设置的浮点数格式,对所述初始运算矩阵中的至少部分初始浮点数进行左移操作,得到操作后初始浮点数。
一种可能的实施方式中,所述装置还包括:第二比较器;
所述第二比较器,用于按照设置的舍入规则,对所述目标浮点数进行舍入rounding处理,得到处理后目标浮点数。
第三方面,本公开提供了另一种浮点数处理装置,包括:
获取模块,用于获取在目标芯片中进行运算的多个初始运算矩阵;其中,所述初始运算矩阵中包括至少一个初始浮点数;
第一处理模块,用于对所述初始运算矩阵中的初始浮点数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵;其中,目标运算矩阵中任一行向量包含的目标浮点数的指数一致,或者,任一列向量包含的目标浮点数的指数一致;
第二处理模块,用于在所述目标芯片中对多个所述目标运算矩阵进行乘法处理,得到目标处理结果。
一种可能的实施方式中,所述第一处理模块,在对所述初始运算矩阵中的初始浮点数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵时,用于:
确定初始运算矩阵执行的目标操作;
在所述目标操作为左乘操作的情况下,针对所述初始运算矩阵中的每个行向量,确定所述行向量对应的第一目标指数;
将所述行向量中每个初始浮点数的初始指数对齐到所述第一目标指数;以及基于所述第一目标指数与所述行向量中每个初始浮点数的初始指数之间的第一差值,对所述行向量中每个初始浮点数的尾数进行右移操作,得到目标浮点数、以及包含所述目标浮点数的处理后行向量;
其中,各个所述处理后行向量构成所述目标运算矩阵。
一种可能的实施方式中,所述第一处理模块,在对所述初始运算矩阵中的初始浮点数进行对阶处理,得到处理后浮点数、和包含所述处理后浮点数的目标运算矩阵时,用于:
确定初始运算矩阵执行的目标操作;
在所述目标操作为右乘操作的情况下,针对所述初始运算矩阵中的每个列向量,确定所述列向量对应的第二目标指数;
将所述列向量中每个初始浮点数的初始指数对齐到所述第二目标指数;以及基于所述第二目标指数与所述列向量中每个初始浮点数的初始指数之间的第二差值,对所述列向量中每个初始浮点数的尾数进行右移操作,得到目标浮点数、以及包含所述目标浮点数的处理后列向量;
其中,各个所述处理后列向量构成所述目标运算矩阵。
一种可能的实施方式中,所述第二处理模块,在所述目标芯片中对多个所述目标运算矩阵进行乘法处理,得到目标处理结果时,用于:
针对多个所述目标运算矩阵中第一目标运算矩阵的任一行向量、和第二目标运算矩阵中任一列向量构成的向量组,将所述任一行向量包含的各个目标浮点数、分别与所述任一列向量中对应的目标浮点数相乘,得到各个浮点数积值;其中,所述第一目标运算矩阵中任一行向量包含的目标浮点数的指数一致,所述第二目标运算矩阵中任一列向量包含的目标浮点数的指数一致;
将所述各个浮点数积值进行累加操作,得到所述向量组对应的中间处理结果;
基于各个所述向量组的所述中间处理结果,得到所述目标处理结果。
一种可能的实施方式中,在所述获取在目标芯片中进行运算的多个初始运算矩阵之后,所述装置还包括:第一调整模块,用于:
按照设置的浮点数格式,对所述初始运算矩阵中的至少部分初始浮点数进行左移操作,得到操作后初始浮点数、和包含所述操作后初始浮点数的操作后初始运算矩阵;
所述第一处理模块,在对所述初始运算矩阵中的初始浮点数的指数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵时,用于:
对所述操作后初始运算矩阵中的所述操作后初始浮点数和/或未操作的初始浮点数的指数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵。
一种可能的实施方式中,在对所述初始运算矩阵中的初始浮点数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵之后,还包括:第二调整模块,用于:
按照设置的舍入规则,对所述目标浮点数进行舍入rounding处理,得到处理后目标浮点数;
基于各个所述处理后目标浮点数,得到处理后目标运算矩阵;
所述第二处理模块,在所述目标芯片中对多个所述目标运算矩阵进行乘法处理,得到目标处理结果时,用于:
在所述目标芯片中对多个所述处理后目标运算矩阵进行乘法处理,得到目标处理结果。
第四方面,本公开提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如上述第一方面或任一实施方式所述的浮点数处理方法的步骤;或者包括如上述第二方面或任一实施方式所述的浮点数处理装置。
第五方面,本公开提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上述第一方面或任一实施方式所述的浮点数处理方法的步骤。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种浮点数处理方法的流程示意图;
图2示出了本公开实施例所提供的一种浮点数处理系统的架构示意图;
图3示出了本公开实施例所提供的一种浮点数处理装置的架构示意图;
图4示出了本公开实施例所提供的另一种浮点数处理装置的架构示意图;
图5示出了本公开实施例所提供的另一种浮点数处理装置的架构示意图;
图6示出了本公开实施例所提供的一种电子设备的结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
随着半导体工艺、计算机体系结构、处理器设计架构的不断发展,处理器的功能越来越强大,结构也变得越来越复杂。其中,浮点数运算是处理器中一类运算步骤较多、延迟较大、功耗较大的计算,对处理器的性能指标有较大的影响。
在由浮点数构成的多个浮点数矩阵进行乘积得到目标矩阵时,可以将两个浮点数矩阵中对应元素相乘,得到部分积,再对多个部分积进行累加,得到目标矩阵中对应位置的目标元素。比如,若第一浮点数矩阵的维度为M×K,第二浮点数矩阵的维度为K×N,可以将第一浮点数矩阵的第一行向量中的各个元素与第二浮点数矩阵的第一列向量中对应元素相乘,得到部分积,再将部分积进行累加,得到维度为M×N的目标矩阵的第一行第一列的目标元素。
其中,在将第一浮点数矩阵的第一行向量中的各个元素与第二浮点数矩阵的第一列向量中对应元素相乘得到部分积之后,由于部分积为浮点数,故在将各个部分积进行累加之前,需要对部分积进行指数对齐、尾数移位等操作,以使得各个部分积之间的指数一致;再将操作后的部分积进行累加,得到目标元素。若第一浮点数矩阵内各个元素的位宽为m,第二浮点数矩阵内各个元素的位宽为n,那么在得到目标矩阵的过程中,需要进行M×N×K次移位,每次移位的数据宽度为m+n,移位次数较多,且每次移位的数据宽度较大,使得执行浮点数矩阵乘积运算的芯片所消耗的功耗较大,芯片中移位器所占据的面积也较大,降低了芯片的性能。
为了缓解上述问题,本公开实施例提供了一种浮点数处理方法、装置、电子设备及存储介质。上述方法中,通过对获取到的初始运算矩阵中的初始浮点数进行对阶处理,得到目标浮点数、和包含目标浮点数的目标运算矩阵,使得目标运算矩阵中任一行向量包含的目标浮点数的指数一致,或者,任一列向量包含的目标浮点数的指数一致。由于矩阵乘法中需要将两个矩阵中的元素相乘,再将相乘得到的部分积相加,得到一个元素值,本公开中先将行向量的指数或列向量的指数进行统一,使得浮点数相乘后得到的部分积的指数一致,无需对得到的各个部分积进行对阶处理,降低了目标芯片中进行移位操作的次数,以及降低了目标芯片处理浮点数矩阵乘法的功耗。
比如,针对维度为M×K第一初始浮点数矩阵,维度为K×N第二初始浮点数矩阵,若第一初始浮点数矩阵内各个初始浮点数的位宽为m,第二初始浮点数矩阵内各个初始浮点数的位宽为n,使用本公开提出的实施方式,移位的次数为M×K+N×K次,每次移位的数据宽度为m或n,即将产生M×K次数据宽度为m的移位、和产生N×K次数据宽度为n的移位。与现有方式中需要进行M×N×K次移位、每次移位的数据宽度为m+n相比,本公开提出的浮点数处理方法,能够减少移位次数,且每次移位的数据宽度也较小。可知本公开中执行浮点数矩阵乘积运算的芯片所消耗的功耗较小,芯片中移位器所占据的面积也较小,提高了芯片的性能。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于对本公开实施例进行理解,首先对本公开实施例所公开的一种浮点数处理方法进行详细介绍。本公开实施例所提供的浮点数处理方法的执行主体一般为具有一定计算能力的芯片,该芯片比如可以为处理器,该处理器可以包括中央处理器(centralprocessing unit,CPU)、图形处理器(graphics processing unit,GPU)、张量处理单元(Tensor Processing Unit,TPU)、嵌入式神经网络处理器(Neural-network ProcessingUnit,NPU)等。在一些可能的实现方式中,该浮点数处理方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
参见图1所示,为本公开实施例所提供的浮点数处理方法的流程示意图,该方法包括S101-S103,其中:
S101,获取在目标芯片中进行运算的多个初始运算矩阵;其中,所述初始运算矩阵中包括至少一个初始浮点数;
S102,对所述初始运算矩阵中的初始浮点数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵;其中,目标运算矩阵中任一行向量包含的目标浮点数的指数一致,或者,任一列向量包含的目标浮点数的指数一致;
S103,在所述目标芯片中对多个所述目标运算矩阵进行乘法处理,得到目标处理结果。
下述对S101-S103进行具体说明。
针对S101:
目标芯片可以为任一需要进行浮点数运算的芯片,比如目标芯片可以为CPU、GPU、NPU等。
在目标芯片中进行乘积运算的多个初始运算矩阵的维度满足乘积要求。比如,若第一初始运算矩阵的维度为m1×k1,第二初始运算矩阵的维度为k1×n1,第三初始运算矩阵的维度为n1×m2,则可以将第一初始运算矩阵左乘以第二初始运算矩阵,得到中间运算矩阵,再将中间运算矩阵左乘以第三初始运算矩阵。
其中,每个初始运算矩阵中包括至少一个初始浮点数。即初始运算矩阵由一个或多个初始浮点数构成。初始浮点数可以包括符号位、指数、尾数。
一种可选实施方式中,在获取在目标芯片中进行运算的多个初始运算矩阵之后,所述方法还包括:按照设置的浮点数格式,对所述初始运算矩阵中的至少部分初始浮点数进行左移操作,得到操作后初始浮点数、和包含所述操作后初始浮点数的操作后初始运算矩阵。
浮点数格式可以根据目标芯片的结构、运算精度需求等因素进行设置。实施时,可以按照设置的浮点数格式,对初始运算矩阵中初始格式与浮点数格式不匹配的初始浮点数进行左移操作,得到操作后初始浮点数,使得该操作后初始浮点数的格式与设置的浮点数格式匹配,以提高目标芯片中初始运算矩阵的运算精度。其中,左移操作的位数根据初始格式与浮点数格式进行确定。再基于各个操作后初始浮点数,或者,操作后初始浮点数和未操作的初始浮点数,构成操作后初始运算矩阵。
实施时,针对初始运算矩阵中初始格式与浮点数格式不匹配的初始浮点数,可以将该初始浮点数的尾数左移a位,并将初始浮点数的指数减a,得到操作后初始浮点数。其中,a的值为根据初始格式与浮点数格式进行确定的左移操作的位数,a为正整数。
比如,正的浮点数的尾数格式可以为:S=0.1******…(其中*为0或1),负的浮点数的尾数格式可以为:S=1.1******…(其中*为0或1)。若初始运算矩阵中初始浮点数(正的)的尾数为:0.000001,则可以将该尾数左移5位,并将该初始浮点数的指数减5,得到操作后初始浮点数。若初始运算矩阵中初始浮点数(负的)的尾数为:0.0000011,则可以将该尾数左移6位,并将该初始浮点数的指数减6,得到操作后初始浮点数。
同时左移操作后得到的操作后初始浮点数中,避免了尾数中多余的0值占据尾数位宽,使得后续的初始浮点数的运算中能够保留更多的有效数据,提高了浮点数的运算精度。
进而可以对所述操作后初始运算矩阵中的所述操作后初始浮点数和/或未操作的初始浮点数的指数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵。
针对S102:
实施时,可以对初始运算矩阵中,位于同一行向量上的各个初始浮点数进行对阶处理,得到同一行向量上的目标浮点数;各个行向量上的目标浮点数构成了目标运算矩阵。或者,可以对初始运算矩阵中,位于同一列向量上的各个初始浮点数进行对阶处理,得到同一列向量上的目标浮点数;各个列向量上的目标浮点数构成了目标运算矩阵。
比如,可以为初始运算矩阵中的每个行向量设置一个对应的第一目标指数。再针对每个行向量,将该行向量中的每个初始浮点数的初始指数对齐至该行向量对应的第一目标指数,并将每个初始浮点数的尾数右移b位,得到目标浮点数。其中,b为正整数,b的值为第一目标指数与该初始浮点数的初始指数之差。一般的,第一目标指数的值大于或等于对应行向量中任一初始浮点数的初始指数。
或者,也可以为初始运算矩阵设置一个对应的第一目标指数,即该初始运算矩阵中的各个行向量对应一个第一目标指数。再针对初始运算矩阵中的每个初始浮点数,将该初始浮点数的初始指数对齐至该第一目标指数,并将该初始浮点数的尾数右移b位得到目标浮点数。其中,b的值为第一目标指数与该初始浮点数的初始指数之差。一般的,该第一目标指数的值大于或等于初始运算矩阵中任一初始浮点数的初始指数。
关于列向量的对阶处理可以参考上述行向量的对阶处理过程,此处不在详述。
一种可选实施方式中,所述对所述初始运算矩阵中的初始浮点数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵,可以包括:
步骤A1,确定初始运算矩阵执行的目标操作;
步骤A2,在所述目标操作为左乘操作的情况下,针对所述初始运算矩阵中的每个行向量,确定所述行向量对应的第一目标指数;
步骤A3,将所述行向量中每个初始浮点数的初始指数对齐到所述第一目标指数;以及基于所述第一目标指数与所述行向量中每个初始浮点数的初始指数之间的第一差值,对所述行向量中每个初始浮点数的尾数进行右移操作,得到目标浮点数、以及包含所述目标浮点数的处理后行向量;其中,各个所述处理后行向量构成所述目标运算矩阵。
目标操作可以为左乘操作或右乘操作。比如,矩阵一×矩阵二,则矩阵一执行的目标操作为左乘操作;矩阵二执行的目标操作为右乘操作。
在初始运算矩阵的目标操作为左乘操作时,针对该初始运算矩阵中的每个行向量,确定该行向量对应的第一目标指数。比如,该第一目标指数可以为该行向量中包括的各个初始浮点数的初始指数中的最大指数;或者,该第一目标指数也可以为设置的大于该最大指数的任一整数值。
下述以第一目标指数为该行向量中包括的各个初始浮点数的初始指数中的最大指数为例进行说明。比如,若初始运算矩阵一为:
实施时,可以针对初始运算矩阵一中的位于第一行的行向量1{a11,a12,a13,a14},确定a11,a12,a13,a14分别包括的初始指数中的最大指数,比如a14的初始指数最大,则将a14的初始指数作为第一目标指数。将a11、a12、a13的初始指数对齐到第一目标指数,再依次将a11、a12、a13的尾数进行右移操作,右移操作的位数为初始浮点数的初始指数与第一目标指数之间的差值,比如,a11对应的右移操作的位数为a14的初始指数(最大指数)与a11的初始指数之差,得到了行向量1中初始浮点数对应的目标浮点数,该各个目标浮点数构成了处理后行向量1。同理,可以对初始运算矩阵一的位于第二行的行向量2中的各个初始浮点数进行对阶处理,得到行向量2中初始浮点数对应的目标浮点数,和该各个目标浮点数构成了处理后行向量2等等。
进而,处理后行向量1、处理后行向量2、处理后行向量3和处理后行向量4构成了目标运算矩阵。可知该目标运算矩阵的每个行向量中包括的目标浮点数的指数一致。
上述实施方式中,在确定初始运算矩阵对应的目标操作为左乘时,可知该初始运算矩阵的行向量的指数需要进行统一,故可以针对任一行向量,确定该行向量对应的第一目标指数,并将该行向量中的各个初始浮点数的初始指数对齐到第一目标指数,以及基于第一目标指数与初始指数之间的第一差值,对该行向量中每个初始浮点数的尾数进行右移操作,得到处理后行向量,进而得到目标运算矩阵,使得后续利用目标运算矩阵进行矩阵乘法时无需对得到的部分积进行对阶,以减少位移的次数。
另一种可选实施方式中,所述对所述初始运算矩阵中的初始浮点数的指数进行对阶处理,得到处理后浮点数、和包含所述处理后浮点数的目标运算矩阵,可以包括:
步骤B1,确定初始运算矩阵执行的目标操作;
步骤B2,在所述目标操作为右乘操作的情况下,针对所述初始运算矩阵中的每个列向量,确定所述列向量对应的第二目标指数;
步骤B3,将所述列向量中每个初始浮点数的初始指数对齐到所述第二目标指数;以及基于所述第二目标指数与所述列向量中每个初始浮点数的初始指数之间的第二差值,对所述列向量中每个初始浮点数的尾数进行右移操作,得到目标浮点数、以及包含所述目标浮点数的处理后列向量;其中,各个所述处理后列向量构成所述目标运算矩阵。
在初始运算矩阵的目标操作为右乘操作时,针对该初始运算矩阵中的每个列向量,确定该列向量对应的第二目标指数。比如,该第二目标指数可以为该行向量中包括的各个初始浮点数的初始指数中的最大指数;或者,该第二目标指数也可以为设置的大于该最大指数的任一整数值。
下述以第二目标指数为该列向量中包括的各个初始浮点数的初始指数中的最大指数为例进行说明。比如,若初始运算矩阵二为:
实施时,可以针对初始运算矩阵二中位于第一列的列向量1{b11,b21,b31,b41},确定b11,b21,b31,b41分别包括的初始指数中的最大指数,比如b11的初始指数最大,则将b11的初始指数作为第二目标指数。将b21、b31、b41的初始指数对齐到第二目标指数,再依次将b21、b31、b41的尾数进行右移操作,右移操作的位数为第二目标指数与初始浮点数的初始指数之间的差值。比如,b41对应的右移操作的位数为b11的初始指数(最大指数)与b41的初始指数之差,得到了列向量1中初始浮点数对应的目标浮点数,该各个目标浮点数构成了处理后列向量1。同理,可以对初始运算矩阵二的位于第二列的列向量中的各个初始浮点数进行对阶处理,得到列向量2中初始浮点数对应的目标浮点数,和该各个目标浮点数构成了处理后列向量2等。
进而,处理后列向量1、处理后列向量2、处理后列向量3和处理后列向量4构成了目标运算矩阵。可知该目标运算矩阵的每个列向量中包括的目标浮点数的指数一致。
通过将执行右乘操作的初始运算矩阵中的任一列向量的指数进行统一,得到目标运算矩阵,后续利用目标运算矩阵进行矩阵乘法时无需对得到的部分积进行对阶,减少了对阶的次数。
考虑到,对各个初始浮点数进行对阶处理得到目标浮点数后,目标浮点数的数据格式、数据位宽等可能不满足目标芯片的需求。故可选的,在对所述初始运算矩阵中的初始浮点数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵之后,还可以包括:按照设置的舍入规则,对所述目标浮点数进行舍入rounding处理,得到处理后目标浮点数;基于各个所述处理后目标浮点数,得到处理后目标运算矩阵。
舍入规则可以根据目标芯片的结构、矩阵运算的需求、矩阵运算所应用的场景等因素进行设置。比如,舍入规则可以为:在目标浮点数中超出可保存位数的多余数大于目标数时,则进行入操作(即进位);在目标浮点数中超出可保存位数的多余数小于或等于目标数时,则进行舍操作(即删除)。
比如,目标数可以设置为0.5、0.8等,若设置目标数为0.5,则将目标浮点数中超出可保存位数的多余数与0.5进行对比,若多余数大于0.5,则该将目标浮点数中可保存位数之前的数进位,得到处理后目标浮点数;若多余数小于或等于0.5,则将目标浮点数中超出可保存位数的多余数删除,可保存位数不变,得到处理后目标浮点数。
实施时,可以按照设置的舍入规则,可以对数据位宽不满足要求的、至少部分目标浮点数进行rounding处理,得到处理后目标浮点数;基于处理后目标浮点数和未处理目标浮点数,得到处理后目标运算矩阵。
所述在所述目标芯片中对多个所述目标运算矩阵进行乘法处理,得到目标处理结果,包括:在所述目标芯片中对多个所述处理后目标运算矩阵进行乘法处理,得到目标处理结果。
上述实施方式中,可以按照设置的浮点数格式,对至少部分初始浮点数进行左移操作,得到操作后初始浮点数,使得操作后初始浮点数的格式与设置的浮点数格式匹配,以便后续对操作后初始浮点数进行处理时能够提高数据处理的精度。
针对S103:
实施时,在目标运算矩阵为两个时,则可以将两个目标运算矩阵相乘,得到目标处理结果。在目标运算矩阵为两个以上时,可以先将两个目标运算矩阵相乘,再将得到的中间运算矩阵与下一个目标运算矩阵相乘,得到目标处理结果。
其中,在得到目标处理结果之后,还可以利用移位方式、截尾方式、舍入方式等,对目标处理结果进行规格化处理,得到处理后的目标处理结果。
一种可选实施方式中,所述在所述目标芯片中对多个所述目标运算矩阵进行乘法处理,得到目标处理结果,可以包括:
步骤C1,针对多个所述目标运算矩阵中第一目标运算矩阵的任一行向量、和第二目标运算矩阵中任一列向量构成的向量组,将所述任一行向量包含的各个目标浮点数、分别与所述任一列向量中对应的目标浮点数相乘,得到各个浮点数积值;其中,所述第一目标运算矩阵中任一行向量包含的目标浮点数的指数一致,所述第二目标运算矩阵中任一列向量包含的目标浮点数的指数一致;
步骤C2,将所述各个浮点数积值进行累加操作,得到所述向量组对应的中间处理结果;
步骤C3,基于各个所述向量组的所述中间处理结果,得到所述目标处理结果。
向量组中包括第一目标运算矩阵中的任一行向量和第二目标运算矩阵中的任一列向量。比如,针对维度为4×5的第一目标运算矩阵和维度为5×6的第二目标运算矩阵,可以得到24个向量组。
针对每个向量组,可以将该向量组中包括的行向量的各个目标浮点、分别与该向量组中包括的列向量中对应的目标浮点数相乘。比如,针对向量组中的第一行向量{a11,a12,a13,a14},和第一列向量{b11,b21,b31,b41},可以将a11与b11相乘、a12与b21相乘、a13与b31相乘、a14与b41相乘,得到各个浮点数积值。由于第一行向量中的各个目标浮点数的指数一致、以及第一列向量中的各个浮点数的指数一致,因此,得到的各个浮点数积值的指数也一致。
可以直接将各个浮点数积值的尾数进行累加操作,得到该向量组对应的中间处理结果。再可以基于各个向量组的中间处理结果,得到目标处理结果。该目标处理结果可以为目标运算矩阵。
比如,第一目标运算矩阵中位于第一行的行向量与第二目标运算矩阵中位于第一列的列向量构成的第一向量组,该第一向量组对应的中间处理结果,为目标处理结果中位于第一行第一列的元素值。
上述实施方式中,向量组中的行向量包括的各个目标浮点数的指数一致、列向量包括的各个目标浮点数的指数一致,使得行向量中的各个目标浮点数与列向量中对应的目标浮点数相乘后,得到的各个浮点数积值的指数一致;无需对各个浮点数积值进行对阶处理,直接将各个浮点数积值进行累加操作,得到向量组对应的中间处理结果,减少了对阶处理的次数。
在目标芯片为AI芯片时,该浮点数处理方法可以应用于针对特征图与卷积核的卷积运算中。比如,多个初始运算矩阵可以包括:特征图上的初始运算矩阵、卷积核上的初始运算矩阵等。通过将特征图上的初始运算矩阵与卷积核上的初始运算矩阵分别进行对阶处理,得到特征图对应的目标运算矩阵和卷积核对应的目标运算矩阵;再将特征图对应的目标运算矩阵与卷积核对应的目标运算矩阵相乘,得到卷积运算结果(目标处理结果)。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于相同的构思,本公开实施例还提供了一种浮点数处理系统,参见图2所示,为本公开实施例提供的浮点数处理系统的架构示意图,包括移位单元201和处理单元202,具体的:
所述移位单元201,用于对获取到的多个初始运算矩阵进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵;其中,目标运算矩阵中任一行向量包含的目标浮点数的指数一致,或者,任一列向量包含的目标浮点数的指数一致;
所述处理单元202,用于对多个所述目标运算矩阵进行乘法处理,得到目标处理结果。
一种可能的实施方式中,所述移位单元201,在对所述初始运算矩阵中的初始浮点数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵时,用于:
确定初始运算矩阵执行的目标操作;
在所述目标操作为左乘操作的情况下,针对所述初始运算矩阵中的每个行向量,确定所述行向量对应的第一目标指数;
将所述行向量中每个初始浮点数的初始指数对齐到所述第一目标指数;以及基于所述第一目标指数与所述行向量中每个初始浮点数的初始指数之间的第一差值,对所述行向量中每个初始浮点数的尾数进行右移操作,得到目标浮点数、以及包含所述目标浮点数的处理后行向量;
其中,各个所述处理后行向量构成所述目标运算矩阵。
一种可能的实施方式中,所述移位单元201,在对所述初始运算矩阵中的初始浮点数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵时,用于:
确定初始运算矩阵执行的目标操作;
在所述目标操作为右乘操作的情况下,针对所述初始运算矩阵中的每个列向量,确定所述列向量对应的第二目标指数;
将所述列向量中每个初始浮点数的初始指数对齐到所述第二目标指数;以及基于所述第二目标指数与所述列向量中每个初始浮点数的初始指数之间的第二差值,对所述列向量中每个初始浮点数的尾数进行右移操作,得到目标浮点数、以及包含所述目标浮点数的处理后列向量;
其中,各个所述处理后列向量构成所述目标运算矩阵。
一种可能的实施方式中,所述处理单元202,在所述目标芯片中对多个所述目标运算矩阵进行乘法处理,得到目标处理结果时,用于:
针对多个所述目标运算矩阵中第一目标运算矩阵的任一行向量、和第二目标运算矩阵中任一列向量构成的向量组,将所述任一行向量包含的各个目标浮点数、分别与所述任一列向量中对应的目标浮点数相乘,得到各个浮点数积值;其中,所述第一目标运算矩阵中任一行向量包含的目标浮点数的指数一致,所述第二目标运算矩阵中任一列向量包含的目标浮点数的指数一致;
将所述各个浮点数积值进行累加操作,得到所述向量组对应的中间处理结果;
基于各个所述向量组的所述中间处理结果,得到所述目标处理结果。
基于相同的构思,本公开实施例还提供了一种浮点数处理装置,参见图3所示,为本公开实施例提供的浮点数处理装置的架构示意图,所述装置包括:对阶运算器301和点积器302,所述对阶运算器301和所述点积器302相连;
所述对阶运算器301,用于对获取的进行运算的多个初始运算矩阵中,每个所述初始运算矩阵的初始浮点数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵;其中,目标运算矩阵中任一行向量包含的目标浮点数的指数一致,或者,任一列向量包含的目标浮点数的指数一致;
所述点积器302,用于对多个所述目标运算矩阵进行乘法处理,得到目标处理结果。
一种可能的实施方式中,参见图4所示,所述对阶运算器301包括:第一比较器311、减法器312、第一移位器313;所述减法器312分别与所述第一比较器311和所述第一移位器313相连,所述第一移位器313与所述点积器302相连;
所述第一比较器311,用于在确定初始运算矩阵执行的目标操作为左乘操作的情况下,针对所述初始运算矩阵中的每个行向量,确定所述行向量对应的第一目标指数;
所述减法器312,用于确定所述行向量对应的所述第一目标指数、与所述行向量中每个初始浮点数的初始指数之间的第一差值;
所述第一移位器313,用于针对所述行向量中的每个初始浮点数,将所述初始浮点数的初始指数对齐至所述第一目标指数,并基于所述初始浮点数对应的所述第一差值,对所述初始浮点数的尾数进行右移操作,得到所述初始浮点数对应的目标浮点数,以及得到包含所述目标浮点数的处理后行向量。
一种可能的实施方式中,所述第一比较器311,用于在确定初始运算矩阵执行的目标操作为右乘操作的情况下,针对所述初始运算矩阵中的每个列向量,确定所述列向量对应的第二目标指数;
所述减法器312,用于确定所述列向量对应的所述第二目标指数、与所述列向量中每个初始浮点数的初始指数之间的第二差值;
所述第一移位器313,用于针对所述列向量中的每个初始浮点数,将所述初始浮点数的初始指数对齐至所述第二目标指数,并基于所述初始浮点数对应的所述第二差值,对所述初始浮点数的尾数进行右移操作,得到所述初始浮点数对应的目标浮点数,以及得到包含所述目标浮点数的处理后列向量。
一种可能的实施方式中,所述点积器302,在对多个所述目标运算矩阵进行乘法处理,得到目标处理结果时,还用于:将所述处理后行向量与对应的所述处理后列向量进行点积运算,得到中间处理结果;基于各个中间处理结果,得到所述目标处理结果。
一种可能的实施方式中,所述装置还包括:第二移位器303;所述第二移位器303,用于按照设置的浮点数格式,对所述初始运算矩阵中的至少部分初始浮点数进行左移操作,得到操作后初始浮点数。
一种可能的实施方式中,所述装置还包括:第二比较器304;所述第二比较器304,用于按照设置的舍入规则,对所述目标浮点数进行舍入rounding处理,得到处理后目标浮点数。
结合图4所示,对上述浮点数处理方法进行说明。该浮点数处理方法包括:
步骤一、获取两个初始运算矩阵。
步骤二、针对第一初始运算矩阵,第二移位器可以先对第一初始运算矩阵中的初始浮点数进行左移操作,得到操作后初始浮点数、以及第一初始运算矩阵对应的操作后第一初始运算矩阵。该操作后初始浮点数的格式与设置的浮点数格式匹配。
步骤三、针对操作后第一初始运算矩阵中的任一行向量,可以利用第一比较器确定该任一行向量中各个操作后初始浮点数的初始指数的最大值,即确定了该任一行向量对应的第一目标指数。
步骤四、将任一行向量中的每个操作后初始浮点数的初始指数对齐到第一目标指数,并利用减法器确定操作后初始浮点数的初始指数与第一目标指数之间的第一差值。再利用第一移位器基于第一差值,对操作后初始浮点数的尾数进行右移操作,得到目标浮点数、和第一目标运算矩阵。其中,右移的目标位数与确定的第一差值一致。
步骤五、还可以利用第二比较器按照设置的舍入规则,对目标浮点数进行舍入rounding处理,得到处理后目标浮点数和第一处理后目标运算矩阵。其中,第一处理后目标运算矩阵的任一行向量中各个处理后目标浮点数的指数一致。
步骤六、针对第二初始运算矩阵,基于步骤二至步骤五,对第二初始运算矩阵中的各个列向量进行处理,得到第二初始运算矩阵对应的第二处理后目标运算矩阵。其中,第二处理后目标运算矩阵的任一列向量中各个处理后目标浮点数的指数一致。
步骤七、再将第一处理后目标运算矩阵和第二处理后目标运算矩阵进行乘法处理,得到目标处理结果。即可以利用点积器对第一处理后目标运算矩阵的处理后行向量、和第二处理后目标运算矩阵中对应的处理后列向量进行点积运算,得到中间处理结果。再基于各个中间处理结果,得到所述目标处理结果。
基于相同的构思,本公开实施例还提供了一种浮点数处理装置,参见图5所示,为本公开实施例提供的浮点数处理装置的架构示意图,包括获取模块501、第一处理模块502、第二处理模块503,具体的:
获取模块501,用于获取在目标芯片中进行运算的多个初始运算矩阵;其中,所述初始运算矩阵中包括至少一个初始浮点数;
第一处理模块502,用于对所述初始运算矩阵中的初始浮点数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵;其中,目标运算矩阵中任一行向量包含的目标浮点数的指数一致,或者,任一列向量包含的目标浮点数的指数一致;
第二处理模块503,用于在所述目标芯片中对多个所述目标运算矩阵进行乘法处理,得到目标处理结果。
一种可能的实施方式中,所述第一处理模块502,在对所述初始运算矩阵中的初始浮点数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵时,用于:
确定初始运算矩阵执行的目标操作;
在所述目标操作为左乘操作的情况下,针对所述初始运算矩阵中的每个行向量,确定所述行向量对应的第一目标指数;
将所述行向量中每个初始浮点数的初始指数对齐到所述第一目标指数;以及基于所述第一目标指数与所述行向量中每个初始浮点数的初始指数之间的第一差值,对所述行向量中每个初始浮点数的尾数进行右移操作,得到目标浮点数、以及包含所述目标浮点数的处理后行向量;
其中,各个所述处理后行向量构成所述目标运算矩阵。
一种可能的实施方式中,所述第一处理模块502,在对所述初始运算矩阵中的初始浮点数进行对阶处理,得到处理后浮点数、和包含所述处理后浮点数的目标运算矩阵时,用于:
确定初始运算矩阵执行的目标操作;
在所述目标操作为右乘操作的情况下,针对所述初始运算矩阵中的每个列向量,确定所述列向量对应的第二目标指数;
将所述列向量中每个初始浮点数的初始指数对齐到所述第二目标指数;以及基于所述第二目标指数与所述列向量中每个初始浮点数的初始指数之间的第二差值,对所述列向量中每个初始浮点数的尾数进行右移操作,得到目标浮点数、以及包含所述目标浮点数的处理后列向量;
其中,各个所述处理后列向量构成所述目标运算矩阵。
一种可能的实施方式中,所述第二处理模块503,在所述目标芯片中对多个所述目标运算矩阵进行乘法处理,得到目标处理结果时,用于:
针对多个所述目标运算矩阵中第一目标运算矩阵的任一行向量、和第二目标运算矩阵中任一列向量构成的向量组,将所述任一行向量包含的各个目标浮点数、分别与所述任一列向量中对应的目标浮点数相乘,得到各个浮点数积值;其中,所述第一目标运算矩阵中任一行向量包含的目标浮点数的指数一致,所述第二目标运算矩阵中任一列向量包含的目标浮点数的指数一致;
将所述各个浮点数积值进行累加操作,得到所述向量组对应的中间处理结果;
基于各个所述向量组的所述中间处理结果,得到所述目标处理结果。
一种可能的实施方式中,在所述获取在目标芯片中进行运算的多个初始运算矩阵之后,所述装置还包括:第一调整模块504,用于:
按照设置的浮点数格式,对所述初始运算矩阵中的至少部分初始浮点数进行左移操作,得到操作后初始浮点数、和包含所述操作后初始浮点数的操作后初始运算矩阵;
所述第一处理模块502,在对所述初始运算矩阵中的初始浮点数的指数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵时,用于:
对所述操作后初始运算矩阵中的所述操作后初始浮点数和/或未操作的初始浮点数的指数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵。
一种可能的实施方式中,在对所述初始运算矩阵中的初始浮点数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵之后,还包括:第二调整模块505,用于:
按照设置的舍入规则,对所述目标浮点数进行舍入rounding处理,得到处理后目标浮点数;
基于各个所述处理后目标浮点数,得到处理后目标运算矩阵;
所述第二处理模块503,在所述目标芯片中对多个所述目标运算矩阵进行乘法处理,得到目标处理结果时,用于:
在所述目标芯片中对多个所述处理后目标运算矩阵进行乘法处理,得到目标处理结果。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模板可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
基于同一技术构思,本公开实施例还提供了一种电子设备。参照图6所示,为本公开实施例提供的电子设备的结构示意图,包括处理器601、存储器602、和总线603。其中,存储器602用于存储执行指令,包括内存6021和外部存储器6022;这里的内存6021也称内存储器,用于暂时存放处理器601中的运算数据,以及与硬盘等外部存储器6022交换的数据,处理器601通过内存6021与外部存储器6022进行数据交换,当电子设备600运行时,处理器601与存储器602之间通过总线603通信,使得处理器601在执行以下指令:
获取在目标芯片中进行运算的多个初始运算矩阵;其中,所述初始运算矩阵中包括至少一个初始浮点数;
对所述初始运算矩阵中的初始浮点数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵;其中,目标运算矩阵中任一行向量包含的目标浮点数的指数一致,或者,任一列向量包含的目标浮点数的指数一致;
在所述目标芯片中对多个所述目标运算矩阵进行乘法处理,得到目标处理结果。
其中,处理器601的具体处理流程可以参照上述方法实施例的记载,这里不再赘述。
此外,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的浮点数处理方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的浮点数处理方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。
Claims (14)
1.一种浮点数处理方法,其特征在于,包括:
获取在目标芯片中进行运算的多个初始运算矩阵;其中,所述初始运算矩阵中包括至少一个初始浮点数;
对所述初始运算矩阵中的初始浮点数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵;其中,目标运算矩阵中任一行向量包含的目标浮点数的指数一致,或者,任一列向量包含的目标浮点数的指数一致;
在所述目标芯片中对多个所述目标运算矩阵进行乘法处理,得到目标处理结果。
2.根据权利要求1所述的方法,其特征在于,所述对所述初始运算矩阵中的初始浮点数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵,包括:
确定初始运算矩阵执行的目标操作;
在所述目标操作为左乘操作的情况下,针对所述初始运算矩阵中的每个行向量,确定所述行向量对应的第一目标指数;
将所述行向量中每个初始浮点数的初始指数对齐到所述第一目标指数;以及基于所述第一目标指数与所述行向量中每个初始浮点数的初始指数之间的第一差值,对所述行向量中每个初始浮点数的尾数进行右移操作,得到目标浮点数、以及包含所述目标浮点数的处理后行向量;
其中,各个所述处理后行向量构成所述目标运算矩阵。
3.根据权利要求1或2所述的方法,其特征在于,所述对所述初始运算矩阵中的初始浮点数进行对阶处理,得到处理后浮点数、和包含所述处理后浮点数的目标运算矩阵,包括:
确定初始运算矩阵执行的目标操作;
在所述目标操作为右乘操作的情况下,针对所述初始运算矩阵中的每个列向量,确定所述列向量对应的第二目标指数;
将所述列向量中每个初始浮点数的初始指数对齐到所述第二目标指数;以及基于所述第二目标指数与所述列向量中每个初始浮点数的初始指数之间的第二差值,对所述列向量中每个初始浮点数的尾数进行右移操作,得到目标浮点数、以及包含所述目标浮点数的处理后列向量;
其中,各个所述处理后列向量构成所述目标运算矩阵。
4.根据权利要求1~3任一所述的方法,其特征在于,所述在所述目标芯片中对多个所述目标运算矩阵进行乘法处理,得到目标处理结果,包括:
针对多个所述目标运算矩阵中第一目标运算矩阵的任一行向量、和第二目标运算矩阵中任一列向量构成的向量组,将所述任一行向量包含的各个目标浮点数、分别与所述任一列向量中对应的目标浮点数相乘,得到各个浮点数积值;其中,所述第一目标运算矩阵中任一行向量包含的目标浮点数的指数一致,所述第二目标运算矩阵中任一列向量包含的目标浮点数的指数一致;
将所述各个浮点数积值进行累加操作,得到所述向量组对应的中间处理结果;
基于各个所述向量组的所述中间处理结果,得到所述目标处理结果。
5.根据权利要求1~4任一所述的方法,其特征在于,在所述获取在目标芯片中进行运算的多个初始运算矩阵之后,所述方法还包括:
按照设置的浮点数格式,对所述初始运算矩阵中的至少部分初始浮点数进行左移操作,得到操作后初始浮点数、和包含所述操作后初始浮点数的操作后初始运算矩阵;
所述对所述初始运算矩阵中的初始浮点数的指数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵,包括:
对所述操作后初始运算矩阵中的所述操作后初始浮点数和/或未操作的初始浮点数的指数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵。
6.根据权利要求1~5任一所述的方法,其特征在于,在对所述初始运算矩阵中的初始浮点数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵之后,还包括:
按照设置的舍入规则,对所述目标浮点数进行舍入rounding处理,得到处理后目标浮点数;
基于各个所述处理后目标浮点数,得到处理后目标运算矩阵;
所述在所述目标芯片中对多个所述目标运算矩阵进行乘法处理,得到目标处理结果,包括:
在所述目标芯片中对多个所述处理后目标运算矩阵进行乘法处理,得到目标处理结果。
7.一种浮点数处理装置,其特征在于,所述装置包括:对阶运算器和点积器,所述对阶运算器和所述点积器相连;
所述对阶运算器,用于对获取的进行运算的多个初始运算矩阵中,每个所述初始运算矩阵的初始浮点数进行对阶处理,得到目标浮点数、和包含所述目标浮点数的目标运算矩阵;其中,目标运算矩阵中任一行向量包含的目标浮点数的指数一致,或者,任一列向量包含的目标浮点数的指数一致;
所述点积器,用于对多个所述目标运算矩阵进行乘法处理,得到目标处理结果。
8.根据权利要求7所述的装置,其特征在于,所述对阶运算器包括:第一比较器、减法器、第一移位器;所述减法器分别与所述第一比较器和所述第一移位器相连,所述第一移位器与所述点积器相连;
所述第一比较器,用于在确定初始运算矩阵执行的目标操作为左乘操作的情况下,针对所述初始运算矩阵中的每个行向量,确定所述行向量对应的第一目标指数;
所述减法器,用于确定所述行向量对应的所述第一目标指数、与所述行向量中每个初始浮点数的初始指数之间的第一差值;
所述第一移位器,用于针对所述行向量中的每个初始浮点数,将所述初始浮点数的初始指数对齐至所述第一目标指数,并基于所述初始浮点数对应的所述第一差值,对所述初始浮点数的尾数进行右移操作,得到所述初始浮点数对应的目标浮点数,以及得到包含所述目标浮点数的处理后行向量。
9.根据权利要求8所述的装置,其特征在于,所述第一比较器,用于在确定初始运算矩阵执行的目标操作为右乘操作的情况下,针对所述初始运算矩阵中的每个列向量,确定所述列向量对应的第二目标指数;
所述减法器,用于确定所述列向量对应的所述第二目标指数、与所述列向量中每个初始浮点数的初始指数之间的第二差值;
所述第一移位器,用于针对所述列向量中的每个初始浮点数,将所述初始浮点数的初始指数对齐至所述第二目标指数,并基于所述初始浮点数对应的所述第二差值,对所述初始浮点数的尾数进行右移操作,得到所述初始浮点数对应的目标浮点数,以及得到包含所述目标浮点数的处理后列向量。
10.根据权利要求9所述的装置,其特征在于,所述点积器,在对多个所述目标运算矩阵进行乘法处理,得到目标处理结果时,还用于:将所述处理后行向量与对应的所述处理后列向量进行点积运算,得到中间处理结果;基于各个中间处理结果,得到所述目标处理结果。
11.根据权利要求7~10任一所述的装置,其特征在于,所述装置还包括:第二移位器;
所述第二移位器,用于按照设置的浮点数格式,对所述初始运算矩阵中的至少部分初始浮点数进行左移操作,得到操作后初始浮点数。
12.根据权利要求7~11任一所述的装置,其特征在于,所述装置还包括:第二比较器;
所述第二比较器,用于按照设置的舍入规则,对所述目标浮点数进行舍入rounding处理,得到处理后目标浮点数。
13.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至6任一所述的浮点数处理方法的步骤;或者
如权利要求7至12任一项所述的浮点数处理装置。
14.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至6任一所述的浮点数处理方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111667082.1A CN114265575A (zh) | 2021-12-31 | 2021-12-31 | 浮点数处理方法、装置、电子设备及存储介质 |
PCT/CN2022/124260 WO2023124362A1 (zh) | 2021-12-31 | 2022-10-10 | 浮点数处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111667082.1A CN114265575A (zh) | 2021-12-31 | 2021-12-31 | 浮点数处理方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114265575A true CN114265575A (zh) | 2022-04-01 |
Family
ID=80832127
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111667082.1A Pending CN114265575A (zh) | 2021-12-31 | 2021-12-31 | 浮点数处理方法、装置、电子设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114265575A (zh) |
WO (1) | WO2023124362A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023124362A1 (zh) * | 2021-12-31 | 2023-07-06 | 上海商汤智能科技有限公司 | 浮点数处理方法、装置、电子设备及存储介质 |
CN118034642A (zh) * | 2024-03-08 | 2024-05-14 | 苏州亿铸智能科技有限公司 | 浮点运算方法、装置、电子设备及存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118446306A (zh) * | 2023-12-29 | 2024-08-06 | 荣耀终端有限公司 | 基于神经网络的推理方法、电子设备及相应装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110050256A (zh) * | 2016-12-07 | 2019-07-23 | 微软技术许可有限责任公司 | 用于神经网络实现的块浮点 |
CN112230882A (zh) * | 2020-10-28 | 2021-01-15 | 海光信息技术股份有限公司 | 浮点数处理装置、浮点数加法装置及浮点数处理方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11157237B2 (en) * | 2018-11-13 | 2021-10-26 | Hewlett Packard Enterprise Development Lp | Memristive dot product circuit based floating point computations |
US11288040B2 (en) * | 2019-06-07 | 2022-03-29 | Intel Corporation | Floating-point dot-product hardware with wide multiply-adder tree for machine learning accelerators |
CN111796798B (zh) * | 2020-09-08 | 2020-12-22 | 腾讯科技(深圳)有限公司 | 一种定点与浮点转换器、处理器、方法以及存储介质 |
CN114265575A (zh) * | 2021-12-31 | 2022-04-01 | 上海阵量智能科技有限公司 | 浮点数处理方法、装置、电子设备及存储介质 |
-
2021
- 2021-12-31 CN CN202111667082.1A patent/CN114265575A/zh active Pending
-
2022
- 2022-10-10 WO PCT/CN2022/124260 patent/WO2023124362A1/zh unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110050256A (zh) * | 2016-12-07 | 2019-07-23 | 微软技术许可有限责任公司 | 用于神经网络实现的块浮点 |
CN112230882A (zh) * | 2020-10-28 | 2021-01-15 | 海光信息技术股份有限公司 | 浮点数处理装置、浮点数加法装置及浮点数处理方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023124362A1 (zh) * | 2021-12-31 | 2023-07-06 | 上海商汤智能科技有限公司 | 浮点数处理方法、装置、电子设备及存储介质 |
CN118034642A (zh) * | 2024-03-08 | 2024-05-14 | 苏州亿铸智能科技有限公司 | 浮点运算方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2023124362A1 (zh) | 2023-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114265575A (zh) | 浮点数处理方法、装置、电子设备及存储介质 | |
EP0377837B1 (en) | Floating point unit having simultaneous multiply and add | |
CN103019647B (zh) | 具有浮点精度保持功能的浮点累加/累减运算方法 | |
CN106951211A (zh) | 一种可重构定浮点通用乘法器 | |
CN113126954B (zh) | 浮点数乘法计算的方法、装置和算术逻辑单元 | |
GB2421327A (en) | Calculating the number of digits in a quotient for integer division | |
CN103914276A (zh) | 利用浮点架构的定点除法电路 | |
KR102581403B1 (ko) | 공유 하드웨어 로직 유닛 및 그것의 다이 면적을 줄이는 방법 | |
CN114296682A (zh) | 浮点数处理装置、方法、电子设备、存储介质及芯片 | |
CN108733347B (zh) | 一种数据处理方法及装置 | |
CN112463112A (zh) | 点积累加方法及装置 | |
WO2021040832A1 (en) | Neural network training with decreased memory consumption and processor utilization | |
CN111124361A (zh) | 算术处理装置及其控制方法 | |
Lang et al. | Very high radix square root with prescaling and rounding and a combined division/square root unit | |
US10216481B2 (en) | Digit recurrence division with scaling and digit selection using intermediate value | |
CN115269003A (zh) | 数据处理方法及装置、处理器、电子设备、存储介质 | |
CN116166217A (zh) | 执行浮点操作的系统和方法 | |
CN113591031A (zh) | 低功耗矩阵运算方法及装置 | |
CN118034642B (zh) | 浮点运算方法、装置、电子设备及存储介质 | |
JPH04172526A (ja) | 浮動小数点除算器 | |
Trivedi et al. | A Review on Single Precision Floating Point Arithmetic Unit of 32 bit Number | |
US7243119B1 (en) | Floating point computing unit | |
Pande et al. | Design of Floating-Point Arithmetic Computational Units for Non Linear Applications | |
Khan et al. | Review of GRPF Strengthen Column | |
CN117910537A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40062796 Country of ref document: HK |