トップページ -> 情報工学,情報スキルの教材 -> Windows で開発環境やツールを整備 -> Windows で FFTW3 をビルドとインストール(Windows 上の Cygwin を使用)
[サイトマップへ]  

Windows で FFTW3 をビルドとインストール(Windows 上の Cygwin を使用)

FFTW とは, 離散フーリエ変換 (DFT) を行う C のプログラム集.1次元に限らず,より高次元でも動きます. この Web ページでは,Windows での FFTW バージョン 3 (FFTW3)インストール法図解で説明します.

Linux での FFTW3 のビルドとインストールについては, 別のWebページで説明します.


前準備

前もってインストールしておくべきソフトウエア

前もって調べておく事項


FFTW3 のコンパイルに必要なソフトウエア等を Cygwin のパッケージを使ってインストール

Cygwin のセットアッププログラム setup.exe を使って, FFTW バージョン 3 (FFTW3) をソースプログラムからコンパイルするのに必要となる他のソフトウエアをインストールします.簡単にインストールできます.

  1. セットアッププログラムの開始

  2. パッケージ選択画面 (Select Packages)」(下図)まで進む

  3. パッケージ選択画面で,パッケージを選ぶ

    下記のパッケージを選ぶ.

    「keep」になっている場合には,インストール済みなので,keep のままでよい.

  4. FFTW3 のソースコードパッケージ が欲しいので,Math/libfftw3-devel「Src」にチェックする

    下の図のようにチェック

    ※ Cygwin に慣れている人は,Cygwin のミラーサイトから,直接ソースコード(とパッチファイル)をダウンロードすることにも慣れているでしょう.その手順でも,もちろんよい.

  5. インストールの開始

  6. インストール完了の確認

fftw3 のソースコードの準備

  1. Cygwin のコンソールを起動

    以下の操作は,Cygwin のコンソールで行う.

  2. ソースコードの展開
    cd /tmp
    tar -xvzof /usr/src/fftw-3.2.2.tar.gz
    

    ※ ファイルが無いよ,というときは,Cygwin のセットアッププログラムの実行のときに, Math/libfftw3-devel の「Src」のチェックを忘れていたということなので, もう一度,Cygwin のセットアッププログラムの実行を繰り返す.

  3. パッチ
    cd /tmp
    patch -p1 < /usr/src/fftw3-3.2-1.src.patch
    patch -p1 < /usr/src/fftw3-3.2-1.cygwin.patch
    


FFTW のビルドとインストール

  1. configure の実行

    Cygwin のコンソール で次の操作を行う.

    cd /tmp
    cd fftw-3.2.2
    CC="gcc-4 -m32 -mthreads -O3 -fno-tree-vectorize " F77="gfortran-4 m32 -mthreads -O3 -fno-tree-vectorize" CXX="g++-4 -m32 -mthreads -O3 -fno-tree-vectorize" CPP=cpp-4 ./configure --prefix=/usr --enable-threads --enable-shared --disable-static --with-windows-f77-mangling
    

    <要点>

  2. configure コマンドの結果の確認

    必ず,エラーメッセージが出ていないことを確認する.

  3. make の実行

    Cygwin のコンソール で次の操作を行う.

    make
    

  4. make の結果の確認

    必ず,エラーメッセージが出ていないことを確認する.

  5. make check の実行

    「make check」を使うと,チェック用プログラムが動き,自動的にチェックしてくれます.

    make check

  6. make check の結果の確認

  7. make install の実行
    make install
    

  8. make install の結果の確認

    エラーメッセージが出ていないことを確認しておく.


性能測定の例

■ 目的

Cygwin のパッケージにある FFTW3 と,上で苦労してビルドした FFTW3 の比較.

■ ハードウエアとソフトウエア

■ 性能測定に使ったプログラム

x = rand(1,2^24);
length(x)
tic(); fft(x); toc()

■ お断り

本来,性能値は,マシンの種類.ソフトウエアのバージョン,コンパイル時のオプションなどで大きく変わる値です. ここで示す性能値は,他のプロセスをとめるなどしていません. あくまでも「参考値」ということでご理解ください.ここの性能値を鵜呑みにしないで下さい.

■ 実測値の例


Cygwin のパッケージにある FFTW3


この Web ページの手順でビルドした FFTW3

結論:「この Web ページの手順でビルドした FFTW3」の方が遅い,ということにはなっていないので,とりあえず安心. 性能差があるようにも見えるが,他のプロセスをとめるなどしていないし,一種の「誤差」である可能性が高い,

上記の簡単なプログラムで見る限りは,Cygwin で,FFTW3 の最新バージョンを追いかけたい(Cygwin のパッケージ化を待っていられない)というようなときには, この Web ページの手順が役立つかも知れない, あるいは,UNIX (Linux など)で FFTW3 をビルドしたいというときにも, この Web ページの手順が役立つかも知れない,と考えても妥当であろう.