FFTW中单精度数学比双精度慢?

时间:2013-11-22 18:11:26

标签: fft fftw ifft

我正在查看benchmarks of FFT库并想知道为什么双精度数学会比单精度数学更快(即使在32位硬件上)。

1 个答案:

答案 0 :(得分:1)

假设Intel CPU - 这完全取决于编译器。编译32位应用程序,您可以使用普通i87浮点数,其中单精度和双精度是相同的速度。或者您可以为SP选择SSE,为DP选择SSE2,其中SSE(寄存器中的4个字)是SSE2的两倍(每个寄存器2个字)。编译为64位,i87指令不可用。然后始终编译浮点以使用SSE / SSE2。由于编译器或特定程序,这些可以编译为SIMD(单指令多数据 - 一次4/2个字)或SISD(单个数据,每个寄存器使用一个字)。然后,我想,SP和DP将具有相似的速度,代码可能比32位编译慢。

使用来自RAM的数据以及可能的缓存,性能可能受到总线速度的限制,其中SP将比DP快。如果代码类似于我的FFT基准测试,则它取决于跳过顺序读取和写入。然后,速度会受到至少64字节突发读取数据的影响,其中SP可能会快一点。

例如三角函数通常在DP中计算。然后,由于DP到SP的转换,SP有点慢。