Fortran からのラッパーの呼び出し

インテル® oneMKL特集
この記事は、インテル® MKL リファレンス・マニュアルの項目「インテル® マス・カーネル・ライブラリーの FFTW3 インターフェイス」の一部です。

インテル® マス・カーネル・ライブラリー (インテル® MKL) は、FFTW3 ラッパーの Fortran 77 インターフェイスも提供します。すべての FFTW3 インターフェイス関数の Fortran ラッパーが用意されており、これらは FFTW3 ラッパーの C インターフェイスを基に作成されているため、対応する C インターフェイス・ラッパーと同じ機能と制限を持ちます。

Fortran ラッパーは、整数の引数にデフォルト INTEGER 型を使用します。デフォルトの INTEGER 型は、インテル® MKL の LP64 インターフェイスでは 32 ビットで、ILP64 インターフェイスでは 64 ビットです。Fortran アプリケーションにおいて、引数 planINTEGER*8 型でなければなりません。

倍精度ラッパーにはプリフィックス dfftw_ が、単精度ラッパーにはプリフィックス sfftw_ が付き、同等の機能を提供します。long double ラッパー (プリフィックスは lfftw_) はすべて空です。

Fortran FFTW3 ラッパーは、インテル® Fortran コンパイラーのデフォルトの名前修飾の規則に従います。異なる規則のコンパイラーを使用する場合や、名前修飾に影響するコンパイラー・オプション (/Qlowercase など) を使用する場合は、「独自のラッパー・ライブラリーのビルド」の説明にあるように、ソースからラッパーをビルドする必要があります。

C との互換性を保持するため、Fortran FFTW3 インターフェイスの宣言がヘッダーファイル (include/fftw/fftw3_mkl_f77.h) で提供されています。

インテル® MKL は Fortran ラッパー用の Fortran 90 モジュールを提供していませんが、Fortran ラッパーは FORTRAN 77 または Fortran 90 アプリケーションから呼び出すことができます。FFTW Fortran インターフェイスの詳細は、FFTW3 のドキュメント (www.fftw.org) を参照してください。

以下に、Fortran から FFTW3 ラッパーを呼び出す例を示します。

INTEGER*8 plan
INTEGER N
INCLUDE ‘fftw3.f’
COMPLEX*16 IN(*), OUT(*)
!…配列の初期化 IN
CALL DFFTW_PLAN_DFT_1D(PLAN, N, IN, OUT, -1, FFTW_ESTIMATE)
IF (PLAN .EQ.0) STOP
CALL DFFTW_EXECUTE
!…結果が配列 OUT に格納される

タイトルとURLをコピーしました