本申请涉及数据处理技术领域,特别涉及一种基于posit数据格式的浮点数乘法运算方法及装置。
背景技术:
随着大数据时代的到来,人工神经网络技术得到飞速发展。人工神经网络是由大量处理单元互联组成的非线性、自适应信息处理系统,试图通过模拟大脑神经网络处理、记忆信息的方式进行信息处理。
人工神经网络的重点在于数据处理,即对浮点数进行运算、分析,从而建立神经网络模型。目前通常采用ieee754规范的规格化单精度浮点数格式(简称为ieee754数据格式)的浮点数执行数据处理的过程。这种数据格式的浮点数可以表示一个很大范围的数值,同时也能满足神经网络训练的要求。虽然上述ieee754数据格式的浮点数在精度上能够满足神经网络训练的要求,但是由于其位宽较长,在处理这种数据时需要耗费一定的时间并且消耗一定的资源,进而影响神经网络的训练速度,使神经网络训练的效率降低。
如果能够将posit数据格式的浮点数直接用于执行人工神经网络的数据处理过程,将大大缩短所需的时间。但是,目前还没有基于posit数据格式的浮点数的乘法运算方法。
技术实现要素:
本申请提供了一种基于posit数据格式的浮点数乘法运算方法及装置,可用于实现基于posit数据格式的浮点数乘法运算。
第一方面,本申请实施例提供一种基于posit数据格式的浮点数乘法运算方法,所述方法包括:
获取posit数据格式的第一浮点数和posit数据格式的第二浮点数;
对所述第一浮点数进行分析,确定所述第一浮点数中第一符号段的值、第一组织段的值、第一指数段的值和第一尾数段的值;
对所述第二浮点数进行分析,确定所述第二浮点数中第二符号段的值、第二组织段的值、第二指数段的值和第二尾数段的值;
根据所述第一符号段的值和所述第二符号段的值,确定目标符号段的值;
根据所述第一尾数段的值和所述第二尾数段的值,确定目标尾数段的值和目标指数段的进位;
根据所述第一组织段的值、所述第一指数段的值、所述第二组织段的值、所述第二指数段的值和所述目标指数段的进位,确定目标组织段的值和目标指数段的值;
将所述目标符号段的值、所述目标组织段的值、所述目标指数段的值和所述目标尾数段的值以二进制码的形式按照预设总位宽组成目标浮点数。
结合第一方面,在第一方面的一种可实现方式中,根据所述第一符号段的值和所述第二符号段的值,确定目标符号段的值,包括:
按照预设的转换关系,将所述第一符号段的值转换成第一符号段的科学表示值;
按照预设的转换关系,将所述第二符号段的值转换成第二符号段的科学表示值;
根据所述第一符号段的科学表示值和所述第二符号段的科学表示值,确定目标符号段的科学表示值;
按照预设的转换关系,将所述目标符号段的科学表示值转换成所述目标符号段的值。
结合第一方面,在第一方面的一种可实现方式中,所述第一符号段的科学表示值按照下述公式确定:
sa=sa
其中,sa是所述第一符号段的科学表示值;sa是所述第一符号段的值;
所述第二符号段的科学表示值按照下述公式确定:
sb=sb
其中,sb是所述第二符号段的科学表示值;sb是所述第二符号段的值。
结合第一方面,在第一方面的一种可实现方式中,所述目标符号段的科学表示值按照下述公式确定:
s=sa⊕sb
其中,s是所述目标符号段的科学表示值;sa是所述第一符号段的科学表示值;sb是所述第二符号段的科学表示值。
结合第一方面,在第一方面的一种可实现方式中,所述目标符号段的值按照下述公式确定:
s=s
其中,s是所述目标符号段的值;s是所述目标符号段的科学表示值。
结合第一方面,在第一方面的一种可实现方式中,根据所述第一尾数段的值和所述第二尾数段的值,确定目标尾数段的值和目标指数段的进位,包括:
按照预设的转换关系,将所述第一尾数段的值转换成第一尾数段的科学表示值;
按照预设的转换关系,将所述第二尾数段的值转换成第二尾数段的科学表示值;
根据所述第一尾数段的科学表示值与所述第二尾数段的科学表示值的乘积,确定所述目标尾数段的科学表示值和所述目标指数段的进位;
按照预设的转换关系,将所述目标尾数段的科学表示值转换成所述目标尾数段的值。
结合第一方面,在第一方面的一种可实现方式中,所述第一尾数段的科学表示值按照下述公式确定:
fa=fa
其中,fa是所述第一尾数段的科学表示值;fa是所述第一尾数段的值;
所述第二尾数段的科学表示值按照下述公式确定:
fb=fb
其中,fb是所述第二尾数段的科学表示值;fb是所述第二尾数段的值。
结合第一方面,在第一方面的一种可实现方式中,所述目标尾数段的科学表示值和所述目标指数段的进位按照下述步骤确定:
计算下述公式中的x、y和z:
1.fa*1.fb=xy.z
其中,fa是所述第一尾数段的科学表示值;fb是所述第二尾数段的科学表示值;x表示所述目标指数段的进位,取值为0或1;y表示乘法结果的次高位,取值为0或1;z表示乘法结果小数点后的所有尾数;
如果x=0,所述目标尾数段的科学表示值根据下述公式确定:
f=z
如果x=1,所述目标尾数段的科学表示值根据下述公式确定:
f=yz
其中,f是所述目标尾数段的科学表示值。
结合第一方面,在第一方面的一种可实现方式中,所述目标尾数段的值按照下述公式确定:
f=f
其中,f是所述目标尾数段的值;f是所述目标尾数段的科学表示值。
结合第一方面,在第一方面的一种可实现方式中,根据所述第一组织段的值、所述第一指数段的值、所述第二组织段的值、所述第二指数段的值和所述目标指数段的进位,确定目标组织段的值和目标指数段的值,包括:
按照预设的转换关系,根据所述第一组织段的值、所述第一指数段的值和预设指数段位宽,确定第一指数段的科学表示值;
按照预设的转换关系,根据所述第二组织段的值、所述第二指数段的值和预设指数段位宽,确定第二指数段的科学表示值;
根据所述第一指数段的科学表示值、所述第二指数段的科学表示值和所述目标指数段的进位,确定目标指数段的科学表示值;
按照预设的转换关系,将所述目标指数段的科学表示值转换成所述目标组织段的值和所述目标指数段的值。
结合第一方面,在第一方面的一种可实现方式中,所述第一指数段的科学表示值按照下述步骤确定:
ea=ra×2es+ea
其中,ea是所述第一指数段的科学表示值;ra是所述第一组织段的值;ea是所述第一指数段的值;es是所述预设指数段位宽;
所述第二指数段的科学表示值按照下述步骤确定:
eb=rb×2es+eb
其中,eb是所述第二指数段的科学表示值;rb是所述第二组织段的值;eb是所述第二指数段的值;es是所述预设指数段位宽。
结合第一方面,在第一方面的一种可实现方式中,所述目标指数段的科学表示值按照下述步骤确定:
计算下述公式中的e0:
e0=ea+eb
其中,ea是所述第一指数段的科学表示值;eb是第二指数段的科学表示值。
如果x=0,所述目标指数段的科学表示值根据下述公式确定:
e=e0
如果x=1,所述目标指数段的科学表示值根据下述公式确定:
e=e0+1
其中,e是所述目标指数段的科学表示值。
结合第一方面,在第一方面的一种可实现方式中,所述目标组织段的值按照下述公式确定:
其中,r是所述目标组织段的值,并且,当r为非整数时,r值向下取整;e是所述目标指数段的科学表示值,es是所述预设指数段位宽。
结合第一方面,在第一方面的一种可实现方式中,所述目标指数段的值按照下述公式确定:
e=e-2es*r
其中,e是所述目标指数段的值;e是所述目标指数段的科学表示值,es是所述预设指数段位宽;r是所述目标组织段的值。
结合第一方面,在第一方面的一种可实现方式中,将所述目标符号段的值、所述目标组织段的值、所述目标指数段的值和所述目标尾数段的值以二进制码的形式按照预设总位宽组成目标浮点数,包括:
按先后顺序将所述目标符号段的值对应的二进制码、所述目标组织段的值对应的二进制码、所述目标指数段的值对应的二进制码和所述目标尾数段的值对应的二进制码进行拼接;
判断拼接后的二进制码的位宽是否大于预设总位宽,如果拼接后的二进制码的位宽大于预设总位宽,则从尾部舍去大于预设总位宽的位数,得到所述目标浮点数;否则,将拼接后的二进制码作为所述目标浮点数。
第二方面,本申请实施例提供一种基于posit数据格式的浮点数乘法运算装置,所述装置包括:
获取单元,用于获取posit数据格式的第一浮点数和posit数据格式的第二浮点数;
分析单元,用于对所述第一浮点数进行分析,确定所述第一浮点数中第一符号段的值、第一组织段的值、第一指数段的值和第一尾数段的值;以及,对所述第二浮点数进行分析,确定所述第二浮点数中第二符号段的值、第二组织段的值、第二指数段的值和第二尾数段的值;
处理单元,用于根据所述第一符号段的值和所述第二符号段的值,确定目标符号段的值;以及,根据所述第一尾数段的值和所述第二尾数段的值,确定目标尾数段的值和目标指数段的进位;以及,根据所述第一组织段的值、所述第一指数段的值、所述第二组织段的值、所述第二指数段的值和所述目标指数段的进位,确定目标组织段的值和目标指数段的值;
组成单元,用于将所述目标符号段的值、所述目标组织段的值、所述目标指数段的值和所述目标尾数段的值以二进制码的形式按照预设总位宽组成目标浮点数。
结合第二方面,在第二方面的一种可实现方式中,所述处理单元具体用于:
按照预设的转换关系,将所述第一符号段的值转换成第一符号段的科学表示值;
按照预设的转换关系,将所述第二符号段的值转换成第二符号段的科学表示值;
根据所述第一符号段的科学表示值和所述第二符号段的科学表示值,确定目标符号段的科学表示值;
按照预设的转换关系,将所述目标符号段的科学表示值转换成所述目标符号段的值。
结合第二方面,在第二方面的一种可实现方式中,所述第一符号段的科学表示值按照下述公式确定:
sa=sa
其中,sa是所述第一符号段的科学表示值;sa是所述第一符号段的值;
所述第二符号段的科学表示值按照下述公式确定:
sb=sb
其中,sb是所述第二符号段的科学表示值;sb是所述第二符号段的值。
结合第二方面,在第二方面的一种可实现方式中,所述目标符号段的科学表示值按照下述公式确定:
s=sa⊕sb
其中,s是所述目标符号段的科学表示值;sa是所述第一符号段的科学表示值;sb是所述第二符号段的科学表示值。
结合第二方面,在第二方面的一种可实现方式中,所述目标符号段的值按照下述公式确定:
s=s
其中,s是所述目标符号段的值;s是所述目标符号段的科学表示值。
结合第二方面,在第二方面的一种可实现方式中,所述处理单元具体用于:
按照预设的转换关系,将所述第一尾数段的值转换成第一尾数段的科学表示值;
按照预设的转换关系,将所述第二尾数段的值转换成第二尾数段的科学表示值;
根据所述第一尾数段的科学表示值与所述第二尾数段的科学表示值的乘积,确定所述目标尾数段的科学表示值和所述目标指数段的进位;
按照预设的转换关系,将所述目标尾数段的科学表示值转换成所述目标尾数段的值。
结合第二方面,在第二方面的一种可实现方式中,所述第一尾数段的科学表示值按照下述公式确定:
fa=fa
其中,fa是所述第一尾数段的科学表示值;fa是所述第一尾数段的值;
所述第二尾数段的科学表示值按照下述公式确定:
fb=fb
其中,fb是所述第二尾数段的科学表示值;fb是所述第二尾数段的值。
结合第二方面,在第二方面的一种可实现方式中,所述目标尾数段的科学表示值和所述目标指数段的进位按照下述步骤确定:
计算下述公式中的x、y和z:
1.fa*1.fb=xy.z
其中,fa是所述第一尾数段的科学表示值;fb是所述第二尾数段的科学表示值;x表示所述目标指数段的进位,取值为0或1;y表示乘法结果的次高位,取值为0或1;z表示乘法结果小数点后的所有尾数;
如果x=0,所述目标尾数段的科学表示值根据下述公式确定:
f=z
如果x=1,所述目标尾数段的科学表示值根据下述公式确定:
f=yz
其中,f是所述目标尾数段的科学表示值。
结合第二方面,在第二方面的一种可实现方式中,所述目标尾数段的值按照下述公式确定:
f=f
其中,f是所述目标尾数段的值;f是所述目标尾数段的科学表示值。
结合第二方面,在第二方面的一种可实现方式中,所述处理单元具体用于:
按照预设的转换关系,根据所述第一组织段的值、所述第一指数段的值和预设指数段位宽,确定第一指数段的科学表示值;
按照预设的转换关系,根据所述第二组织段的值、所述第二指数段的值和预设指数段位宽,确定第二指数段的科学表示值;
根据所述第一指数段的科学表示值、所述第二指数段的科学表示值和所述目标指数段的进位,确定目标指数段的科学表示值;
按照预设的转换关系,将所述目标指数段的科学表示值转换成所述目标组织段的值和所述目标指数段的值。
结合第二方面,在第二方面的一种可实现方式中,所述第一指数段的科学表示值按照下述步骤确定:
ea=ra×2es+ea
其中,ea是所述第一指数段的科学表示值;ra是所述第一组织段的值;ea是所述第一指数段的值;es是所述预设指数段位宽;
所述第二指数段的科学表示值按照下述步骤确定:
eb=rb×2es+eb
其中,eb是所述第二指数段的科学表示值;rb是所述第二组织段的值;eb是所述第二指数段的值;es是所述预设指数段位宽。
结合第二方面,在第二方面的一种可实现方式中,所述目标指数段的科学表示值按照下述步骤确定:
计算下述公式中的e0:
e0=ea+eb
其中,ea是所述第一指数段的科学表示值;eb是第二指数段的科学表示值。
如果x=0,所述目标指数段的科学表示值根据下述公式确定:
e=e0
如果x=1,所述目标指数段的科学表示值根据下述公式确定:
e=e0+1
其中,e是所述目标指数段的科学表示值。
结合第二方面,在第二方面的一种可实现方式中,所述目标组织段的值按照下述公式确定:
其中,r是所述目标组织段的值,并且,当r为非整数时,r值向下取整;e是所述目标指数段的科学表示值,es是所述预设指数段位宽。
结合第二方面,在第二方面的一种可实现方式中,所述目标指数段的值按照下述公式确定:
e=e-2es*r
其中,e是所述目标指数段的值;e是所述目标指数段的科学表示值,es是所述预设指数段位宽;r是所述目标组织段的值。
结合第二方面,在第二方面的一种可实现方式中,所述组成单元具体用于:
按先后顺序将所述目标符号段的值对应的二进制码、所述目标组织段的值对应的二进制码、所述目标指数段的值对应的二进制码和所述目标尾数段的值对应的二进制码进行拼接;
判断拼接后的二进制码的位宽是否大于预设总位宽,如果拼接后的二进制码的位宽大于预设总位宽,则从尾部舍去大于预设总位宽的位数,得到所述目标浮点数;否则,将拼接后的二进制码作为所述目标浮点数。
本申请实施例中,采用posit数据格式进行乘法运算,则可以在0附近保证精度的同时,又可以很大程度的减少数据位宽,从而减少神经网络的训练时间,也降低了对于存储,位宽等资源的需求。
附图说明
图1是本申请提供的posit数据格式的浮点数具体的数据表示形式的示意图;
图2是本申请实施例提供的一种基于posit数据格式的浮点数乘法运算方法所对应的流程示意图;
图3是本申请实施例提供的一种第一浮点数的分析方法所对应的流程示意图;
图4是本申请实施例提供的一种基于posit数据格式的浮点数乘法运算装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请技术方案中的posit数据格式的参数包括n和es,其中n为整个数据表示的总位宽,es为指数段的位宽,两个参数都是在表示数据前需要确定的。n可以取任意正整数值。本实施例中以n表示预设总位宽,以es表示预设指数段位宽,预设指数段位宽是根据对posit数据格式的浮点数的实际需求选择的,预设指数段位宽所取的值小于预设总位宽所取的值。
图1为本申请提供的posit数据格式的浮点数具体的数据表示形式的示意图。如图1所示,posit数据格式的浮点数包括符号段s,组织段r(图1中的r指的是组织段的二进制码)、指数段e和尾数段f四个部分。
对于一个posit数据格式的浮点数来说,该浮点数与其真值a的关系为:
其中,s表示posit数据格式中符号段的值,只有一位,由最高位表示,当a为正数时,s的值为0,当a为负数时,s的值为1。r表示posit数据格式中组织段的值;e表示posit数据格式中指数段的值,f表示posit数据格式中尾数段的值,是将整数部分表示为1后,小数点后的所有尾数。
本申请实施例中,首先定义一种在算法过程中运用到的浮点数的科学表示形式,对于真值为a的浮点数,有:
a=(-1)s×2e×1.f
其中,s为符号段的科学表示值,当a为正数时,符号段s为0,当a为负数时,符号段s为1;e为指数段的科学表示值;f为尾数段的科学表示值,是将整数部分表示为1后,小数点后的所有尾数。
具体请参考图2,其示例性示出了本申请实施例提供的一种基于posit数据格式的浮点数乘法运算方法所对应的流程示意图,具体包括如下步骤:
步骤201,获取posit数据格式的第一浮点数和posit数据格式的第二浮点数。
步骤202,对第一浮点数进行分析,确定第一浮点数中第一符号段的值、第一组织段的值、第一指数段的值和第一尾数段的值。
步骤203,对第二浮点数进行分析,确定第二浮点数中第二符号段的值、第二组织段的值、第二指数段的值和第二尾数段的值。
步骤204,根据第一符号段的值和第二符号段的值,确定目标符号段的值。
步骤205,根据第一尾数段的值和第二尾数段的值,确定目标尾数段的值和目标指数段的进位。
步骤206,根据第一组织段的值、第一指数段的值、第二组织段的值、第二指数段的值和目标指数段的进位,确定目标组织段的值和目标指数段的值。
步骤207,将目标符号段的值、目标组织段的值、目标指数段的值和目标尾数段的值以二进制码的形式按照预设总位宽组成目标浮点数。
本申请实施例中,采用posit数据格式进行乘法运算,则可以在0附近保证精度的同时,又可以很大程度的减少数据位宽,从而减少神经网络的训练时间,也降低了对于存储,位宽等资源的需求。
具体来说,步骤201中,第一浮点数和第二浮点数都是posit数据格式的浮点数。posit数据格式的浮点数的预设总位宽是n位,n的具体数值可以是预先设置的,其中,预设总位宽可以是指浮点数所占的位宽。
步骤202中,对第一浮点数进行分析时,可以参考图3,其示例性示出了本申请实施例提供的一种第一浮点数的分析方法所对应的流程示意图,具体包括如下步骤:
步骤301,对第一浮点数进行分析,确定第一浮点数中第一符号段的二进制码、第一组织段的二进制码、第一指数段的二进制码和第一尾数段的二进制码。
其中,第一符号段占1位,通常是首位。第一符号段的二进制码如果是“0”,则表示该浮点数的真值是正数;第一符号段的二进制码如果是“1”,则表示该浮点数的真值是负数。
第一组织段位于第一符号段之后,其所占的位宽是不确定的,以图3示出的浮点数为例,该浮点数中组织段所占的位宽是8位。第一组织段的二进制码可以是连续的0以及后续的一个1,而连续的0的个数是不确定的;组织段的二进制码也可以是连续的1以及后续的一个0,而连续的1的个数也是不确定的。
第一指数段位于第一组织段之后,预设指数段位宽是es位,es的具体数值可以是预先设置的,其中,预设指数段位宽可以是指第一指数段所占的位宽。
第一浮点数中第一指数段的二进制码是根据预设指数段位宽、第一符号段的二进制码及第一组织段的二进制码确定的。
具体地,根据第一符号段的二进制码,确定第一符号段的位宽;以及,根据组织段的二进制码,确定组织段的位宽。
如果预设总位宽减去第一符号段的位宽和第一组织段的位宽后,剩余的第一位宽大于或者等于预设指数段位宽,则从第一浮点数中截取预设指数段位宽,得到第一指数段的二进制码。
如果预设总位宽减去第一符号段的位宽和第一组织段的位宽后,剩余的第一位宽小于预设指数段位宽,则对第一位宽采用补0的方式得到第一指数段的二进制码。
具体实施过程中,从第一浮点数舍去第一符号段和组织段分别对应的二进制码,从剩余的二进制码中按从头到尾的顺序,截取es位的二进制码,所截取到的二进制码就是第一指数段对应的二进制码。
需要说明的是,在可能的情形中,从第一浮点数舍去第一符号段和组织段分别对应的二进制码后,剩余的二进制码的位宽小于es位,此时,可以通过补0的方式,在剩余的二进制码之后补0,使得第一指数段所占的位宽是es位。举个例子,假设es=11,剩余的二进制码是“0000000001”,剩余的二进制码的位宽是10位,小于es(es=11)位,此时,可以在在剩余的二进制码之后补0,即第一指数段的二进制码是“00000000010”,使其所占的位宽满足es位(即满足11位的位宽)。
第一尾数段位于第一指数段之后,是指小数点后的所有尾数。在第一浮点数中,第一尾数段可能存在也可能不存在,在不存在的情况下,第一尾数段的二进制码是0。
具体地,根据第一符号段的二进制码,确定第一符号段的位宽;以及,根据组织段的二进制码,确定组织段对应的位宽。
如果预设总位宽减去第一符号段的位宽、第一组织段的位宽和预设指数段位宽后,剩余第二位宽,则根据第二位宽确定第一尾数段的二进制码。
如果预设总位宽减去第一符号段的位宽、第一组织段的位宽和预设指数段位宽后,未剩余第二位宽,则确定第一尾数段的二进制码为0。
需要说明的是,上文描述的第一尾数段不存在的情况是指,从第一浮点数舍去第一符号段、组织段和第一指数段分别对应的二进制码后,没有剩余的二进制码,此时,第一尾数段不存在,也即第一尾数段的二进制码是0。
步骤302,根据第一符号段的二进制码,确定第一符号段的值。
步骤303,根据第一组织段的二进制码,确定第一组织段的值。
针对第一浮点数中组织段的二进制码,如果该二进制码的首位是0,则表示第一浮点数中组织段的值是负数;如果该二进制码的首位是1,则表示第一浮点数中组织段的值是正数或0。
如果组织段的二进制码由a个1和1个0组成,则组织段的值为a-1;如果组织段的二进制码由a个0和1个1组成,则组织段的值为-a。
步骤304,根据第一指数段的二进制码,确定第一指数段的值。
第一浮点数(即posit数据格式的浮点数)是0和1组合成的二进制数。将第一浮点数中第一指数段的二进制码由二进制转换成十进制,所得到的值可以确定为第一浮点数中第一指数段的值。
步骤305,根据第一尾数段的二进制码,确定第一尾数段的值。
步骤203中,分析第二浮点数的方法可以参考步骤202所描述的内容,此处不再赘述。
步骤204中,目标符号段的值可以按照以下方法确定:
按照预设的转换关系,将第一符号段的值转换成第一符号段的科学表示值;以及,按照预设的转换关系,将第二符号段的值转换成第二符号段的科学表示值;以及,根据第一符号段的科学表示值和第二符号段的科学表示值,确定目标符号段的科学表示值;以及,按照预设的转换关系,将目标符号段的科学表示值转换成目标符号段的值。
具体地,第一符号段的科学表示值按照下述公式确定:
sa=sa
其中,sa是第一符号段的科学表示值;sa是第一符号段的值;
第二符号段的科学表示值按照下述公式确定:
sb=sb
其中,sb是第二符号段的科学表示值;sb是第二符号段的值。
进一步地,目标符号段的科学表示值按照下述公式确定:
s=sa⊕sb
其中,s是目标符号段的科学表示值;sa是第一符号段的科学表示值;sb是第二符号段的科学表示值。
进一步地,目标符号段的值按照下述公式确定:
s=s
其中,s是目标符号段的值;s是目标符号段的科学表示值。
步骤205中,目标尾数段的值和目标指数段的进位可以按照以下方法确定:
按照预设的转换关系,将第一尾数段的值转换成第一尾数段的科学表示值;以及,按照预设的转换关系,将第二尾数段的值转换成第二尾数段的科学表示值;以及,根据第一尾数段的科学表示值与第二尾数段的科学表示值的乘积,确定目标尾数段的科学表示值和目标指数段的进位;以及,按照预设的转换关系,将目标尾数段的科学表示值转换成目标尾数段的值。
具体地,第一尾数段的科学表示值按照下述公式确定:
fa=fa
其中,fa是第一尾数段的科学表示值;fa是第一尾数段的值;
第二尾数段的科学表示值按照下述公式确定:
fb=fb
其中,fb是第二尾数段的科学表示值;fb是第二尾数段的值。
进一步地,目标尾数段的科学表示值和目标指数段的进位按照下述步骤确定:
计算下述公式中的x、y和z:
1.fa*1.fb=xy.z
其中,fa是第一尾数段的科学表示值;fb是第二尾数段的科学表示值;x表示所述目标指数段的进位,取值为0或1;y表示乘法结果的次高位,取值为0或1;z表示乘法结果小数点后的所有尾数;
如果x=0,目标尾数段的科学表示值根据下述公式确定:
f=z
如果x=1,目标尾数段的科学表示值根据下述公式确定:
f=yz
其中,f是目标尾数段的科学表示值。
目标尾数段的值按照下述公式确定:
f=f
其中,f是目标尾数段的值;f是目标尾数段的科学表示值。
步骤206中,目标组织段的值和目标指数段的值可以按照以下方法确定:
按照预设的转换关系,根据第一组织段的值、第一指数段的值和预设指数段位宽,确定第一指数段的科学表示值;以及,按照预设的转换关系,根据第二组织段的值、第二指数段的值和预设指数段位宽,确定第二指数段的科学表示值;以及,根据第一指数段的科学表示值、第二指数段的科学表示值和目标指数段的进位,确定目标指数段的科学表示值;以及,按照预设的转换关系,将目标指数段的科学表示值转换成目标组织段的值和目标指数段的值。
具体地,第一指数段的科学表示值按照下述步骤确定:
ea=ra×2es+ea
其中,ea是第一指数段的科学表示值;ra是第一组织段的值;ea是第一指数段的值;es是预设指数段位宽;
第二指数段的科学表示值按照下述步骤确定:
eb=rb×2es+eb
其中,eb是第二指数段的科学表示值;rb是第二组织段的值;eb是第二指数段的值;es是预设指数段位宽。
进一步地,目标指数段的科学表示值按照下述步骤确定:
计算下述公式中的e0:
e0=ea+eb
其中,ea是第一指数段的科学表示值;eb是第二指数段的科学表示值。
如果x=0,目标指数段的科学表示值根据下述公式确定:
e=e0
如果x=1,目标指数段的科学表示值根据下述公式确定:
e=e0+1
其中,e是所述目标指数段的科学表示值。
进一步地,目标组织段的值按照下述公式确定:
其中,r是目标组织段的值,并且,当r为非整数时,r值向下取整;e是目标指数段的科学表示值,es预设指数段位宽。
目标指数段的值按照下述公式确定:
e=e-2es*r
其中,e是目标指数段的值;e是目标指数段的科学表示值,es是预设指数段位宽;r是目标组织段的值。
步骤207中,目标浮点数具体可以按照下述方法确定:
首先,按先后顺序将目标符号段的值对应的二进制码、目标组织段的值对应的二进制码、目标指数段的值对应的二进制码和目标尾数段的值对应的二进制码进行拼接。
其次,判断拼接后的二进制码的位宽是否大于预设总位宽,如果拼接后的二进制码的位宽大于预设总位宽,则从尾部舍去大于预设总位宽的位数,得到所述目标浮点数;否则,将拼接后的二进制码作为所述目标浮点数。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图4示例性示出了本申请实施例提供的一种基于posit数据格式的浮点数乘法运算装置的结构示意图。如图4所示,该装置具有实现上述浮点数乘法运算方法的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以包括:获取单元401、分析单元402、处理单元403和组成单元404。
获取单元401,用于获取posit数据格式的第一浮点数和posit数据格式的第二浮点数;
分析单元402,用于对所述第一浮点数进行分析,确定所述第一浮点数中第一符号段的值、第一组织段的值、第一指数段的值和第一尾数段的值;以及,对所述第二浮点数进行分析,确定所述第二浮点数中第二符号段的值、第二组织段的值、第二指数段的值和第二尾数段的值;
处理单元403,用于根据所述第一符号段的值和所述第二符号段的值,确定目标符号段的值;以及,根据所述第一尾数段的值和所述第二尾数数段的值,确定目标尾数段的值和目标指数段的进位;以及,根据所述第一组织段的值、所述第一指数段的值、所述第二组织段的值、所述第二指数段的值和所述目标指数段的进位,确定目标组织段的值和目标指数段的值;
组成单元404,用于将所述目标符号段的值、所述目标组织段的值、所述目标指数段的值和所述目标尾数段的值以二进制码的形式按照预设总位宽组成目标浮点数。
可选地,所述处理单元403具体用于:
按照预设的转换关系,将所述第一符号段的值转换成第一符号段的科学表示值;
按照预设的转换关系,将所述第二符号段的值转换成第二符号段的科学表示值;
根据所述第一符号段的科学表示值和所述第二符号段的科学表示值,确定目标符号段的科学表示值;
按照预设的转换关系,将所述目标符号段的科学表示值转换成所述目标符号段的值。
可选地,所述第一符号段的科学表示值按照下述公式确定:
sa=sa
其中,sa是所述第一符号段的科学表示值;sa是所述第一符号段的值;
所述第二符号段的科学表示值按照下述公式确定:
sb=sb
其中,sb是所述第二符号段的科学表示值;sb是所述第二符号段的值。
可选地,所述目标符号段的科学表示值按照下述公式确定:
s=sa⊕sb
其中,s是所述目标符号段的科学表示值;sa是所述第一符号段的科学表示值;sb是所述第二符号段的科学表示值。
可选地,所述目标符号段的值按照下述公式确定:
s=s
其中,s是所述目标符号段的值;s是所述目标符号段的科学表示值。
可选地,所述处理单元403具体用于:
按照预设的转换关系,将所述第一尾数段的值转换成第一尾数段的科学表示值;
按照预设的转换关系,将所述第二尾数段的值转换成第二尾数段的科学表示值;
根据所述第一尾数段的科学表示值与所述第二尾数段的科学表示值的乘积,确定所述目标尾数段的科学表示值和所述目标指数段的进位;
按照预设的转换关系,将所述目标尾数段的科学表示值转换成所述目标尾数段的值。
可选地,所述第一尾数段的科学表示值按照下述公式确定:
fa=fa
其中,fa是所述第一尾数段的科学表示值;fa是所述第一尾数段的值;
所述第二尾数段的科学表示值按照下述公式确定:
fb=fb
其中,fb是所述第二尾数段的科学表示值;fb是所述第二尾数段的值。
可选地,所述目标尾数段的科学表示值和所述目标指数段的进位按照下述步骤确定:
计算下述公式中的x、y和z:
1.fa*1.fb=xy.z
其中,fa是所述第一尾数段的科学表示值;fb是所述第二尾数段的科学表示值;x表示所述目标指数段的进位,取值为0或1;y表示乘法结果的次高位,取值为0或1;z表示乘法结果小数点后的所有尾数;
如果x=0,所述目标尾数段的科学表示值根据下述公式确定:
f=z
如果x=1,所述目标尾数段的科学表示值根据下述公式确定:
f=yz
其中,f是所述目标尾数段的科学表示值。
可选地,所述目标尾数段的值按照下述公式确定:
f=f
其中,f是所述目标尾数段的值;f是所述目标尾数段的科学表示值。
可选地,所述处理单元403具体用于:
按照预设的转换关系,根据所述第一组织段的值、所述第一指数段的值和预设指数段位宽,确定第一指数段的科学表示值;
按照预设的转换关系,根据所述第二组织段的值、所述第二指数段的值和预设指数段位宽,确定第二指数段的科学表示值;
根据所述第一指数段的科学表示值、所述第二指数段的科学表示值和所述目标指数段的进位,确定目标指数段的科学表示值;
按照预设的转换关系,将所述目标指数段的科学表示值转换成所述目标组织段的值和所述目标指数段的值。
可选地,所述第一指数段的科学表示值按照下述步骤确定:
ea=ra×2es+ea
其中,ea是所述第一指数段的科学表示值;ra是所述第一组织段的值;ea是所述第一指数段的值;es是所述预设指数段位宽;
所述第二指数段的科学表示值按照下述步骤确定:
eb=rb×2es+eb
其中,eb是所述第二指数段的科学表示值;rb是所述第二组织段的值;eb是所述第二指数段的值;es是所述预设指数段位宽。
可选地,所述目标指数段的科学表示值按照下述步骤确定:
计算下述公式中的e0:
e0=ea+eb
其中,ea是所述第一指数段的科学表示值;eb是第二指数段的科学表示值。
如果x=0,所述目标指数段的科学表示值根据下述公式确定:
e=e0
如果x=1,所述目标指数段的科学表示值根据下述公式确定:
e=e0+1
其中,e是所述目标指数段的科学表示值。
可选地,所述目标组织段的值按照下述公式确定:
其中,r是所述目标组织段的值,并且,当r为非整数时,r值向下取整;e是所述目标指数段的科学表示值,es是所述预设指数段位宽。
可选地,所述目标指数段的值按照下述公式确定:
e=e-2es*r
其中,e是所述目标指数段的值;e是所述目标指数段的科学表示值,es是所述预设指数段位宽;r是所述目标组织段的值。
可选地,所述组成单元304具体用于:
按先后顺序将所述目标符号段的值对应的二进制码、所述目标组织段的值对应的二进制码、所述目标指数段的值对应的二进制码和所述目标尾数段的值对应的二进制码进行拼接;
判断拼接后的二进制码的位宽是否大于预设总位宽,如果拼接后的二进制码的位宽大于预设总位宽,则从尾部舍去大于预设总位宽的位数,得到所述目标浮点数;否则,将拼接后的二进制码作为所述目标浮点数。
本申请实施例中提供的基于posit数据格式的乘法运算方法,能够运用于神经网络的训练过程中,其运算数据近似服从正态分布,可通过变换使数据集中在0附近,本申请中posit数据格式的浮点数的预设总位宽是可以调控的,可以很大程度的减少数据位宽,进而减少存储所需要的资源以及读写过程所消耗的资源,提高神经网络训练的效率。
本申请实施例还提供了一种存储介质,所述存储介质中存储有计算机程序,当浮点数乘法运算装置的至少一个处理器执行所述计算机程序时,浮点数乘法运算装置执行上述实施例所述的浮点数乘法运算方法。
所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-onlymemory,简称:rom)或随机存储记忆体(英文:randomaccessmemory,简称:ram)等。
本领域的技术人员可以清楚地了解到本申请实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于服务构建装置和服务加载装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
以上所述的本申请实施方式并不构成对本申请保护范围的限定。