System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机,尤其涉及一种运算单元、浮点数运算方法及装置。
技术介绍
1、浮点数是计算机中一种重要的数字格式,在计算机中浮点数由符号、指数和尾数三部分组成。为了满足不同业务对数据精度的不同需求,计算机通常需要支持多种浮点数计算类型。
2、由于低精度的浮点数(floating point,fp)(如fp16)在处理时的功耗较小,所以倾向于使用低精度的浮点数进行计算。但某些业务对数据精度的需求较高,若只使用低精度的浮点数,无法保证计算结果的精确性,还需混合使用高精度的浮点数(如fp32)进行计算。
3、因此,计算机需要整合更大的计算能力,以支持不同精度的浮点数的计算。如何优化浮点数运算方法,平衡功耗与精度,成为亟需解决的技术问题。
技术实现思路
1、本申请实施例提供了一种运算单元、浮点数运算方法及装置,能够优化浮点数运算方法,在保证数据运算精度的同时兼顾运算功耗。
2、第一方面,本申请实施例提供了一种运算单元,该运算单元包括转换电路以及运算电路;转换电路,用于获取第一浮点数与第二浮点数;转换电路,还用于将第一数据类型的第一浮点数转换成第三数据类型的第三浮点数,以及将第二数据类型的第二浮点数转换成第三数据类型的第四浮点数;运算电路,用于根据第三浮点数和第四浮点数进行运算,得到运算结果。
3、如此,针对不同数据类型的浮点数,运算单元的转换电路将不同数据类型的浮点数统一转换成自定义的数据类型,并将转换后的浮点数输出至运算电路。由运算电路根据
4、根据第一方面,第一浮点数的数据类型为第一数据类型,第二浮点数的数据类型为第二数据类型,第一数据类型和第二数据类型相同或不同。
5、一些示例中,第一浮点数包括一个或多个第一数据类型的浮点数,第二浮点数包括一个或多个第二数据类型的浮点数。
6、根据第一方面,或者以上第一方面的任意一种实现方式,第三数据类型的尾数的位宽高于半精度浮点数尾数的位宽且低于单精度浮点数尾数的位宽。
7、根据第一方面,或者以上第一方面的任意一种实现方式,第三数据类型包括符号、指数以及尾数。
8、根据第一方面,或者以上第一方面的任意一种实现方式,第三数据类型的符号的位宽为第一预设值,第三数据类型的指数的位宽为第二预设值,第三数据类型的尾数的位宽为第三预设值。
9、根据第一方面,或者以上第一方面的任意一种实现方式,第一预设值为1,第二预设值为9,第三预设值为12。
10、根据第一方面,或者以上第一方面的任意一种实现方式,转换电路还用于若第一数据类型与第二数据类型相同,且第一数据类型的第一浮点数的尾数的位宽和第二数据类型的第二浮点数的尾数的位宽都高于第三预设值,则将第一数据类型的第一浮点数拆解成多个第三数据类型的第三浮点数,以及将第二数据类型的第二浮点数拆解成多个第三数据类型的第四浮点数。
11、在一种可能的实现方式中,若第一浮点数与第二浮点数的数据类型相同,且第一浮点数与第二浮点数都为高精度浮点数,都高于第三数据类型中尾数的第三预设值。则转换电路,用于根据第三数据类型的尾数(也即,第三预设值)将第一浮点数拆解成多个第三数据类型的第三浮点数,将第二浮点数拆解成多个第三数据类型的第四浮点数。
12、如此,转换电路可以将高精度的第一浮点数和第二浮点数分别拆解为多个低精度的浮点数。然后,可以复用低精度浮点数乘法器以及低精度浮点数加法器执行相应处理,而不用单独设计高精度浮点数乘法器或高精度浮点数加法器,可以节约运算成本。
13、根据第一方面,或者以上第一方面的任意一种实现方式,转换电路还用于若第一数据类型与第二数据类型相同,且第一数据类型的第一浮点数的尾数的位宽和第二数据类型的第二浮点数的尾数的位宽都低于第三预设值,则将第一数据类型的第一浮点数补全成第三数据类型的第三浮点数,以及将第二数据类型的第二浮点数补全成第三数据类型的第四浮点数。
14、在一种可能的实现方式中,若第一浮点数与第二浮点数的数据类型相同,且第一浮点数与第二浮点数都为低精度浮点数,都低于第三数据类型中尾数的第三预设值。则转换电路,用于根据第三数据类型的尾数(也即,第三预设值)将第一浮点数补全成第三数据类型的第三浮点数,将第二浮点数补全成多个第三数据类型的第四浮点数。
15、如此,转换电路将低精度的第一浮点数和第二浮点数的尾数补零转换成第三数据类型的第一浮点数和第二浮点数。补零只改变第一浮点数和第二浮点数的尾数的长度,增加了数据精度,未改变数值。后续运算时,数据的实际数值未变,不会影响计算结果,还能增加数据精度,提高运算结果的精度。
16、根据第一方面,或者以上第一方面的任意一种实现方式,转换电路还用于若第一数据类型与第二数据类型不相同,且第一数据类型的第一浮点数的尾数的位宽和第二数据类型的第二浮点数的尾数的位宽都高于第三预设值,则将第一数据类型的第一浮点数拆解成多个第三数据类型的第三浮点数,以及将第二数据类型的第二浮点数拆解成多个第三数据类型的第四浮点数。
17、在一种可能的实现方式中,若第一浮点数与第二浮点数的数据类型不相同,且第一浮点数与第二浮点数都为高精度浮点数,都高于第三数据类型中尾数的第三预设值。则转换电路,用于根据第三数据类型的尾数(也即,第三预设值)将第一浮点数拆解成多个第三数据类型的第三浮点数,将第二浮点数拆解成多个第三数据类型的第四浮点数。
18、如此,将不同数据类型的高精度浮点数,根据第三数据类型的尾数拆解成多个低精度的浮点数,复用低精度浮点数乘法器,降低运算时的功耗。
19、根据第一方面,或者以上第一方面的任意一种实现方式,转换电路还用于若第一数据类型与第二数据类型不相同,且第一数据类型的第一浮点数的尾数的位宽和第二数据类型的第二浮点数的尾数的位宽都低于第三预设值,则将第一数据类型的第一浮点数补全成第三数据类型的第三浮点数,以及将第二数据类型的第二浮点数补全成第三数据类型的第四浮点数。
20、在一种可能的实现方式中,若第一浮点数与第二浮点数的数据类型不相同,且第一浮点数与第二浮点数都为低精度浮点数,都低于第三数据类型中尾数的第三预设值。则转换电路,用于根据第三数据类型的尾数(也即,第三预设值)将第一浮点数补全成第三数据类型的第三浮点数,将第二浮点数补全成第三数据类型的第四浮点数。
21、根据第一方面,或者以上第一方面的任意一种实现方式,转换电路还用于若第一数据类型与第二数据类型不相同,且第一数据类型的第一浮点数的尾数的位宽低于第三预设值,第二数据类型的第二浮点数的尾数的位宽高于第本文档来自技高网...
【技术保护点】
1.一种运算单元,其特征在于,所述运算单元包括转换电路以及运算电路;
2.根据权利要求1所述的运算单元,其特征在于,所述第三数据类型包括符号、指数以及尾数;其中,所述第三数据类型的符号的位宽为第一预设值,所述第三数据类型的指数的位宽为第二预设值,所述第三数据类型的尾数的位宽为第三预设值。
3.根据权利要求1或2所述的运算单元,其特征在于,
4.根据权利要求1所述的运算单元,其特征在于,所述第三数据类型的所述第三浮点数的指数的位宽和所述第三数据类型的所述第四浮点数的指数的位宽均大于所述第一数据类型的第一浮点数的指数的位宽和所述第二数据类型的第二浮点数的指数的位宽。
5.根据权利要求1至4任一项所述的运算单元,其特征在于,
6.根据权利要求2至5任一项所述的运算单元,其特征在于,所述第一预设值为1,所述第二预设值为9,所述第三预设值为12。
7.一种浮点数运算方法,其特征在于,包括:
8.根据权利要求7所述的方法,其特征在于,所述第三数据类型包括符号、指数以及尾数;其中,所述第三数据类型的符号的位宽为
9.根据权利要求7或8所述的方法,其特征在于,所述将所述第一数据类型的所述第一浮点数转换成所述第三数据类型的第三浮点数,以及将所述第二数据类型的所述第二浮点数转换成所述第三数据类型的第四浮点数,包括:
10.根据权利要求7所述的方法,其特征在于,所述第三数据类型的所述第三浮点数的指数的位宽和所述第三数据类型的所述第四浮点数的指数的位宽均大于所述第一数据类型的第一浮点数的指数的位宽和所述第二数据类型的第二浮点数的指数的位宽。
11.根据权利要求7至10任一项所述的方法,其特征在于,所述根据所述第三浮点数和所述第四浮点数进行运算,得到运算结果,包括:
12.根据权利要求7至11任一项所述的方法,其特征在于,所述第一预设值为1,所述第二预设值为9,所述第三预设值为12。
13.一种浮点数运算装置,其特征在于,所述装置包括:
14.根据权利要求13所述的装置,其特征在于,所述第三数据类型包括符号、指数以及尾数;其中,所述第三数据类型的符号的位宽为第一预设值,所述第三数据类型的指数的位宽为第二预设值,所述第三数据类型的尾数的位宽为第三预设值。
15.根据权利要求13或14所述的装置,其特征在于,
16.根据权利要求13所述的装置,其特征在于,所述第三数据类型的所述第三浮点数的指数的位宽和所述第三数据类型的所述第四浮点数的指数的位宽均大于所述第一数据类型的第一浮点数的指数的位宽和所述第二数据类型的第二浮点数的指数的位宽。
17.根据权利要求13至16任一项所述的装置,其特征在于,
18.根据权利要求13至17任一项所述的装置,其特征在于,所述第一预设值为1,所述第二预设值为9,所述第三预设值为12。
19.一种芯片,其特征在于,所述芯片包括运算单元,所述运算单元用于实现如权利要求1-6中任一项所述运算单元所实现的功能。
20.一种计算设备,其特征在于,所述计算设备包括主板以及如权利要求19所述的芯片,所述芯片设置在所述主板上,所述芯片包括运算单元,所述运算单元用于实现如权利要求1-6中任一项所述运算单元所实现的功能。
21.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括计算机程序,当所述计算机程序在计算设备上运行时,使得所述计算设备执行如权利要求7-12中任意一项所述的方法。
22.一种计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如权利要求7-12中任意一项所述的方法。
...【技术特征摘要】
1.一种运算单元,其特征在于,所述运算单元包括转换电路以及运算电路;
2.根据权利要求1所述的运算单元,其特征在于,所述第三数据类型包括符号、指数以及尾数;其中,所述第三数据类型的符号的位宽为第一预设值,所述第三数据类型的指数的位宽为第二预设值,所述第三数据类型的尾数的位宽为第三预设值。
3.根据权利要求1或2所述的运算单元,其特征在于,
4.根据权利要求1所述的运算单元,其特征在于,所述第三数据类型的所述第三浮点数的指数的位宽和所述第三数据类型的所述第四浮点数的指数的位宽均大于所述第一数据类型的第一浮点数的指数的位宽和所述第二数据类型的第二浮点数的指数的位宽。
5.根据权利要求1至4任一项所述的运算单元,其特征在于,
6.根据权利要求2至5任一项所述的运算单元,其特征在于,所述第一预设值为1,所述第二预设值为9,所述第三预设值为12。
7.一种浮点数运算方法,其特征在于,包括:
8.根据权利要求7所述的方法,其特征在于,所述第三数据类型包括符号、指数以及尾数;其中,所述第三数据类型的符号的位宽为第一预设值,所述第三数据类型的指数的位宽为第二预设值,所述第三数据类型的尾数的位宽为第三预设值。
9.根据权利要求7或8所述的方法,其特征在于,所述将所述第一数据类型的所述第一浮点数转换成所述第三数据类型的第三浮点数,以及将所述第二数据类型的所述第二浮点数转换成所述第三数据类型的第四浮点数,包括:
10.根据权利要求7所述的方法,其特征在于,所述第三数据类型的所述第三浮点数的指数的位宽和所述第三数据类型的所述第四浮点数的指数的位宽均大于所述第一数据类型的第一浮点数的指数的位宽和所述第二数据类型的第二浮点数的指数的位宽。
11.根据权利要求7至10任一项所述的方法,其特征在于,所述根据所述第三浮点数和所述第四浮点数进行...
【专利技术属性】
技术研发人员:李震桁,林强,董镇江,蒋东龙,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。