FFTW(Fastest Fourier Transform in the West)

1. はじめに

FFTWはFastest Fourier Transform in the Westの略称です。
離散フーリエ変換(DFT)を計算するためのライブラリです。

DDBJ スパコンではmodule loadをすることで以下のバージョンが利用できます。

 

2. 使用可能なバージョン

3.3.8 environmental modulesの配下
2.1.5 environmental modulesの配下

FFTW公式ページではFFTW3以降の利用が推奨されています。
ただしFFTW3のAPIはFFTW2のものとは互換性がないためご注意ください。

利用可能なノード/キュー

login.q(AMD)
epyc.c(AMD)
intel.q(Intel)
login_gpu.q(Intel+Volta)
gpu.q(Intel+Volta)
short.q(Intel)
medium.q(Intel)

 

3. (参考)外部ドキュメント

  FFTWの詳細利用については、マニュアル等を参照してください。

  ・FFTW公式ページ

  ・FFTW3 Manual

  ・FFTW2 Tutorials

 

4. 使用方法

FFTW3モジュールの使い方

例:fftw3/openmpi/gcc/64/3.3.8の場合

(1)モジュール内容の確認

$ module show fftw3/openmpi/gcc/64/3.3.8
-------------------------------------------------------------------
/cm/shared/modulefiles/fftw3/openmpi/gcc/64/3.3.8:

module-whatis {Adds FFTW library for 64 bits to your environment}
prepend-path LD_RUN_PATH /cm/shared/apps/fftw/openmpi/gcc/64/3.3.8/lib/
prepend-path LD_LIBRARY_PATH /cm/shared/apps/fftw/openmpi/gcc/64/3.3.8/lib/
prepend-path MANPATH /cm/shared/apps/fftw/openmpi/gcc/64/3.3.8/share/man/
setenv FFTWDIR /cm/shared/apps/fftw/openmpi/gcc/64/3.3.8/lib
setenv FFTWINCLUDE /cm/shared/apps/fftw/openmpi/gcc/64/3.3.8/include
setenv FFTWLIB fftw3
-------------------------------------------------------------------

(2)モジュールの読み込み

$ module load fftw3/openmpi/gcc/64/3.3.8

(3)C言語で、FFTWライブラリを利用するソースを記載

#include <stdio.h>
#include <complex.h>
#include <fftw3.h>

int main( void ){

<以下省略>

(4)IntelCompilerを利用し、C言語のソースをコンパイル

icc XXXXX.c -I/cm/shared/apps/fftw/openmpi/gcc/64/3.3.8/include -L/cm/shared/apps/fftw/openmpi/gcc/64/3.3.8/lib -lfftw3

(5)プログラムa.outの実行

$ ./a.out

(6)モジュールのアンロード

$ module unload fftw3/openmpi/gcc/64/3.3.8

 

FFTW2モジュールについての紹介

例1:fftw2/openmpi/gcc/64/float/2.1.5の場合

(1)モジュール内容の確認

$ module show fftw2/openmpi/gcc/64/float/2.1.5
-------------------------------------------------------------------
/cm/shared/modulefiles/fftw2/openmpi/gcc/64/float/2.1.5:

module-whatis Adds FFTW library for 64 bits to your environment
prepend-path LD_RUN_PATH /cm/shared/apps/fftw/openmpi/gcc/64/2.1.5/float/lib/
prepend-path LD_LIBRARY_PATH /cm/shared/apps/fftw/openmpi/gcc/64/2.1.5/float/lib/
setenv FFTWDIR /cm/shared/apps/fftw/openmpi/gcc/64/2.1.5/float/lib
setenv FFTWINCLUDE /cm/shared/apps/fftw/openmpi/gcc/64/2.1.5/float/include
setenv FFTWLIB fftw
------------------------------------------------------------------- 

(2)モジュールのロード

$ module load fftw2/openmpi/gcc/64/float/2.1.5

(3)モジュールのアンロード

$ module unload fftw2/openmpi/gcc/64/float/2.1.5

 

例2:fftw2/openmpi/gcc/64/double/2.1.5の場合

(1)モジュール内容の確認

$ module show fftw2/openmpi/gcc/64/double/2.1.5
-------------------------------------------------------------------
/cm/shared/modulefiles/fftw2/openmpi/gcc/64/double/2.1.5:

module-whatis Adds FFTW library for 64 bits to your environment
prepend-path LD_RUN_PATH /cm/shared/apps/fftw/openmpi/gcc/64/2.1.5/double/lib/
prepend-path LD_LIBRARY_PATH /cm/shared/apps/fftw/openmpi/gcc/64/2.1.5/double/lib/
setenv FFTWDIR /cm/shared/apps/fftw/openmpi/gcc/64/2.1.5/double/lib
setenv FFTWINCLUDE /cm/shared/apps/fftw/openmpi/gcc/64/2.1.5/double/include
setenv FFTWLIB fftw
-------------------------------------------------------------------

(2)モジュールのロード

$ module load fftw2/openmpi/gcc/64/double/2.1.5

(3)モジュールのアンロード

$ module unload fftw2/openmpi/gcc/64/double/2.1.5