[ English | Japanese ]
FFTW3インタフェース (Fortran用)
概要
FFTW3インタフェースは、FFTW version 3.xとほぼ互換のインタフェースをもつライブラリです (一部のルーチンおよび定数は未対応)。 FFTWのインクルードファイルを差し替えるだけで、FFTWを使用しているユーザプログラムから、 Vector Engine向けに高度にチューニングされたASLのフーリエ変換ルーチンを使用することができます。 オリジナルのFFTWは、FFTW公式サイト[1]で公開されているオープンソースのフーリエ変換ライブラリです。 詳細は、FFTWのドキュメント[2]を参照してください。
FFTW3インタフェースの使用方法
FFTW3インタフェースのインクルードファイルは、オリジナルのFFTWで提供されているものとファイル名が異なります。 FFTW3インタフェースを使用する場合は、以下のようにインクルードファイル名を変更してください。
Fortran 2003プログラムの場合
include "fftw3.f03" ⇒ include "aslfftw3.f03"
Fortran 77プログラムの場合
include "fftw3.f" ⇒ include "aslfftw3.f"
コンパイルとリンクには、FFTW3のコンパイル方法およびリンク方法を記載しています。
スレッドセーフ性
ASL FFTW3インタフェースは内部でASL統合インタフェースを使用しており、スレッドセーフ性はASL統合インタフェースのそれに準じます。(ASL統合インタフェースのスレッドセーフ性についてはこちらを参照下さい。)
- 逐次版および分散メモリ並列版 (つまり MPI 版)のASLライブラリをリンクした場合、ASL FFW3インタフェースのルーチンはスレッドセーフでありません。特定のスレッドがプランを生成、破棄している間に、他のスレッドがライブラリ呼び出しを行わないようにしなければなりません。この要件を満たせば、各スレッドで異なるプランが用いられている場合に限り、複数スレッドから同時にライブラリ呼び出しを行えます。
並列リージョン内の各スレッドでそのルーチンを呼び出したい場合は、1.と2.の両方を実施してください。- 各スレッドが使用するプランを並列リージョン外で生成および破棄するようにしてください。並列リージョン内ではomp_get_thread_num()が返すスレッド番号に応じて別々のプランを使い分けてください。
- 逐次版または分散メモリ並列版のASLライブラリをリンクしてください。(リンク方法についてはこちらを参照下さい。)
- 共有メモリ並列版およびハイブリッド並列版(共有メモリ並列+MPI版)のASLライブラリをリンクした場合、ASL FFW3インタフェースのルーチンは部分的にスレッドセーフであり、内部でスレッド並列化されています。プランを生成、破棄することが複数スレッドで同時にできます。
- NEC Numeric Library Collection バージョン 2.3.0以降
プランは複数のスレッド間で共用できます。ただし、FFT実行ルーチンは内部で既にスレッド並列化されていますので、プランはプログラムのマルチスレッド化された部分(例えば並列リージョン)の外で使用することを強く推奨します。 - NEC Numeric Library Collection バージョン 2.2.0以前
プランは複数のスレッドで共用しないでください。FFT実行ルーチンは内部で既にスレッド並列化されていますので、プランはプログラムのマルチスレッド化された部分(例えば並列リージョン)の外で使用することを強く推奨します。
- NEC Numeric Library Collection バージョン 2.3.0以降
FFTW3インタフェースのソースコード
FFTW3インタフェースのソースコードは、以下の圧縮ファイルに格納しています。
/opt/nec/ve/nlc/X.X.X/src/aslfftw3-Y.Y.tar.gz (X.X.XはNEC Numeric Library Collectionのバージョン番号) (Y.YはFFTW3インタフェースのバージョン番号)
BSDライセンスのもとに自由に使用することができます。
利用可能なルーチン
FFTW3インタフェースで利用可能なルーチンはFFTW3インタフェースルーチン一覧に記載しています。
注意事項 |
---|
|
FFTW3インタフェースルーチン一覧
プラン生成
逐次版 / 共有メモリ並列版 | 分散メモリ並列版 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
プラン実行
逐次版 / 共有メモリ並列版 | 分散メモリ並列版 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
プラン破棄
|
ユーティリティルーチン (共通)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ユーティリティルーチン (逐次版 / 共有メモリ並列版)
|
ユーティリティルーチン (分散メモリ並列版)
|
|
|
|
|
|
|
|
|
|
サンプルプログラム
外部リンク
バージョン情報
- 説明の対象とするAPIバージョン: 1.3
- このマニュアルページのバージョン: 2.2.0-201225