fftw-3.3.10

fftw の概要

FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data (as well as of even/odd data, i.e. the discrete cosine/sine transforms or DCT/DST).

[注記]

注記

LFS や依存パッケージが本ブックに示す最新安定バージョンでなかった場合には、BLFS 開発版においては、パッケージのビルドや処理実行が適切に行われないことがあります。

パッケージ情報

  • ダウンロード (HTTP): https://www.fftw.org/fftw-3.3.10.tar.gz

  • ダウンロード MD5 sum: 8ccbf6a5ea78a16dbc3e1306e234cc5c

  • ダウンロードサイズ: 4.0 MB

  • 必要ディスク容量: 59 MB

  • 概算ビルド時間: 1.6 SBU(テスト実施時はさらに 3.4 SBU, いずれも parallelism=4 利用時)

fftw のインストール

[注記]

注記

We build fftw three times for different libraries in different numerical precisions: the default double precision floating point, the older 32-bit (single precision) version named float which sacrifices precision for speed, and the long double which offers increased precision at the cost of slower execution.

1 回めのビルドは倍精度演算向けです。 以下のコマンドを実行して fftw をビルドします。

./configure --prefix=/usr    \
            --enable-shared  \
            --disable-static \
            --enable-threads \
            --enable-sse2    \
            --enable-avx     \
            --enable-avx2    &&
make

ビルド結果をテストする場合は make check を実行します。 32 ビットシステムにおけるテストは、64 ビットシステムに比べて処理時間が多くかかります。

root ユーザーになって以下を実行します。

make install

次に単精度演算向けをビルドします。

make clean &&

./configure --prefix=/usr    \
            --enable-shared  \
            --disable-static \
            --enable-threads \
            --enable-sse2    \
            --enable-avx     \
            --enable-avx2    \
            --enable-float   &&
make

root ユーザーになって以下を実行します。

make install

最後に倍精度演算向けをビルドします。

make clean &&

./configure --prefix=/usr    \
            --enable-shared  \
            --disable-static \
            --enable-threads \
            --enable-long-double &&
make

root ユーザーになって以下を実行します。

make install

コマンド説明

--enable-shared --disable-static: Use shared libs instead of static libs.

--enable-threads: This enables libfftw3_threads.so to be compiled. It is used by e.g. the gimp plugin from G'MIC.

--enable-{sse2,avx,avx2}: These enables building the optimized routines using SSE2, AVX, and AVX2 instructions. FFTW will check if these routines can be really used on the current CPU when the FFTW library is loaded, so a FFTW build with these routines enabled can still run on a CPU without SSE2, AVX, or AVX512. These options are not compatible with --enable-long-double.

--enable-float: This enables building the library that uses single precision floating point arithmetic. It is faster but less precise than the default double precision library. The library will be called libfftw3f.so needed by PulseAudio-16.1.

--enable-long-double: This enables building the library that uses higher precision long-double floating point arithmetic. The library will be called libfftw3l.so.

--enable-avx512: This enables building the optimized routines using AVX512F instructions. FFTW will check if these routines can be really used on the current CPU when the FFTW library is loaded, so a FFTW build with these routines enabled can still run on a CPU without AVX512F. Use this option if the FFTW build will be used on a CPU with AVX512F. This option is not compatible with --enable-long-double.

パッケージ構成

インストールプログラム: fftw-wisdom, fftw-wisdom-to-conf
インストールライブラリ: libfftw3.so, libfftw3_threads.so, libfftw3f.so, libfftw3f_threads.so, libfftw3l.so, libfftw3l_threads.so
インストールディレクトリ: なし

概略説明

fftw-wisdom

is a utility to generate FFTW wisdom files, which contain saved information about how to optimally compute (Fourier) transforms of various sizes

fftw-wisdom-to-conf

is a utility to generate C configuration routines from FFTW wisdom files, where the latter contain saved information about how to optimally compute (Fourier) transforms of various sizes

libfftw3.so

is the Fast Fourier Transform library

libfftw3_threads.so

is the threaded Fast Fourier Transform library

libfftw3f.so

is the single-precision Fast Fourier Transform library, described as float for historic reasons

libfftw3f_threads.so

is the threaded single-precision Fast Fourier Transform library

libfftw3l.so

is the long double Fast Fourier Transform library

libfftw3l_threads.so

is the threaded long double Fast Fourier Transform library