2016-12-25 77 views

回答

1

唉,没有一个标准规定了什么是浮点运算是。
这是由于不同的体系结构可能会对不同的操作集提供本地支持。
因此,例如,结构 5支持所有四种基本操作, 仅相加和 所有基本操作加幂。

一般来说,术语浮点运算是高度情境化的并且绑定到特定的机器上。

但是,您可以通过计算每种操作分别进行良好的机器独立分析。
这需要一些专业知识和巫术,例如加法和减法一起计算,因为它们基本上是硬件相同的操作。
乘法和除法分别计算,就像更复杂的运算(指数运算,三角函数等)。

最后你会有一个计数所有不同的操作。
例如由米一个Ñ×矩阵乘以×ķ一个涉及ñ·ķ·乘法和ñ·ķ·( -1)添加。所以结果是ñ·ķ· MUL + ñ·ķ·( -1)ADD。

从这个“完全信息”表达式(通常是一个很好的结果),您可以通过拾取参考机器和度量单位来近似计算“浮点运算”的数量。

例如来自Intel的SKYLAKE微架构微架构具有此,非常简化的timings table

Operation    Cycles 

Addition    0.5 
Subtraction   0.5 
Division    3 
Multiplication  0.5 

如果我们把除了作为测量单位为一个FLOP,我们可以说,除法是只要作为6个补充,所以它就像6个FLOP。

Operation    FLOPs 

Addition    1 (By definition) 
Subtraction   1 
Division    6 
Multiplication  1 

所以上面的例子中降低到ñ·ķ·(2· - 1)由于乘法和加法所有采取只有1 FLOP来完成。

这是一个简化的视图,真实的机器要复杂得多(例如Skylake有矢量单位和FMA支持,可能会改变测量单位和时间)。
无论如何,就不同种类的操作而言,表达式是独立于机器的,并且在制作特定情况时可以稍后转换为单个数字。