gpt4 book ai didi

hardware - 将两个一维数组相乘的快速方法

转载 作者:行者123 更新时间:2023-12-04 20:47:03 29 4
gpt4 key购买 nike

我有以下数据:

A = [a0 a1 a2 a3 a4 a5 .... a24]
B = [b0 b1 b2 b3 b4 b5 .... b24]

然后我想乘以如下:
C = A * B' = [a0b0 a1b1 a2b2 ... a24b24]

这显然涉及 25 次乘法。

但是,在我的场景中,每次“循环迭代”仅将 5 个新值移入 A(并且将 5 个旧值移出 A)。有没有什么快速的方法可以利用数据通过 A 转移而不是全新的事实?理想情况下,我想尽量减少乘法运算的次数(代价可能是更多的加法/减法/累加)。我最初认为收缩阵列可能会有所帮助,但它没有(我认为!?)

更新 1:注 B 是长期固定的,但可以重新编程。

更新2:A的移位如下:a[24] <= a[19], a[23] <= a[18]... a[1] <= new01, a[0] <=新的00。依此类推每个时钟周期

非常感谢!

最佳答案

Is there any fast way to exploit the fact that data is shifting through A rather than being completely new?



即使您所做的只是向 A 移动和添加新元素,C 中的乘积通常也会有所不同,因为其中一个操作数通常会在每次迭代后发生变化。如果您有关于 A 或 B 元素的结构方式的其他信息,您可能会使用该结构来减少乘法次数。除非有任何此类结构上的考虑,否则您必须在每个循环中计算所有 25 个乘积。

Ideally I want to minimize the number of multiplication operations (at a cost of perhaps more additions/subtractions/accumulations).



理论上,您可以通过移位和添加数组元素来模拟乘法,从而将乘法次数减少到 0。在实践中,这将比硬件乘法慢,因此您最好只使用任何可用的基于硬件的乘法,除非有一些您没有提到的额外的相关约束。

关于hardware - 将两个一维数组相乘的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15953286/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com