FFTW(Fastest Fourier Transform in the West)

1.はじめに

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

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

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

3.3.7 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公式ページ
http://www.fftw.org/

FFTW3 Manual
http://www.fftw.org/fftw3_doc/

FFTW2 Tutorials
http://www.fftw.org/fftw2_doc/fftw_2.html

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

4.使用方法

(1)FFTW3モジュールの使い方

fftw3/openmpi/gcc/64/3.3.7

モジュール内容の確認

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

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.7/lib/
prepend-path LD_LIBRARY_PATH /cm/shared/apps/fftw/openmpi/gcc/64/3.3.7/lib/
prepend-path MANPATH /cm/shared/apps/fftw/openmpi/gcc/64/3.3.7/share/man/
setenv FFTWDIR /cm/shared/apps/fftw/openmpi/gcc/64/3.3.7/lib
setenv FFTWINCLUDE /cm/shared/apps/fftw/openmpi/gcc/64/3.3.7/include
setenv FFTWLIB fftw3
-------------------------------------------------------------------

モジュールの読み込み

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

C言語でFFTWライブラリを利用するソースを記載する。

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

int main( void ){

<以下省略>

IntelCompilerを利用し、C言語のソースをコンパイルする。

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

a.outを実行する

モジュールのアンロード

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

 

(2)以下FFTW2のモジュールについての紹介です。

fftw2/openmpi/gcc/64/float/2.1.5

$ 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
-------------------------------------------------------------------
$ module load fftw2/openmpi/gcc/64/float/2.1.5
$ module unload fftw2/openmpi/gcc/64/float/2.1.5

 

fftw2/openmpi/gcc/64/double/2.1.5

$ 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
-------------------------------------------------------------------
$ module load fftw2/openmpi/gcc/64/double/2.1.5
$ module unload fftw2/openmpi/gcc/64/double/2.1.5