用于计算点积的方法和系统技术方案

技术编号:38543299 阅读:12 留言:0更新日期:2023-08-22 20:54
本申请涉及用于计算点积的方法和系统。公开了一种执行

【技术实现步骤摘要】
用于计算点积的方法和系统


[0001]本申请涉及用于计算点积的方法和系统。

技术介绍

[0002]大多数计算系统使用数字格式,通常以二进制或基数2进行各种计算。这些数字格式包括定点数格式或浮点数格式。定点数格式可以提供附加的精度,但仅用于表示有限范围的值。因此,大多数现代计算系统都使用浮点数格式来提供范围和精度之间的权衡。
[0003]浮点数包括具有

b

位的位长度的尾数(m)、具有

a

位的位长度的指数(e)和可选的符号位(s)以表示二进制数。在一些广泛使用的格式中,指数被偏置(即,偏移)值(c)以表示小于1的数,并且用于对在其端点处的异常值进行编码。对于e,的非极值,浮点数x被称为归一化的,并且数x被表示为(

1)
s2e

c
(1+2

b
m)。因此,浮点数可用于精确地使用科学记数法,以二进制或某个其他基数来表示非常小或非常大的数。在算术计算中使用浮点数提供不同程度的精度,具体取决于所使用的浮点格式的位长度或类型。
[0004]涉及较大实值数组的卷积/点积的计算通常出现在各种数值问题的解决方案中。大数组或者两组数(a0,a1,a2…
a
k
‑1)和(b0,b1,b2…
b
k
‑1)的点积被定义为:
[0005][0006]因此,具有专用于在高性能计算系统、图形处理系统、神经网络加速器等中执行点积的硬件是有利的。传统上,存在不同的方法来实现这一点,不同的方法具有不同的优点和缺点。
[0007]计算系统中进行两个浮点数组/两组浮点数的点积的一种已知方法是通过使用单独的浮点乘法和浮点加法。图1中示出了使用此原理的点积单元100。点积单元100包括一组浮点乘法单元102a、102b、102c和102d,以及一组浮点加法器单元104a、104b和104c。点积单元100被实现为浮点乘法单元和加法单元的树。点积单元100接收第一组浮点数(a1、a2、a3和a4)和第二组浮点数(b1、b2、b3和b4)作为输入。考虑第一组浮点数a
i
中的每个数包括尾数ma
i
和指数ea
i
。类似地,第二组浮点数b
i
中的每个数包括尾数mb
i
和指数eb
i
。第一组浮点数中的每个浮点数a
i
作为第一输入被提供给浮点乘法单元102a、102b、102c和102d中的相应一者。第二组浮点数中的每个浮点数b
i
作为第二输入被提供给浮点乘法单元102a、102b、102c和102d中的相应一者。每个浮点乘法单元102a、102b、102c和102d执行浮点数a
i
和b
i
的乘法,以获得乘积c
i
。一旦获得来自每个乘法单元102a、102b、102c和102d的乘积c
i
,结果(浮点数)便由一系列加法器以任何动态或静态选择的次序累加以获得输出。因此,加法器可以以任何次序进行布置。在一个示例中,如图1中所描绘,来自两个连续浮点乘法单元102a和102b的乘积c1和c2被提供给第一浮点加法器单元104a,以将乘积(c1和c2)相加。类似地,来自接下来的两个连续浮点乘法单元102c和102d的乘积c3和c4被提供给第二浮点加法器单元104b,以将乘积(c3和c4)相加。此外,累加值还作为输入被提供给第三浮点加法器104c进行累加,以获得输出y。来自每个步骤中的乘法器或加法器的输出都被舍入,这导致在每个步骤所生成的输出中出现舍入误差。舍入误差是浮动点计算的特征。
[0008]计算系统中进行两个浮点数组/两组浮点数的点积的另一种已知方法是通过使用融合式乘法和加法运算。图2中示出了使用此原理的点积单元200。点积单元200包括一组融合式乘法和加法(FMA)单元202a、202b、202c和202d。FMA单元利用单次舍入在单个步骤中执行浮点乘法和加法。因此,FMA提高了涉及乘积累加的点积计算的速度和准确度。在图2中,一个融合式乘加单元的结果作为输入被提供给另一融合式乘加单元,使得两个数的乘积被添加到接下来的两个数的乘积。点积单元200接收两组浮点数a
i
和b
i
作为输入。第一组浮点数中的每个浮点数a
i
作为第一输入被提供给FMA单元202a、202b、202c和202d中的相应一者。第二组浮点数中的每个浮点数b
i
作为第二输入被提供给FMA单元202a、202b、202c和202d中的相应一者。每个FMA202a、202b和202c计算数a
i
和b
i
的乘积,并且利用单次舍入将该乘积与前一FMA的结果相加(注意,在FMA 202d的情况下,不存在

前一

FMA,因为FMA202d处于树的顶部,并且因此加法运算简单地将乘法运算的结果加为零)。例如,如图2中所描绘,FMA 202d接收数a4和b4作为被乘数输入。此外,提供0输入作为第三输入。FMA 202d将a4与b4相乘,并且将结果与0相加,以获得输出d4。此外,FMA 202c接收数a3和b3作为被乘数输入,并且接收d4作为第三输入。FMA 202c将a3与b3相乘,并且将结果与d4相加,以获得输出d3。类似地,FMA 202b通过将a2与b2相乘并且将结果与d3相加来获得输出d3。此外,FMA 202a通过将a1与b1相乘并且将结果与d2相加来获得最终输出y=d1。
[0009]因此,来自两组浮点数的浮点数对a
i
与b
i
相乘在一起,并且被添加到先前计算的输出,以生成新的或累积的输出。换句话说,总和作为数的乘法和加法的序列来执行。在将数组中的所有浮点数相乘并相加之后生成的最终输出(y)被提供为输出。
[0010]上述方法中的任一种方法都可以通过使用单元的并行或顺序组合来迭代地循环通过相同的单元或同时实现。无论使用第一点积单元100还是200,都不能保证输出的精度,因为归因于中间舍入运算,不同的输入次序可能产生不同的结果。此外,归因于关键路径中逻辑门的数量,引入了高延迟。
[0011]因此,用于处理浮点数的现有方法和架构中存在缺点。

技术实现思路

[0012]提供本
技术实现思路
是为了以简化形式介绍下文在具体实施方式中进一步描述的一系列概念。本
技术实现思路
不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用以限制所要求保护的主题的范围。
[0013]公开了一种执行

2k

个浮点数的数组的点积的方法,该数组包括两组k个浮点数a
i
和b
i
。该方法包括接收两组

k...

【技术保护点】

【技术特征摘要】
1.一种使用硬件实现来执行

2k

个浮点数的数组的点积的方法,k≥3,所述数组包括第一组k个浮点数a0、a1...、a
k
‑1和第二组k个浮点数b0、b1...、b
k
‑1,其中所述方法包括:接收两组

k

个浮点数;将每个浮点数a
i
乘以浮点数b
i
以生成k个乘积数(z
i
),每个乘积数(z
i
)具有

r+log(k

1)+1

位的尾数位长度;基于所述k个乘积数(z
i
)来创建一组

k

个数(y
i
),所述数(y
i
)具有通过将至少额外的最高有效位添加到所述乘积数(z
i
)的所述位长度所获得的

n

位的位长度,其中所述

n

位包括多个量值位,其中

n

是位,其中x是整数,并且x≥1;识别k个指数和(eab
i
)当中的最大指数和(e
max
),每个指数和是所述浮点数a
i
和所述浮点数b
i
的指数和;基于所述最大指数和(e
max
)来对准所述数(y
i
)的所述量值位;以及同时将所述一组

k

个数相加。2.如权利要求1所述的方法,其中所述第一组k个浮点数a0、a1...、a
k
‑1中的每个数包括尾数(ma
i
)和指数(ea
i
),并且所述第二组k个浮点数b0、b1...、b
k
‑1中的每个数包括尾数(mb
i
)和指数(eb
i
),其中每个尾数(ma
i
)具有

p

位的位长度,并且每个尾数(mb
i
)具有

q

位的位长度。3.如权利要求2所述的方法,其中将每个浮点数a
i
乘以对应浮点数b
i
包括将尾数(ma
i
)与尾数(mb
i
)相乘,以获得中间尾数乘积(mab
i
)。4.如权利要求1至3所述的方法,其中通过将

r

位的值设置为

r=P+1

log(k

1)

位,执行点积的所述方法模拟使用单独的乘法和加法单元获得的精度,以用于执行具有P位的输出尾数位长度的点积。5.如权利要求3所述的方法,其中生成具有

r+log(k

1)+1

位的所述尾数位长度的k个乘积数(z
i
)包括:如果p+q+2>r+log(k

1)+1位,则将所述中间尾数乘积(mab
i
)的所述位舍入到r+log(k

1)+1位;或者如果p+q+2<r+log(k

1)+1位,则将额外的最低有效位填充到所述中间尾数乘积(mab
i
)的所述位长度,以生成r+log(k

1)+1位。6.如任一前述权利要求所述的方法,其中识别最大指数和(e
max
)包括识别k个指数和(eab
i
)当中的最大值,其中k个指数和(eab
i
)通过对指数(ea
i
)和指数(eb
i
)求和而获得。7.如任一前述权利要求所述的方法,其中将额外的最高有效位添加到所述乘积数(z
i
)的所述位长度

r+log(k

1)+1

包括添加至少数量个所述最高有效位。8.如任一前述权利要求所述的方法,其中将至少额外的最高有效位添加到所述乘积数(zi)的所述位长度还包括将一个或多个最低有效位添加到所述乘积数(z
i
)的所述位长度。9.如任一前述权利要求所述的方法,其中所述方法还包括:通过处理

k

个数(y
i
)来计算输出值;重新归一化所述输出值;以及对所述输出值进行舍入以将所述输出值表示为浮点数。10.如任一前述权利要求所述的方法,其中将所述数(y
i
)的所述量值位对准为基于所述
最大指数(e
max
)包括以下步骤:对于每个浮点数(i):计算所述最大指数和(e
max
)与每个指数和(eab
i
)之间的差(e
d
);以及基于所计算的差(e
d
),将所述对应数(y
i
)的所述量值位移位到LSB侧。11.一种用于执行

2k

个浮点数的数组的点积的硬件实现,k≥3,所述数组包括第一组k个浮点数a0、a1...、a
k
‑1和第二组k个浮点数b0、b1...、b
k
‑1,其中所述硬件实现包括:乘法单元,其包括多个乘法器,所述多个乘法器被配置成:接收两组

k

个浮点数;将每个浮点数a
i
乘以浮点数b
i
以生成k个乘积数(z
i
),每个乘积数(z
i
)具有

r+log(k

1)+1

【专利技术属性】
技术研发人员:T
申请(专利权)人:想象技术有限公司
类型:发明
国别省市:

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

1