我对测量触发器有一些误解,在英特尔架构上,是一个FLOP一个加法和一个乘法?我在网上的某处读过这篇文章,没有任何辩论可以拒绝这一点.我知道FLOP在不同类型的cpu上有不同的含义.
如何计算理论峰值FLOPS?我正在使用Intel(R)Core(TM)2 Duo CPU E7400 @ 2.80GHz.GHz和FLOPS之间究竟有什么关系?(甚至维基百科在FLOPS上的条目也没有具体说明如何做到这一点)
我将使用以下方法来测量我的计算机的实际性能(就翻牌而言):两个向量的内积:对于两个大小为N的向量,是翻牌数2n(n-1)(如果一个加法)或者一次乘法被认为是1次翻牌).如果没有,我该如何计算呢?
我知道有更好的方法可以这样做,但我想知道我提出的计算是否正确.我在某处读到LINPACK作为基准,但我仍然想知道它是如何完成的.
至于你的第二个问题,理论上的FLOPS计算并不太难.它可以粗略地分解为:
(核心数)*(执行单元/核心数)*(周期/秒)*(执行单元操作/周期)*(每个寄存器的浮点数/执行单元操作)
Core-2 Duo有2个内核,每个内核有1个执行单元.SSE寄存器为128位宽.浮点数是32位宽,因此每个寄存器可以存储4个浮点数.我假设执行单元每个周期执行1次SSE操作.所以它应该是:
2*1*2.8*1*4 = 22.4 GFLOPS
匹配:http: //www.intel.com/support/processors/sb/cs-023143.htm
这个数字显然是理论上最好的案例表现.由于各种原因,现实世界的表现很可能不会接近这一点.可能不值得尝试将flops直接关联到实际的app运行时,你最好尝试使用你的应用程序使用的计算.