【发布时间】:2016-09-27 08:06:18
【问题描述】:
忽略所有其他问题,例如内存传输等。
我正在寻找一些“成本”的衡量标准,我想我会将其量化为预期的位翻转次数,用于将两个随机浮点数(比如 32 位)相乘与相加的成本。
我想可能存在一些值得考虑的重要问题(例如数字是否具有相同的指数等)。
编辑:澄清一下,我对执行这些操作所需的能量感兴趣,而不是硬件的时间或数量,这就是为什么我认为“预期的位翻转次数”是感兴趣的数量。我认为这是一个定义明确的问题,给定算法肯定需要一些“预期的位翻转次数”来执行浮点乘法……而且我正在寻找所有算法的最小值。
编辑 2:感谢大家的回复。我得到的最相关的回复来自 njuffa,他引用了Mark Horowitz's estimates(参见第 33 页)。 Horowitz 的 more up-to-date paper 发布的数字略有不同,即:
Float32 Mult: 3.7pJ.
Float32 Add: 0.9pJ
Int32 Mult: 3.1pJ
Int32 Add: 0.1pJ
【问题讨论】:
-
我认为您需要更具体 - 例如,硬件 ALU 实现与“无限”硅资源的渐近复杂性。您可以查找有关如何在 FPGA 上实现浮点的资源。这可能是一个很好的起点。但就目前而言,这个问题的范围可能有点过于宽泛。
-
我知道如果人们正在查看时间/空间复杂度,这些会有什么影响,但我会假设,如果只是测量执行算法所需的位翻转量,那么存在有明确的数字。
-
加法与乘法的相对能耗取决于操作数的位宽。对于 32 位浮点运算,斯坦福大学的 Mark Horowitzgives numbers 加法需要 0.9 pJ,而乘法需要 4 pJ(在现在已经过时的 45 nm 工艺上,但我相信现代 14 nm 工艺仍然存在一般关系)。
-
您可能还想考虑到许多现代浮点处理单元都专注于融合乘加 (FMA) 单元,而不是单独的浮点加法器和乘法器。由于在添加之前保留了完整的(未舍入,未截断)乘积,这为节能设计带来了新的挑战。
-
啊,谢谢。对于那个信息。我真的对基本限制更感兴趣,而不是它如何在通用处理器上实现。
标签: floating-point complexity-theory multiplication