0

我目前正在使用英特尔的 MKL 2D FFT 例程。

我遇到了性能变化 4-5 倍的情况。

我正在做的是使用 FFT 库实现一种带通滤波器。测试结果是正确的,但速度是个问题。

我看到的是正向 FFT 大约 1.3 秒,反向 FFT 大约 1.3 到 6 秒。

我已经将此追踪到我在 FFT 前向传递后应用的权重。权重在 0 到 -1 之间,当我得到 6 秒时,大部分为 0。如果我在应用之前将权重设置为 1,则时间为 1.3 秒。其他测试在不使用权重 1 的情况下显示了这种行为。

我的问题是我应用的价值观如何导致这种放缓?我可以理解执行时间的微小变化,但不能理解这种戏剧性的变化。

谢谢,吉姆K

我不知道这是特定于 FFT 的 MKL 版本还是一般问题。

4

1 回答 1

0

某些 CPU 可能需要更多的执行周期来使用下溢操作数或在产生下溢结果时执行浮点算术运算。

对于您的滤波器系数,您可以尝试远大于零的权重(相对于 IEEE 双倍或浮点下溢数附近的值),并且仍然有一个阻带优于 -120 dB 的滤波器。试试看。

某些 CPU 和操作系统组合可能允许关闭下溢浮点运算或结果。这也可能有所帮助。

于 2012-03-14T19:30:40.300 回答