0

現在、Intel の 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の倍精度または浮動小数点のアンダーフロー数に近い値に関連して)、-120dBよりも優れた阻止帯域のフィルタを使用できます。それを試してみてください。

一部のCPUとOSの組み合わせでは、アンダーフロー浮動小数点演算または結果をオフにできる場合があります。それも役立つかもしれません。

于 2012-03-14T19:30:40.300 に答える