测量算法时,如果有除法操作,如何计算FOP的总数和浮点性能?如何计算特殊操作(exp sin sqrt)的FOP总数和浮点性能?
例如,n2矩阵乘法,计算n3 * 2flops(乘法,加法),假设使用相同的数据集n2,我们将矩阵乘法的乘法运算改为除法运算,如何计算无人问津。矩阵乘法的结果是否相同?
测量算法时,如果有除法操作,如何计算FOP的总数和浮点性能?如何计算特殊操作(exp sin sqrt)的FOP总数和浮点性能?
例如,n2矩阵乘法,计算n3 * 2flops(乘法,加法),假设使用相同的数据集n2,我们将矩阵乘法的乘法运算改为除法运算,如何计算无人问津。矩阵乘法的结果是否相同?
唉,没有一个标准规定了什么是浮点运算是。
这是由于不同的体系结构可能会对不同的操作集提供本地支持。
因此,例如,结构甲 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支持,可能会改变测量单位和时间)。
无论如何,就不同种类的操作而言,表达式是独立于机器的,并且在制作特定情况时可以稍后转换为单个数字。