FFTW (Fastest Fourier Transform in the West) について
FFTW(Fastest Fourier Transform in the West)は、
マサチューセッツ工科大学(MIT)のマテオ・フリゴとスティーブン・ジョンソンによって開発された、高速
フーリエ変換(FFT)を計算するための
ライブラリです。オープンソースのFFT
ライブラリの中で
デファクトスタンダードとしての地位を確立しており、多くのUNIX系OSの
パッケージ管理システムでも提供されています。
特徴
高速性: 開発者は、FFTWが2006年時点で最も高速な自由ソフトウェアのFFT実装であると主張しています。ベンチマークテストでもその速度が確認されており、実数および複
素数のデータ配列をO(n log n)の計算時間で処理できます。
アルゴリズムの最適化: FFTWは、ヒューリスティックな手法を用いて、データサイズやプラットフォームに応じて最適なアルゴリズムを自動的に選択します。これにより、繰り返し同じサイズのデータに対してFFTを行う際に、常に高速な演算が期待できます。最適なアルゴリズムの選択結果はファイルに保存し、再利用することも可能です。
柔軟なインターフェース: FFTWは「guru」と呼ばれるインターフェースを備えており、これにより、メモリ上でのデータ配置を柔軟に制御できます。多次元データや複数のデータセットに対するFFTを、一度の関数呼び出しで効率的に処理できます。
並列処理: FFTWはMPI(
Message Passing Interface)を用いた「非順序変換」を部分的にサポートしています。これにより、大規模なデータに対するFFT計算を、並列計算機環境で効率的に行うことが可能です。
受賞歴: FFTWは、1999年にジェームズ・H・ウィルキンソン賞を受賞しており、その技術的な貢献が認められています。
FFTWは、
GNU General Public License v2以降、または商用
ライセンスに基づいて利用および配布できます。
ライセンスはGPLであるため、非商用利用の場合、FFTWを利用するソフトウェアもGPLで
ライセンスする必要があります。
Apache Licenseなどの非GPLオープンソースソフトウェアからFFTWを直接利用することはできません。ただし、商用
ライセンスを購入すれば、非GPLソフトウェアでも利用可能です。例えば、MATLABなどの商用ソフトウェアにはFFTWが組み込まれており、FFT計算の高速化に貢献しています。
APIと言語バインディング
FFTWのAPIはANSI Cで提供されており、
ライブラリ自体も
C言語で記述されています。また、FORTRANや
C++など、他のプログラミング言語用のインターフェースも提供されています。
FFTWのコードは`genfft`というプログラムによって生成されます。このプログラムはObjective Camlで記述されています。
名称の由来
FFTWの名称にある「West(西)」は、「東洋の秘術」のようなアセンブラを使用した高度なテクニックに頼らず、最も高速なコードを目指すという開発者の姿勢を表しています。公式サイトのFAQでは、「なぜ西なのか?MITは東部にあるのでは?」という質問に対し、「開発者(フリゴ)はイタリア出身なのでそうではない」というユーモラスな回答がされています。
まとめ
FFTWは、その高速性と柔軟性から広く利用されているFFT
ライブラリです。しかし、GPL
ライセンスのため、利用には注意が必要です。特に、非GPLのソフトウェアでFFTWを利用したい場合は、商用
ライセンスの購入を検討する必要があります。FFTWの利用を検討する際には、
ライセンス条項をよく確認することが重要です。
関連情報
FFTPACK
フーリエ変換
離散フーリエ変換 (DFT)
*
スペクトラムアナライザ