【技术实现步骤摘要】
用于计算点积的方法和系统
[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]因此,具有专用于在高性能计算系统、图形处理系统、神经网
【技术保护点】
【技术特征摘要】
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
’
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。