当前位置: 首页 > 专利查询>卡雷公司专利>正文

具有正确舍入的浮点点积运算器制造技术

技术编号:26845063 阅读:30 留言:0更新日期:2020-12-25 13:06
本发明专利技术涉及一种用于点积计算的硬件运算器,包括多个乘法器(10),每个乘法器接收以第一精度格式(fp16)编码的浮点数格式的两个被乘数(a,b);与每个乘法器相关联的对准电路(12),被配置为基于相应被乘数的指数,将乘法的结果转换成具有足够位数(80)以覆盖乘法的整个动态范围的相应固定点数;以及多加法器(30),被配置为将乘法器提供的固定点数无损失地相加,提供固定点数的格式的和。

【技术实现步骤摘要】
具有正确舍入的浮点点积运算器
本专利技术涉及用于在处理器内核中处理浮点数的硬件运算器,并且更具体地说,涉及用于基于通常被称为FMA的融合乘加运算器(FusedMultiply-Addoperator)来计算点积的运算器。
技术介绍
人工智能技术,尤其是深度学习,在大型矩阵的乘法方面要求特别高,其中大型矩阵可以有数百行和数百列。因此,专门从事混合精度矩阵乘法的硬件加速器正在出现。大矩阵的乘法通常以块实施,即通过将矩阵分解成大小适合于计算资源的子矩阵。加速器因此被设计来有效地计算这些子矩阵的乘积。这种加速器包括能够在一个指令周期中计算表示子矩阵的行和列的向量的点积并将相应部分结果加到先前周期中累积(accumulate)的部分结果的运算器。经过多个周期后,部分结果的累积是表示完整矩阵的一行和一列的向量的点积。这种运算器利用了FMA技术。图1示意性地示出了传统的FMA运算器。运算器通常采用三个二进制浮点操作数,即两个乘法操作数(即被乘数a和b)以及加法操作数c。它计算项ab+c以在指定为ACC的寄存器中产生结果s。之所以这样指定寄存器,是因为它通常用于在数个周期内累积数个乘积,并在下一个周期内将寄存器的输出作为加法操作数c重新使用,如虚线所示。在[″ModifiedFusedMultiplyandAddforExactLowPrecisionProductAccumulation″,NicolasBrunie,IEEE24thSymposiumonComputerArithmetic(ARITH),July2017]的文章中,根据IEEE-754标准,被乘数a和b是半精度浮点格式,也称为“二进制16”或“fp16”。“fp16”格式的数具有一个符号位、5位指数和10+1位尾数(包括以指数编码的隐式位)。ACC寄存器旨在以定点格式容纳乘积ab的全部动态范围。对于“fp16”格式的被乘数,80位寄存器(加上可能几个溢出位)就足够了,固定点位于寄存器的位置49。加法操作数c的格式与ACC寄存器的内容相同。只要寄存器不溢出,这种结构就有可能获得每个运算ab+c的精确结果,并一个周期接一个周期地保持精确累积结果,从而避免在将相反符号但绝对值接近的数进行相加之后的舍入误差和精度损失。上述文章还提出,在混合精度FMA配置中,在累积阶段结束时,将寄存器的内容转换成更高精度的格式,例如“二进制32”。然而,这样转换的数并没有涵盖“二进制32”格式的全部动态范围,因为乘积ab的指数只定义为6位而不是8位。图2示意性地示出了将FMA结构应用于累积点积运算器,例如在美国专利申请2018/0321938中描述的。四对被乘数(a1,b1)、(a2,b2)、(a3,b3)和(a4,b4)被提供给相应乘法器。四个结果乘积p1至p4(称为部分乘积)和一个加法操作数c由加法器树同时相加。被乘数和加法操作数都是相同的浮点格式。加法的结果被归一化和舍入,以转换成初始浮点格式,使得它可以被重新用作操作数c。为了将部分乘积和加法操作数相加,比较这些项的指数,以使这些项的尾数彼此对准。只有对应于最高指数的有效位窗口被保留用于加法和舍入,窗口对应于加法器的大小。结果,较低指数项的尾数被截断,或者一起被消除,当两个较大指数的部分乘积相互抵消时,产生较大的误差。上述专利申请没有提到加法器的任何特定大小。在部分乘积相加的同一背景下,尼古拉斯·布鲁尼(NicolasBrunie)2014年题为“Contributionstocomputerarithmeticandapplicationstoembeddedsystems”的论文提出了一种加法器,其大小等于部分乘积尾数大小的两倍加上两位的溢出余量,即二进制32格式的被乘数为98位。在同一上下文中,专利US8615542,为了增加四个部分乘积,提供了仅等于被乘数的尾数大小的加法器大小,即二进制32格式的被乘数为24位。
技术实现思路
通常提供一种融合乘加硬件运算器,包括:乘法器,接收作为以第一精度格式编码的浮点数的两个被乘数;与乘法器相关联的对准电路,被配置为基于被乘数的指数,将乘法结果转换成具有足够位数以覆盖乘法的整个动态范围的第一固定点数;以及加法器,被配置为将第一固定点数和加法操作数相加。加法操作数是以具有比第一精度格式更高精度的第二精度格式编码的浮点数,并且运算器包括与加法操作数相关联的对准电路,被配置为基于加法操作数的指数,将加法操作数转换成相对于加法操作数的动态范围的减小的动态范围的第二固定点数,第二固定点数的位数等于第一固定点数的位数在两侧扩展至少加法操作数的尾数的大小;并且加法器被配置为无损失地将第一和第二固定点数相加。运算器还可以包括舍入和归一化电路,被配置为将加法器结果转换成第二精度格式的浮点数,从加法器结果的最高有效位获取尾数,从加法器结果的剩余位计算舍入,以及从加法器结果中最高有效位的位置确定指数。第二固定点数可以向右扩展至少等于加法操作数的尾数大小的位数;并且舍入电路可以使用第二固定点数的扩展位来计算舍入。运算器可以被配置为当加法操作数的指数超过第二固定点数的容量时,作为结果提供加法操作数。一种二进制数的融合乘法和加法的相关方法,包括以下步骤:将以第一精度格式编码的两个浮点被乘数的尾数相乘;将乘法结果转换成具有足够位数以覆盖乘法结果的整个动态范围的第一固定点数;以及将第一固定点数和加法操作数相加。加法操作数是以具有比第一精度格式更高精度的第二精度格式编码的浮点数,并且该方法还包括以下步骤:将加法操作数转换成具有相对于加法操作数的动态范围的减小的动态范围的第二固定点数,第二固定点数的位数等于第一固定点数的位数在任一侧扩展至少加法操作数的尾数的大小;并且无损失地将第一和第二固定点数相加。另一方面,通常提供一种用于点积计算的硬件运算器,包括多个乘法器,每个乘法器接收以第一精度格式编码的浮点数格式的两个被乘数;与每个乘法器相关联的对准电路,被配置为基于相应被乘数的指数,将乘法的结果转换成具有足够位数以覆盖乘法的整个动态范围的相应固定点数;以及多加法器,被配置为无损失地将由乘法器提供的固定点数相加,提供固定点数的格式的和。该运算器还可以包括:以具有比第一精度格式更高精度的第二精度格式编码的浮点加法操作数的输入;与加法操作数相关联的对准电路,被配置为基于加法操作数的指数,将加法操作数转换成相对于加法操作数的动态范围的减小的动态范围的固定点数,该固定点数的位数等于定点和的位数在任一侧扩展至少加法操作数的尾数的大小;以及加法器,被配置为无损失地将定点和与减小的动态范围的固定点数相加。运算器还可以包括舍入和归一化电路,被配置为将加法器结果转换成以第二精度格式编码的浮点数,从加法器结果的最高有效位获取尾数,从加法器结果的剩余位计算舍入,以及从加法器结果中最高有效位的位置确定指数。减小的动态范围的固定点数可以向右扩展至少等于加法操作数的尾数大小的位数;并且舍入电路可以使用减小的动态范围的固定点数的扩本文档来自技高网
...

【技术保护点】
1.一种用于点积计算的硬件运算器,包括:/n·多个乘法器,每个乘法器接收以第一精度格式编码的浮点数格式的两个被乘数;/n·与每个乘法器相关联的对准电路,被配置为基于相应被乘数的指数,将乘法的结果转换成具有足够位数以覆盖乘法的整个动态范围的相应固定点数;和/n·多加法器,被配置为无损失地将乘法器提供的固定点数相加,提供固定点数的格式的和。/n

【技术特征摘要】
20190625 FR 19068871.一种用于点积计算的硬件运算器,包括:
·多个乘法器,每个乘法器接收以第一精度格式编码的浮点数格式的两个被乘数;
·与每个乘法器相关联的对准电路,被配置为基于相应被乘数的指数,将乘法的结果转换成具有足够位数以覆盖乘法的整个动态范围的相应固定点数;和
·多加法器,被配置为无损失地将乘法器提供的固定点数相加,提供固定点数的格式的和。


2.根据权利要求1所述的运算器,还包括:
·以具有比第一精度格式更高精度的第二精度格式编码的浮点加法操作数的输入;
·与加法操作数相关联的对准电路,被配置为基于加法操作数的指数,将加法操作数转换成相对于加法操作数的动态范围的减小的动态范围的固定点数,该固定点数的位数等于定点和的位数在任一侧扩展至少加法操作数的尾数的大小;和
·加法器,被配置为无损失地将定点和与减小的动态范围的固定点数相加。


3.根据权利要求2所述的运算器,包括舍入和归一化电路,被配置为将加法器结果转换成以第二精度格式编码的浮点数,从加法器结果的最高有效位取得尾数,从加法器结果的剩余位计算舍入,以及从加法器结果中最高有效位的位...

【专利技术属性】
技术研发人员:N布鲁尼
申请(专利权)人:卡雷公司
类型:发明
国别省市:法国;FR

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

1