算术否定算作浮点运算吗?

时间:2010-06-24 10:56:22

标签: floating-point flops

我目前正在测量FLOPS中某些代码的性能。这段代码提供了一些像这样的算术否定指令:

d = -a

其中da是浮点变量。 我目前使用的架构确实有特定的否定说明。我是否应该考虑这种操作来测量FLOPS?什么样的操作占FLOPS?是约会还是其他什么?

3 个答案:

答案 0 :(得分:2)

尝试反汇编代码并检查此操作的执行方式。

如果它使用指令FCHS(更改符号),那么您可以将其视为浮点运算。

MSVC(Visual Studio 2008)

    double c = -b;
00971397  fld         qword ptr [b] 
0097139A  fchs             
0097139C  fstp        qword ptr [c] 

fchs - 看到了吗?

答案 1 :(得分:2)

正如@Andrey所说,确保你应该检查反汇编的代码。

但总的来说,是的,指令可能会在FPU上执行。它只是翻转一下,所以也可以在一个整数单元上完成,但由于你在浮点值上操作,这些很可能已经加载到FP寄存器中,所以' d将它们移动到通用寄存器,翻转并移回它们是一个相当大的开销。

我不知道是否有一个完整的通用指南“应该算作什么FLOP”,但这很可能是在FPU上执行的指令,因此它与其他FP指令竞争资源在CPU上,所以是的,我会把它包含在FLOPS计数中。

答案 2 :(得分:1)

使用LINPACK作为一种标准基准来计算FLOPS有一种约定。