我目前正在使用英特尔的MKL 2D FFT例程。
我遇到了这样的情况,性能的变化是4-5倍。
我正在做的是使用FFT库实现一种带通滤波器。测试的结果是正确的,但速度是一个问题。
我看到的是,正向FFT大约是1.3秒,反向FFT大约是1.3到6秒。
我已经追踪到了在FFT的前向传递之后我正在应用的权重。权重在0到-1之间,当我得到6秒时,大部分权重都是0。如果我在应用之前将权重设置为1,则时间为1.3秒。其他测试在不使用权重1的情况下显示这种行为。
我的问题是,我所应用的价值观怎么会导致这种速度变慢?我可以理解执行时间的微小变化,但不能理解这种戏剧性的变化。
谢谢,Jim K
我不知道这是特定于FFT的MKL版本还是一般问题。
发布于 2012-03-15 03:30:40
某些CPU可能需要更多的执行周期才能使用下溢操作数或在产生下溢结果时进行浮点算术运算。
对于您的滤波器系数,您可以尝试远大于零的权重(相对于接近IEEE双精度或浮点下溢数值的值),并且仍然具有比-120 dB阻带更好的滤波器。试试看。
某些CPU和OS组合可能允许关闭下溢浮点算术或结果。这可能也会有所帮助。
https://stackoverflow.com/questions/9702779
复制相似问题