首页 > 解决方案 > 一个计算如何从经过的时间计算 FLOPS?

问题描述

这篇关于英特尔 MKL DFT 使用的教程可以看出,Andrey E. Vladimirov 博士使用任务期间经过的时间,即t1-t0使用GF/s = HztoPerf/(t1-t0)where计算 GigaFLOPS 的数量HztoPerf = 5.0 * 1e-9 * double(fft_size) * log2(double(fft_size)) * double(num_fft)

这是一个通用公式吗?如果不是,如果我知道运行计算所用的时间(例如涉及各种 FFT),我如何推断我的 CPU(Intel Xeon E5-1660,3 GHz,8 核)的平均 GF/s?

标签: performancecpuintelflops

解决方案


您必须知道您的问题需要多少次 FP 操作。然后你按时间划分。

1e-9占 Giga = 10^9 公制前缀。没有它,如果您将浮点运算计数除以秒,您将获得 FLOP/s 而不是 GFLOP/s。

5.0 * fft_size * log2(fft_size)似乎是每个 FFT 的 FP 操作数。

一个有效的 FFT 是 O(n log2(n)),显然这个实现有一个常数因子 5。(或者可能包括使用结果完成的一些工作?)

num_fft大概是完成的该大小的 FFT 的总数,即重复计数。所以所有这些的乘积就是在计算 FFT 期间实际完成的 FP 操作数。


推荐阅读