4

AtmelのAT91SAM9G20プロセッサを搭載した組み込みLinuxシステム用のC/C++ソフトウェアを開発しています。Linuxユーザースペースプログラムを使用して、固定小数点(またはおそらく浮動小数点)の計算を使用してFFTをすばやく計算する必要があります。アセンブラが実装に関してここに行く方法である可能性があり、gccコンパイラを使用してコンパイルするときに追加の-mpcuスイッチが必要になる可能性があることを理解しています。この実装を進めるための最良の方法は何ですか?また、利用可能な優れた本のリファレンスまたは最適化されたFOSSライブラリはありますか?

短いFFT長(つまり1024ポイント)を何度も適用する必要があるいくつかのアルゴリズムを実装する必要があり、一部のライブラリ(kissfftなど)も同様に機能するかどうか疑問に思います。私は長いFFTの長さにも興味があるので、以下の回答で提案されているFFTWもうまく機能します。

この質問に関連して、ARM9Linuxユーザースペースプログラムで整数除算がどのように処理されるのか疑問に思っています。2つの整数(25/4など)を除算する場合、除算はソフト浮動小数点数を使用して行われますか?また、いくつかの大量のクランチアルゴリズムを実装する必要があります。ここでは、浮動小数点演算よりも固定小数点を使用する方がよいかどうか、およびgccコンパイラが実際に処理する方法について疑問に思っています。

4

1 に答える 1

4

FFTw には CPU 固有の最適化が含まれています (コンパイル時/実行時の CPU プロファイリングも実行できます)。

バージョン 3.3.1 では、ARM Neon 拡張機能のサポートが導入されました

FAQ から:質問 4.2。なぜFFTWは速いのですか?

これは複雑な質問であり、簡単な答えはありません。実際、著者もその答えを完全には知りません。FFTW の多くの小さなパフォーマンス ハックに加えて、FFTW の速度には 3 つの一般的な理由があります。

  • FFTW は、さまざまな FFT アルゴリズムと実装スタイルを使用しており、マシンに適応するように任意に構成できます。Q4.1 `FFTW はどのように機能しますか?' を参照してください。
  • FFTW はコード ジェネレーターを使用して、小さな変換を計算するための高度に最適化されたルーチンを生成します。
  • FFTW は明示的な分割統治法を使用して、メモリ階層を利用します。
于 2012-03-26T15:17:50.733 に答える