一种浮点型数据处理方法及相关装置制造方法及图纸

技术编号:39241771 阅读:9 留言:0更新日期:2023-10-30 11:54
一种浮点型数据处理方法以及相关装置。本申请实施例可应用于人工智能技术领域。其方法包括:首先,获取第一向量及第二向量;其次,将第一向量中的所有第一元素与第二向量中的所有第二元素进行浮点乘法运算,得到K组乘法运算结果;再次,分别对K组乘法运算结果中每组乘法运算结果的M个乘法结果进位及M个乘法结果和位进行求和处理,得到K个第一和结果;接着,将K个第一和结果依次进行规格化移位及对阶移位,得到K个乘加运算结果;然后,对K个乘加运算结果进行求和处理,得到第二和结果;最后,对第二和结果进行规格化移位,得到模型运算结果。本申请提供方法,极大地保留了中间计算过程的计算精度,提升计算结果的准确性。提升计算结果的准确性。提升计算结果的准确性。

【技术实现步骤摘要】
一种浮点型数据处理方法及相关装置


[0001]本申请涉及人工智能
,尤其涉及一种浮点型数据处理方法及相关装置。

技术介绍

[0002]目前,在一些业界主流AI(Artificial Intelligence,人工智能)处理器中,内积的应用场景十分广泛,例如在神经网络的推理以及训练中,所有涉及卷积的网络层,都需要进行大量的内积运算。
[0003]在神经网络的推理和训练中,常用的数据类型为浮点型,相较于定点型,浮点型数据具有较大的动态范围,可以表示的数值范围远大于定点数。现有技术中,对浮点型向量进行内积运算时,先将向量中相同位置上的浮点型元素通过浮点乘法器进行乘法操作,再将乘法结果通过浮点加法树进行分级的加法操作,最终得到计算结果。但是,每层的计算都涉及一个标准的浮点乘法或浮点加法操作,在这些操作的最后一步,都涉及舍入操作,将中间计算结果舍入标准浮点数据格式,产生较大的精度损失,造成最终的计算结果并不准确。

技术实现思路

[0004]本申请实施例提供了一种浮点型数据处理方法以及相关装置,能够保留中间计算过程的计算精度,以及移除中间加法过程中产生的前导零,提升计算结果的准确性。
[0005]本申请的一方面提供一种浮点型数据处理方法,包括:
[0006]根据模型运算指令,获取第一向量及第二向量,其中,第一向量包括K个第一子向量,每个第一子向量中包括M个第一元素,第二向量包括K个第二子向量,每个第二子向量中包括M个第二元素,第一元素与第二元素均为浮点型数据,K和M均为大于1的整数;
[0007]将K个第一子向量中的所有第一元素与K个第二子向量中的所有第二元素进行浮点乘法运算,得到K组乘法运算结果,其中,每组乘法运算结果包括M个乘法结果进位及M个乘法结果和位;
[0008]分别对K组乘法运算结果中每组乘法运算结果的M个乘法结果进位及M个乘法结果和位进行求和处理,得到K个第一和结果;
[0009]将K个第一和结果依次进行规格化移位及对阶移位,得到K个乘加运算结果;
[0010]对K个乘加运算结果进行求和处理,得到第二和结果;
[0011]对第二和结果进行规格化移位,得到模型运算结果。
[0012]本申请的另一方面提供了一种浮点型数据处理器,用于执行上述各方面的方法;
[0013]浮点型数据处理器包括:K个乘加运算单元、第一最大指数和确定单元、第一进位保存加法运算单元、第一前导零预测单元、第一加法运算单元、第一减法运算单元、第一规格化移位单元及后置数据格式处理单元,K为大于1的整数;其中,
[0014]K个乘加运算单元用于对第一向量中的K个第一子向量的所有第一元素及第二向量中的K个第二子向量中的所有第二元素进行乘加运算,生成K个乘加运算结果;
[0015]第一进位保存加法运算单元用于对K个乘加运算结果进行进位保存加法运算,生
成第一进位和第一和位;
[0016]第一前导零预测单元用于根据第一进位和第一和位进行前导零预测,生成第一前导零预测结果;
[0017]第一加法运算单元用于根据第一进位和第一和位进行加法运算,生成第一加法运算结果;
[0018]第一规格化移位单元用于根据第一前导零预测结果对第一加法运算结果进行规格化移位,对规格化移位结果取尾数,生成规格化移位结果尾数值;
[0019]第一最大指数和确定单元用于从第一向量中K个第一子向量的所有第一元素与第二向量中K个第二子向量的所有第二元素的指数和中确定最大指数和,输出第一最大指数和;
[0020]第一减法运算单元用于对第一最大指数和与第一前导零预测单元进行减法运算,对减法运算结果取指数,生成第一减法指数值;
[0021]后置数据格式处理单元用于根据第一减法指数值对规格化移位结果尾数值进行舍入操作,生成模型运算结果。
[0022]本申请的另一方面提供了一种浮点型数据处理装置,包括:
[0023]数据获取模块,用于根据模型运算指令,获取第一向量及第二向量,其中,第一向量包括K个第一子向量,每个第一子向量中包括M个第一元素,第二向量包括K个第二子向量,每个第二子向量中包括M个第二元素,第一元素与第二元素均为浮点型数据,K和M均为大于1的整数
[0024]浮点乘法运算模块,用于将K个第一子向量中的所有第一元素与K个第二子向量中的所有第二元素进行浮点乘法运算,得到K组乘法运算结果,其中,每组乘法运算结果包括M个乘法结果进位及M个乘法结果和位;
[0025]第一求和模块,用于分别对K组乘法运算结果中每组乘法运算结果的M个乘法结果进位及M个乘法结果和位进行求和处理,得到K个第一和结果;
[0026]第一移位模块,用于将K个第一和结果依次进行规格化移位及对阶移位,得到K个乘加运算结果;
[0027]第二求和模块,用于对K个乘加运算结果进行求和处理,得到第二和结果;
[0028]第二移位模块,用于对第二和结果进行规格化移位,得到模型运算结果。
[0029]在本申请实施例的另一种实现方式中,第二和结果包括第一前导零预测结果和第一加法运算结果;第二求和模块,还用于:
[0030]对K个乘加运算结果进行进位保留加法运算,生成第一进位和第一和位;
[0031]根据第一进位和第一和位进行前导零预测,生成第一前导零预测结果;
[0032]对第一进位和第一和位进行加法运算,生成第一加法运算结果。
[0033]在本申请实施例的另一种实现方式中,第二移位模块,还用于:
[0034]根据第一前导零预测结果对第一加法运算结果进行规格化移位,生成第一规格化移位结果;
[0035]对第一规格化移位结果的尾数值进行舍入操作,得到模型运算结果。
[0036]在本申请实施例的另一种实现方式中,浮点型数据处理装置,还包括最大指数和确定模块,用于:
[0037]对第一向量中的K
×
M个第一元素进行指数计算,生成K
×
M个第一指数,以及,对第二向量中的K
×
M个第二元素进行指数计算,生成K
×
M个第二指数;
[0038]将K
×
M个第一指数与K
×
M个第二指数对应相加,生成K
×
M个指数和;
[0039]从K
×
M个指数和中确定最大的指数和,作为第一最大指数和;
[0040]对第一最大指数和与第一前导零预测结果进行减法运算,生成第一减法结果;
[0041]对第一减法结果进行指数计算,生成第一减法指数值。
[0042]在本申请实施例的另一种实现方式中,第二移位模块,还用于根据第一减法指数值对第一规格化移位结果的尾数值进行舍入操作,生成模型运算结果。
[0043]在本申请实施例的另一种实现方式中,K个第一和结果中每个第一和结果包括第二前导零预测结果和第二加法运算结果;第一求和模块,还用本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种浮点型数据处理方法,其特征在于,包括:根据模型运算指令,获取第一向量及第二向量,其中,所述第一向量及所述第二向量为模型的输入数据,所述第一向量包括K个第一子向量,每个所述第一子向量中包括M个第一元素,所述第二向量包括K个第二子向量,每个所述第二子向量中包括M个第二元素,所述第一元素与所述第二元素均为浮点型数据,K和M均为大于1的整数;将所述K个第一子向量中的所有第一元素与所述K个第二子向量中的所有第二元素进行浮点乘法运算,得到K组乘法运算结果,其中,每组乘法运算结果包括M个乘法结果进位及M个乘法结果和位;分别对所述K组乘法运算结果中每组乘法运算结果的M个乘法结果进位及M个乘法结果和位进行求和处理,得到K个第一和结果;将所述K个第一和结果依次进行规格化移位及对阶移位,得到K个乘加运算结果;对所述K个乘加运算结果进行求和处理,得到第二和结果;对所述第二和结果进行规格化移位,得到模型运算结果。2.如权利要求1所述的浮点型数据处理方法,其特征在于,所述第二和结果包括第一前导零预测结果和第一加法运算结果;所述对所述K个乘加运算结果进行求和处理,得到第二和结果,包括:对所述K个乘加运算结果进行进位保留加法运算,生成第一进位和第一和位;根据所述第一进位和所述第一和位进行前导零预测,生成第一前导零预测结果;对所述第一进位和所述第一和位进行加法运算,生成第一加法运算结果。3.如权利要求2所述的浮点型数据处理方法,其特征在于,所述对所述第二和结果进行规格化移位,得到模型运算结果,包括:根据所述第一前导零预测结果对所述第一加法运算结果进行规格化移位,生成第一规格化移位结果;对所述第一规格化移位结果的尾数值进行舍入操作,得到模型运算结果。4.如权利要求3所述的浮点型数据处理方法,其特征在于,所述方法还包括:对所述第一向量中的K
×
M个第一元素进行指数计算,生成K
×
M个第一指数,以及,对所述第二向量中的K
×
M个第二元素进行指数计算,生成K
×
M个第二指数;将所述K
×
M个第一指数与所述K
×
M个第二指数对应相加,生成K
×
M个指数和;从所述K
×
M个指数和中确定最大的指数和,作为第一最大指数和;对所述第一最大指数和与所述第一前导零预测结果进行减法运算,生成第一减法结果;对所述第一减法结果进行指数计算,生成第一减法指数值。5.如权利要求4所述的浮点型数据处理方法,其特征在于,所述对所述第一规格化移位结果的尾数值进行舍入操作,得到模型运算结果,包括:根据所述第一减法指数值对所述第一规格化移位结果的尾数值进行舍入操作,生成模型运算结果。6.如权利要求1所述的浮点型数据处理方法,其特征在于,所述K个第一和结果中每个第一和结果包括第二前导零预测结果和第二加法运算结果;所述分别对所述K组乘法运算结果中每组乘法运算结果的M个乘法结果进位及M个乘法
结果和位进行求和处理,得到K个第一和结果,包括:分别对所述K组乘法运算结果中每组乘法运算结果的M个乘法结果进位及M个乘法结果和位进行进位保留加法运算,生成K组计算结果,其中,每组计算结果包括第二进位及第二和位;根据所述K组计算结果中每组计算结果的第二进位及第二和位进行前导零预测,生成K个第二前导零预测结果;对所述K组计算结果中每组计算结果的第二进位及第二和位进行加法运算,得到K个第二加法运算结果。7.如权利要求6所述的浮点型数据处理方法,其特征在于,所述将所述K个第一和结果依次进行规格化移位及对阶移位,得到K个乘加运算结果,包括:根据所述K个第二前导零预测结果对所述K个第二加法运算结果进行前导零预测,生成K个第二规格化移位结果;分别对所述K个第二规格化移位结果进行对阶移位处理,生成K个乘加运算结果。8.如权利要求1所述的浮点型数据处理方法,其特征在于,所述将所述K个第一子向量中的所有第一元素与所述K个第二子向量中的所有第二元素进行浮点乘法运算,得到K组乘法运算结果,包括:将所述K个第一子向量中的所有第一元素的尾数与所述K个第二子向量中的所有第二元素的尾数进行部分积运算,生成K组部分积,其中,每组部分积包括M个部分积计算结果;将所述K组部分积分别进行进位保存加法运算,生成K组部分积进位保存加法运算结果,其中,每组部分积进位保存加法运算结果包括M个部分积进位及M个部分积和位;将所述K个第一子向量中的所有第一元素与所述K个第二子向量中的所有第二元素进行指数运算,得到K个第一子向量中的所有第一元素的指数值及K个第二子向量中的所有第二元素的指数值;将所述K个第一子向量中的所有第一元素的指数值与所述K个第二子向量中的所有第二元素的指数值进行加法运算,生成K组第三加法运算结果,其中,每组第三加法运算结果包括M个第三加法运算结果;从所述K组第三加法运算结果确定每组第三加法运算结果中的最大值,得到K组第二最大指数和;根据所述K组第二最大指数和确定K组部分积进位保存加法运算结果对应的K组第二对阶移位数;根据所述K组第二对阶移位数对所述K组部分积进位保存加法运算结果进行对阶移位,生成K组乘法运算结果。9.一种浮点型数据处理器,其特征在于,所述浮点型数据处理器用于执行如权利要求1至8中任一项所述的浮点型数据处理方法;所述浮点型数据处理器包括:K个乘加运算单元、第一最大指数和确定单元、第一进位保存加法...

【专利技术属性】
技术研发人员:任子木
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1