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

同カテゴリーの次の記事

FFTW3 ラッパーの使用

この記事は、インテル® 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 に格納される

関連記事

  • FFTW3 ラッパーの使用FFTW3 ラッパーの使用 この記事は、インテル® MKL リファレンス・マニュアルの項目「インテル® マス・カーネル・ライブラリーの FFTW3 インターフェイス」の一部です。 FFTW3 ラッパーは、相互に依存する関数群とデータ構造群のセットです。ラッパーは、個々の FFTW3 関数ごとにインターフェイスを提供するように設計されていません。一部の […]
  • OpenSimulator 仮想世界サーバーのケーススタディー (パート 3)OpenSimulator 仮想世界サーバーのケーススタディー (パート 3) この記事は、インテル® ソフトウェア・ネットワークに掲載されている「Virtual World Server Power Savings by Dynamic Physics […]
  • OpenSimulator 仮想世界サーバーのケーススタディー (パート 2)OpenSimulator 仮想世界サーバーのケーススタディー (パート 2) この記事は、インテル® ソフトウェア・ネットワークに掲載されている「OpenSimulator Virtual World Server Case Study (part 2)」の日本語参考訳です。 はじめに OpenSimulator (http://opensimulator.org) […]
  • インテル® MIC アーキテクチャー向けの高度な最適化 - 手動によるループアンロールの回避インテル® MIC アーキテクチャー向けの高度な最適化 - 手動によるループアンロールの回避 この記事は、インテル® ソフトウェア・サイトに掲載されている「Avoid Manual Loop Unrolling」の日本語参考訳です。 一般に、インテル® コンパイラーは、ループ構造が手動でアンロールされていない場合に効率良くベクトル化されたコードを生成することができます。コンパイラーにアンロールを任せて、"#pragma […]
  • メモリーレイアウト変換メモリーレイアウト変換 この記事は、インテル® ソフトウェア・サイトに掲載されている「Memory Layout Transformations」の日本語参考訳です。 はじめに この記事では、よく使用される構造体配列 (AoS) から配列構造体 (SoA) […]