Tag: flops

自动获取某些代码的浮点运算计数的方法

我有一些相当复杂和高度模板化的代码(C ++,但这可能不是很相关),我想知道执行时的add,subs,muls,div和sqrts的数量。 是否有自动获取此信息的方法(编译器可以轻松解决)? 我试图在生成的汇编代码中自己计算,但是与jp , jmp和call s混淆了。

FLOPS真正的FLOP

我来自这个主题: FLOPS英特尔核心并用C(内部产品)测试它 当我开始编写简单的测试脚本时,我想到了一些问题。 为何浮点? 我们必须考虑的浮点数有多重要? 为什么不是一个简单的int? 如果我想测量FLOPS,那么就说我正在做两个向量的内积。 这两个向量必须是float []吗? 如果我使用int [],测量结果会有什么不同? 我不熟悉英特尔架构。 假设我有以下操作: float a = 3.14159; float b = 3.14158; for(int i = 0; i < 100; ++i) { a + b; } 这有多少“浮点运算”? 我有点困惑,因为我研究了简化的32位MIPS架构。 对于每个指令,有32位,如操作数1为5位,操作数2为5位等。因此对于intel架构(特别是前一个线程的相同架构),我被告知寄存器可以保持128位。 对于SINGLE PRECISION浮点,每个浮点数为32位,这对于馈送到处理器的每条指令是否意味着,它可能需要4个浮点数? 我们还不必考虑操作数和指令其他部分涉及的位吗? 我们怎样才能将4个浮点数提供给cpu而没有任何特定含义呢? 我不知道我的方法是否有点理解。 如果没有,我应该关注什么“高度”的视角?